2009-09-10 20 views
6

Szkoła wróciła do sesji i znalazłem się ze stratą. Pod koniec ostatniego semestru mieliśmy projekt grupowy wykorzystujący subversion (grupę 4 osób), aby dokonać commitów i uzyskać je kompletne. Zauważyłem też, jak łatwo było mieć dostęp do centralnego punktu dla mojej pracy domowej. Chcę wykorzystać SVN lub Git (ostatnio wprowadzone do git) i mam problem.Kontrola wersji dla zadań domowych

Jaki jest najlepszy sposób organizacji SVN dla wielu zadań domowych dla wielu klas komputerów.

Mam 2 klasy programistyczne, które zdecydowanie chcę śledzić. Z numerem co najmniej z 1 zadania tygodniowo, czyli 32 zadania do zarządzania ponad 2 klasami. Czy powinienem przechowywać je wszystkie w jednym repozytorium i po prostu etykietować 1 Java i 1 C++?

Z góry dziękuję.

Edycja: Powinienem wspomnieć, że mam roczny hosting, który pozwala zarówno git jak i subversion za pośrednictwem WebDAV. W ten sposób uzyskałem dostęp do svn repo na mój projekt w zeszłym roku. Mam możliwość zablokowania mojej pracy domowej z dala od widoku publicznego za pomocą tego narzędzia, dla tych, którzy nie są zaznajomieni z tą konfiguracją.

+1

Git jest trudniejszy do nauczenia, ale gdy podejmiesz wysiłek, aby go nauczyć, prawdopodobnie nigdy nie będziesz chciał wracać. – Jacob

Odpowiedz

7

Mówienie dla SVN -
Jedno repozytorium z wieloma projektami jest normalne.

Można łatwo skonfigurować samodzielny serwer SVN (bez konieczności posiadania serwera WWW) na komputerze

Można również spojrzeć na korzystania z repozytorium svn oparte plików na kluczu USB dla uproszczenia między domem a szkołą. Jest to ograniczone tylko do jednego użytkownika uzyskującego dostęp do plików, ale oznacza, że ​​nie potrzebujesz niczego więcej niż klient SVN (lub TortoiseSVN)

ps. Nauka korzystania z SCC to jedna z najważniejszych rzeczy, których nie uczą w szkole.

+0

+1 za pomysł na pendrive + avatar xkcd – bobby

+0

Jedno repozytorium z wieloma projektami może być normalne dla Subversion, ale może nie dla git. –

+3

Podobnie lokalne repozytorium na kluczu USB zsynchronizowanym regularnie pomiędzy szkołą a repozytorium domowym jest normalne dla git, ale nie dla subversion. – Dustin

2

Możesz rozważyć użycie usługi bitbucket.org, która oferuje Mercurial hosting za pomocą jednego prywatnego repozytorium za darmo. Jest to stosunkowo łatwy system do opanowania kodu źródłowego do nauki, a dostępnych jest wiele samouczków i przykładów. Możesz również podzielić się tym repo ze swoimi kolegami z zespołu podczas projektów grupowych. Jest wiele takich usług również dla gita.

Nie sądzę, że istnieje dobry powód, aby dzielić swoje repozytorium za pomocą technologii (np. Java/C++), ale jeśli masz tylko układ katalogów takich jak/assignments/course/assignment_x, powinieneś być w porządku. Prawdopodobnie istnieje pewien kod, który można udostępnić w ramach zajęć, ale przypuszczam, że to zależy od prof .....

1

Znalazłem to najłatwiejsze, aby mieć tylko jedno repozytorium, z podkatalogami dla każdej klasy. Następnie wewnątrz katalogów klas, zrobiłbym foldery przydziału (jeśli przypisania składałyby się z wielu plików) lub po prostu umieściłem pliki bezpośrednio (dla pojedynczych plików, takich jak dokumenty).

1

Używam oprogramowania svn hostowanego na komputerze domowym do wszystkich projektów zajęć (i osobistych). Oto układ, którego używam dla repozytorium:

<SchoolName> 
<SchoolName>\<className> 
//assuming homework are generally single files 
<SchoolName>\<className>\Homework\ 
//assuming multiple files needed 
<SchoolName>\<className>\Assignment x- The Project of DOOM\ 
Personal\<broad non specific name> 

Uważam, że działa dobrze dla mnie. Nie tylko dla klas komputerowych: angielskiego, matematyki, naprawdę każdej klasy, w której większość pracy zostanie napisana. Widzę, że używanie svn z, powiedzmy, klasą rysunku byłoby problematyczne.

0

Dla mnie, jeśli nie hostuję repozytorium bezpośrednio w moim HD, wolę korzystać z DVCS (w tym przypadku Git).W tej chwili używam Bazaar, ponieważ może on działać zarówno w wersji scentralizowanej, jak i rozproszonej (i wymieniać między nimi za pomocą operacji Bind i UnBind). Myślę, że możesz go używać również za pośrednictwem WebDAV. Używam go za pomocą wtyczki Eclipse, więc jest to tak łatwe, jak inne VCS.

9

Jeśli poruszasz się między wieloma komputerami, możesz przenieść zadania na pamięć USB. Zakładając, że używasz gita, nie powinno być żadnych problemów.

zazwyczaj mam folder dla każdej klasy, a pod nim folder dla każdego zadania,

cpsc511/ 
    a1/ 
    a2/ 
    a3/ 
cpsc423/ 
    a1/ 
    a2/ 
    a3/ 

Każde zadanie będzie mieć swój własny repozytorium. Nie widzę powodu, aby używać tego samego repo dla wszystkich zadań, ponieważ przez większość czasu nie będą one niczym powiązane.

+0

+1 Git! Woo, wojny religijne! –

1

Chciałbym dodać powyżej do joeslice's comment, kolejna zaleta korzystania z Mercurial (na przykład Bitbucket) będzie mieć łatwy dostęp do klientów w systemie Windows/Unix/Mac.

  • Idź z różnymi repozytoriami, jeśli nie mają zależności.
  • Mercurial to w pewnym sensie init i działa, ale tak jest w przypadku wszystkich DVCS, które moim zdaniem. Oznacza to również, że nie musisz się martwić o to, jak zorganizować wszystko idealnie, ale zamiast tego możesz po prostu hg init w dowolnym katalogu, zanim zaczniesz tam pracować.

PS: Pozostawiłbym to jako komentarz to the post, ale najwyraźniej nie mogę jeszcze komentować.

4

W duchu uczenia się i dzielenia się publikuję dwa naprawdę wspaniałe zasoby zarówno dla subwersji, jak i git. Myślę, że to zależy od czyjejś sytuacji, aby wybrać, który jest najlepszy dla ich potrzeb.

Subversion Book - Version Control With Subversion Dziennik Book

Git - Pro Git (Book) Wielki przypomnienie użyciu git

Git Hub - Learn Github (learn.github.com Wystarczy znaleźć to dzisiaj.

Do tej pory próbowałem subversion i git, i znalazłem git z opisanym ustawieniem hasen j działa najlepiej. Spróbuję powtórzyć ten wątek. Jeszcze raz dziękuję za wszystkie porady:

2

Inną rzeczą, o której trzeba pamiętać, gdy oszczędzasz pracę semestru w chmurze, jest dostępność. Postanowiłem utworzyć kopię każdej linii kodu, którą napisałem dla mojego undergradu, korzystając z poniższego skryptu.

#!/usr/bin/env python 

import os 
import smtplib 
import sys 

mail_server = '###' 
from_email = '###' 
sender = '###' 
to_email = '###' 
mailbox_name = '###' 
mailbox_password = '###' 

server = smtplib.SMTP(mail_server) 
server.login(mailbox_name, mailbox_password) 

repository, revision = sys.argv[1:] 

# get info about the commit 
cmd = "svnlook info %(repository)s" % locals() 
info = os.popen(cmd).read() 
info = info.split("\n") 
author = info[0] 
time = info[1] 

# combines all lines of multi line comment into a single line 
comment = info[3:len(info)] 
temp = "" 
for c in comment: 
    temp += c + " " 
comment = temp 

# find out what changes are made 
cmd = "svnlook changed %(repository)s" % locals() 
changes = os.popen(cmd).read() 

# include the diff between new and prior revision 
cmd = "svnlook diff %(repository)s -r %(revision)s" % locals() 
diff = os.popen(cmd).read() 

msg = (
"To: %(to_email)s\r\n" 
"From: %(sender)s %(from_email)s\r\n" 
"Subject: Revision %(revision)s committed\r\n" 
"Content-type: text/plain\r\n" 
"\r\n" 
"Revision: %(revision)s\r\n" 
"Comment: %(comment)s\r\n" 
"\r\n" 
"Author: %(author)s\n" 
"Time: %(time)s\r\n" 
"\r\n" 
"Files affected:\r\n" 
"%(changes)s\r\n" 
"Changes Made:\r\n" 
"%(diff)s\r\n" 
) 

msg = msg % locals() 

server.sendmail(from_email, to_email, msg) 
server.quit() 
  • Place to w 'SVN-repo/haki /' (zapisz go jako post-commit)
  • uczynić go wykonywalnym - 'chmod + x post-commit'

I na Twój osobisty adres Gmail z dwóch powodów: 1. Po prostu mogę przeszukiwać moją skrzynkę odbiorczą od wielu lat za pomocą prostego interfejsu Gmaila 2. Możesz obudzić się następnego dnia po długiej nocy kodowania i przejrzeć wszystko, co zostało zgłoszone jako Kontrola poprawności - Wiele firm produkujących oprogramowanie stosuje tę praktykę.