2009-09-04 23 views
13

Tôi đang giảng dạy một khóa học mới tại một trường đại học mới trong học kỳ này, và tôi thực sự quan tâm đến việc giúp sinh viên của tôi hoạt động bằng cách sử dụng Thực tiễn tốt nhất. Theo cách này, tôi muốn giao và nhận bài tập về nhà từ họ bằng cách sử dụng kho git. Thật không may, tôi sử dụng git, nhưng tôi không hiểu nó đủ tốt để biết lỗ hổng bảo mật tiềm năng là gì và cách tránh chúng. Ngoài ra, tôi đã chỉ sử dụng git để kiểm soát phiên bản cá nhân, và không bao giờ trong một nhóm hoặc nhóm.Tôi có thể sử dụng git để gửi bài tập không?

Gói hiện tại của tôi là thiết lập máy A với người dùng 1-12, tương ứng với từng học sinh của tôi. Tôi sẽ tạo một cặp khóa công khai/riêng tư cho mỗi sinh viên và một kho lưu trữ git ban đầu. Sau đó, học sinh có thể truy cập vào kho lưu trữ cho các bài tập mới và đẩy vào bài tập khi chúng được gửi.

Lý tưởng, không có quá nhiều rắc rối, tôi sẽ có thể đẩy từ kho lưu trữ chính vào kho lưu trữ sinh viên khi tôi giao bài tập. Nếu nó sẽ có thể kéo từ kho lưu trữ của họ vào kho lưu trữ tổng thể sẽ được gọn gàng là tốt.

Chỉnh sửa: Văn bản này không rõ ràng lắm. Tôi dự định cho họ đẩy/kéo vào kho lưu trữ cá nhân của họ khi họ hoàn thành một nhiệm vụ hoặc được cấp một cái mới. Tôi không cho rằng tôi có thể đẩy bài tập vào máy tính xách tay của họ :)

Vậy tôi bắt đầu từ đâu? Tôi tìm kiếm điều gì? Đây có phải là một ý tưởng tồi không? Nếu vậy, tại sao?

+5

Tôi nghĩ đó là một ý tưởng hay. Tôi cảm thấy chán nản vì ít tiếp xúc với các công cụ thực hành tốt nhất như kiểm soát phiên bản trong khi học. Cho dù đó là một ý tưởng tốt là khác nhau. –

+1

Tôi nghĩ rằng bạn nên đi cho họ kéo từ một repo để có được nhiệm vụ. Bằng cách đó họ là những người làm công việc, không phải bạn. –

+0

Đó là một ý tưởng tuyệt vời. Thậm chí có thể thiết lập một khu vực trên http://github.com/ để bao gồm các hướng dẫn chuyển nhượng, v.v. – grenade

Trả lời

5

Bạn có thể sử dụng Gitosis quản lý truy cập SSH để kho, như mô tả trong scie.nti.st: Hosting Git repositories, The Easy (and Secure) WayTv's cobweb: Snakepit and gitosis, things I've been working on bài đăng trên blog, và trong Chapter 4.7: Gitosis của "Pro Git: điều khiển phiên bản chuyên nghiệp" cuốn sách. Nó là trong Python, và yêu cầu setuptools. Hoặc bạn có thể cố gắng để tìm tương đương của nó, như gitolite (trước đây là gitosis-lite) trong Perl.

Giải pháp thay thế sẽ dành cho mỗi sinh viên có kho lưu trữ riêng hoặc cặp kho lưu trữ: tư nhân mà anh/cô ấy đang làm việc, và (bán) công cộng có lẽ với quyền truy cập SSH anh/cô ấy đẩy để hoàn thành công việc đã hoàn thành . Bạn sẽ đóng vai trò của người duy trì/tích hợp và kéo các thay đổi từ kho lưu trữ công khai của họ vào kho lưu trữ của bạn (hoặc kho lưu trữ của bạn). Học sinh sẽ kéo từ kho lưu trữ công cộng của bạn (hoặc kho lưu trữ).

+0

Cảm ơn Jakub. Bạn có đề xuất gitosis hoặc tài khoản người dùng để duy trì kho lưu trữ riêng biệt không? Cả hai đều có vẻ như lựa chọn khả thi và tôi không chắc chắn sẽ dễ dàng hơn và an toàn hơn. –

+0

Tôi không có nhu cầu thiết lập kho lưu trữ git nhiều người dùng, vì vậy tôi không thể cho bạn biết điều đó; Tôi không có kinh nghiệm cá nhân với thiết lập như vậy. Tôi khuyên bạn nên đọc các chương liên quan của "Pro Git" (và có lẽ cũng "Hướng dẫn sử dụng Git" và "Git Community Book"). –

+2

gitosis là một giải pháp khá thoải mái để quản lý kho git và quyền truy cập của người dùng. Bạn có thể quản lý tất cả các kho và quyền truy cập thông qua 1 tệp cấu hình. Tôi đã sử dụng gitosis khoảng một năm nay và việc quản lý và sử dụng thực sự đơn giản. Nó chắc chắn đáng xem. – maff

2

Để bạn đẩy vào kho lưu trữ của họ (được sở hữu bởi người dùng của họ) ngụ ý rằng bạn cần phải sử dụng đặc quyền gốc để tự đẩy nó vào. Tại sao không xuất bản đường dẫn đến nhiệm vụ và yêu cầu họ kéo nó?

Tất nhiên, bạn cũng có thể hạn chế các khóa ssh để chỉ một lệnh nhất định có thể chạy; bạn có thể hạn chế các đường dẫn trong một repo duy nhất thuộc sở hữu của một người dùng duy nhất dựa trên khóa được cung cấp.

Git là DCVS, vì vậy tôi thích ý tưởng nhiều tài khoản của bạn.

+0

"Đối với bạn để đẩy vào kho lưu trữ của họ (được sở hữu bởi người dùng của họ) ngụ ý rằng bạn cần phải sử dụng đặc quyền gốc để đẩy vào riêng của họ." Tôi hy vọng rằng tôi có thể giải quyết vấn đề này bằng cách thêm bản thân vào nhóm của mỗi học sinh. Tất nhiên, tôi không có vấn đề gì với việc sử dụng sudo trong trường hợp này :) –

+0

Vâng, có lẽ chỉ việc buộc umask của họ đến 002 sẽ làm thủ thuật (làm cho nhóm tệp được tạo của họ có thể ghi). –

+1

'git init' có tùy chọn' --shared' chỉ cho tình huống này. Git sẽ thiết lập các bit truy cập nhóm trong kho lưu trữ cho một cái gì đó có ý nghĩa (đối với nhóm). –

2

Nếu bạn sử dụng Git, sinh viên của bạn sẽ phải học rất nhiều khái niệm liên quan đến quản lý cấu hình phần mềm, kiểm soát phiên bản, v.v. Bạn đang dạy một khóa học SCM? Nếu vậy, ý tưởng của bạn nghe có vẻ tốt. Nếu không, bạn có thể xem xét một cái gì đó như Moodle. Nếu người dùng của bạn đang sử dụng Windows, hãy nhớ rằng Git không phải là tốt nhất trong môi trường đó.

+0

Tôi đồng ý, bạn thực sự nên chắc chắn rằng họ làm chủ công cụ, vì vậy họ không bị mất dữ liệu, v.v. Vì vậy, bạn cần dành một vài giờ để dạy những điều cơ bản VCS/DVCS đầu tiên, sau đó git cụ thể (reflog, index, v.v.). – tonfa

+0

Điều này có thể là một bộ chia đối phó. Mặc dù lớp học đang được dạy ở cấp độ sau đại học cho sinh viên có nền khoa học máy tính đại học, sẽ không có bất kỳ tài liệu khóa học nào về kiểm soát phiên bản. Tôi hy vọng rằng họ có thể sử dụng RẤT cơ bản git thêm/cam kết/đẩy để biến trong nhiệm vụ của họ. Tôi có thể phân bổ một giờ trong phòng thí nghiệm để làm quen với git, nhưng không còn nữa. –

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