2009-09-10 35 views
6

Trường học đã trở lại phiên và tôi thấy mình thua lỗ. Vào cuối học kỳ trước, chúng tôi đã có một dự án nhóm sử dụng subversion (nhóm 4 người) để thực hiện các cam kết và làm cho nó hoàn thành. Tôi cũng nhận thấy việc truy cập vào một điểm trung tâm cho bài tập về nhà của tôi thật dễ dàng như thế nào. Tôi muốn sử dụng SVN hoặc Git (gần đây được giới thiệu với git) và tôi có một vấn đề.Kiểm soát phiên bản cho bài tập về nhà

Cách tốt nhất để tổ chức SVN cho nhiều bài tập về nhà cho nhiều lớp học máy tính là gì.

Tôi có 2 lớp lập trình mà tôi chắc chắn muốn theo dõi. Với số ít nhất là tối thiểu trong tổng số 1 bài tập một tuần có 32 bài tập để quản lý trên 2 lớp. Tôi có nên giữ tất cả chúng trong một kho lưu trữ và chỉ cần nhãn 1 Java và 1 C++?

Xin cảm ơn trước.

Chỉnh sửa: Tôi nên đề cập đến tôi có lưu trữ hàng năm cho phép cả git và lật đổ thông qua WebDAV. Đó là cách tôi truy cập repo svn cho dự án của tôi năm ngoái. Tôi có khả năng khóa bài tập về nhà của mình cách xa công chúng thông qua công cụ này, cho những người không quen thuộc với thiết lập đó.

+1

Git khó học hơn, nhưng một khi bạn cố gắng học nó thì có thể bạn sẽ không bao giờ muốn quay trở lại. – Jacob

Trả lời

7

Nói cho SVN -
Một kho lưu trữ có nhiều dự án là bình thường.

Bạn có thể dễ dàng thiết lập một máy chủ SVN độc lập (mà không cần một máy chủ web) trên một máy tính

Bạn cũng có thể xem xét sử dụng svn với một trụ sở kho tập tin trên một phím USB vì đơn giản giữa gia đình và nhà trường. Điều này được giới hạn chỉ cho một người dùng truy cập các tệp nhưng có nghĩa là bạn không cần gì hơn SVN client (hoặc TortoiseSVN)

ps. Học cách sử dụng SCC là một trong những điều quan trọng nhất mà họ không dạy cho bạn ở trường.

+0

+1 cho ý tưởng thumbdrive + hình đại diện xkcd – bobby

+0

Một kho lưu trữ có nhiều dự án có thể là bình thường đối với Subversion, nhưng có thể không dành cho git. –

+3

Tương tự, một kho lưu trữ cục bộ trên khóa USB được đồng bộ hóa thường xuyên giữa một trường học và kho lưu trữ nhà là điều bình thường đối với git, nhưng không phải cho việc lật đổ. – Dustin

2

Bạn có thể xem xét sử dụng bitbucket.org, cung cấp dịch vụ lưu trữ Mercurial với một kho lưu trữ riêng miễn phí. Nó là một hệ thống kiểm soát nguồn tương đối dễ học, và có rất nhiều hướng dẫn và ví dụ. Bạn cũng có thể chia sẻ repo này với đồng đội của bạn trong các dự án nhóm. Có rất nhiều dịch vụ như thế này cho git là tốt.

Tôi không nghĩ có lý do chính đáng để chia kho của bạn theo công nghệ (ví dụ: Java/C++), nhưng nếu bạn chỉ có bố cục thư mục như/assignments/course/assignment_x, bạn sẽ ổn. Có lẽ một số mã mà bạn có thể chia sẻ trên các môn học, nhưng tôi cho rằng điều đó phụ thuộc vào prof .....

1

Tôi thấy dễ nhất là chỉ có một kho lưu trữ, với các thư mục con cho mỗi lớp. Sau đó, bên trong các thư mục lớp, tôi sẽ tạo các thư mục gán (nếu các bài tập bao gồm nhiều tệp) hoặc chỉ đặt trực tiếp các tệp (đối với các tập tin đơn như giấy tờ).

1

Tôi sử dụng svn được lưu trữ trên máy tính tại nhà cho tất cả các dự án của tôi (và cá nhân). Đây là bố cục tôi sử dụng cho kho lưu trữ:

<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> 

Và tôi thấy nó hoạt động tốt cho tôi. Không chỉ dành cho các lớp học máy tính: Tiếng Anh, Toán, thực sự là bất kỳ lớp nào mà phần lớn công việc sẽ kết thúc bằng cách gõ. Tôi có thể thấy rằng bằng cách sử dụng svn với, nói rằng, một lớp vẽ sẽ có vấn đề.

0

Với tôi, nếu tôi không lưu trữ trực tiếp kho lưu trữ trong HD, tôi thích sử dụng DVCS (trong trường hợp này là Git).Hiện tại, tôi sử dụng Bazaar vì nó có thể làm cả Centralized và Distributed (và trao đổi giữa hai phương thức sử dụng Bind và UnBind). Tôi nghĩ bạn cũng có thể sử dụng nó thông qua WebDAV. Tôi sử dụng nó thông qua plugin Eclipse để dễ dàng như các VCS khác.

9

Nếu bạn di chuyển giữa nhiều máy tính, bạn có thể thực hiện các bài tập trong thanh USB. Giả sử bạn đang sử dụng git, không nên có bất kỳ vấn đề gì.

Tôi thường có một thư mục cho mỗi lớp và dưới nó một thư mục cho mỗi bài tập,

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

Mỗi nhiệm vụ sẽ có kho riêng của mình. Tôi không thấy lý do để sử dụng cùng một repo cho tất cả các bài tập vì hầu hết thời gian họ sẽ không liên quan gì cả.

+0

+1 Git! Woo, cuộc chiến tranh tôn giáo! –

1

Tôi muốn thêm vào joeslice's comment ở trên, một ưu điểm khác khi sử dụng Mercurial (trên Bitbucket) sẽ dễ dàng truy cập vào máy khách trên Windows/Unix/Mac.

  • Đi kèm với các kho lưu trữ khác nhau nếu chúng không có phụ thuộc.
  • Mercurial là khá nhiều init và chạy, nhưng đó là sự thật cho tất cả DVCS tôi nghĩ. Điều này cũng có nghĩa là bạn không phải lo lắng quá nhiều về cách sắp xếp mọi thứ một cách hoàn hảo nhưng thay vào đó chỉ có thể hg init trong bất kỳ thư mục nào trước khi bạn bắt đầu làm việc ở đó.

PS: Tôi đã để lại điều này làm nhận xét to the post, nhưng dường như tôi chưa được phép nhận xét.

4

Trong tinh thần học tập và chia sẻ tôi đăng hai tài nguyên thực sự tuyệt vời cho cả hai phiên bản phụ và git. Tôi nghĩ rằng nó sẽ tùy thuộc vào tình huống rất riêng của bất kỳ ai để lựa chọn cái nào là tốt nhất cho nhu cầu của họ.

Subversion Sách-Version Control With Subversion Official Sách

Git-Pro Git (Book) lớn dẫn đến sử dụng git

Git Hub-Learn Github (learn.github.com Chỉ cần tìm thấy ngày hôm nay.

Cho đến nay tôi đã thử lật đổ và git, và tìm thấy git với thiết lập hasen j được mô tả hoạt động tốt nhất. Tôi sẽ cố gắng theo dõi lại với chủ đề này. Cảm ơn một lần nữa cho tất cả lời khuyên của bạn

2

Một điều cần lưu ý khi bạn lưu các học kỳ của bạn hoạt động trong đám mây là khả năng truy cập. Tôi quyết định sao lưu tất cả các dòng mã tôi đã viết cho bài học của mình bằng cách sử dụng tập lệnh sau.

#!/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() 
  • Nơi này trong 'svn-repo/móc /' (lưu nó như là post-commit)
  • làm cho nó thực thi - 'chmod + x sau cam kết'

tôi 1. Tôi có thể đơn giản tìm kiếm các năm trong hộp thư đến của mình từ bây giờ bằng cách sử dụng giao diện gmail đơn giản 2. Bạn có thể thức dậy vào ngày hôm sau sau một đêm dài mã hóa và xem lại mọi thứ bạn đã thừa nhận dưới dạng kiểm tra sanity - Nhiều công ty phần mềm tuân theo thực hành này.

Các vấn đề liên quan