我可以使用git进行作业提交吗?

时间:2009-09-04 07:39:35

标签: git version-control

我本学期在新大学教授新课程,我真的很想让我的学生使用最佳实践来运行。通过这种方式,我想使用git存储库分配和接收他们的作业。不幸的是,我使用git,但我不太清楚它是否足以知道潜在的安全漏洞是什么以及如何避免它们。另外,我只使用git进行个人版本控制,从不使用团队或团队。

我目前的计划是设置机器A,用户1-12,对应于我的每个学生。我将为每个学生生成一个ssh公钥/私钥对,以及一个初始git存储库。然后,学生可以访问存储库以获取新的作业,并在提交时将其推送到其中。

<击> 理想情况下,在没有太多麻烦的情况下,当我发布作业时,我将能够从主存储库推送到学生存储库。如果有可能从他们的存储库中提取到整齐的存储库中。

编辑:这篇文章有点不清楚。我打算让他们在完成任务时推送/拉入他们的个人存储库,或者给他们一个新的任务。我不认为我能够将作业推送到他们的笔记本电脑中:)

那么我从哪里开始呢?我要注意什么?这是一个坏主意吗?如果是这样,为什么?

3 个答案:

答案 0 :(得分:5)

您可以使用 Gitosis 来管理对存储库的SSH访问,如scie.nti.st: Hosting Git repositories, The Easy (and Secure) WayTv's cobweb: Snakepit and gitosis, things I've been working on博客文章以及Chapter 4.7: Gitosis中所述“Pro Git:专业版控制”一书。它在Python中,需要setuptools。或者您可以尝试在Perl中找到它的等价物,例如gitolite(以前的gitosis-lite)。

替代解决方案是让每个学生拥有自己的存储库或一对存储库:他/她正在工作的私有存储库,以及可能具有SSH访问权限的(半)公共存储库他/她推动完成已完成的工作。您将扮演维护者/集成者的角色,并将从其公共存储库中的更改到您的存储库(或您的存储库)中。学生将从您的公共存储库(或存储库)中提取。

答案 1 :(得分:2)

为了您进入他们的存储库(由他们的用户拥有)意味着您需要使用root权限才能推入自己的存储库。为什么不发布作业的路径并让它们拉出来?

当然,您也可以限制ssh密钥,以便只运行给定的命令;您可以根据提供的密钥限制单个用户拥有的单个仓库中的路径。

Git是一个DCVS,所以我喜欢你的多账户理念。

答案 2 :(得分:2)

如果您使用Git,您的学生将需要学习许多与软件配置管理,版本控制等相关的概念,这对于教学而言是不必要的,例如,地理课程。你在教SCM课程吗?如果是这样,你的想法听起来不错。如果没有,你可以考虑Moodle之类的东西。如果您的用户在Windows上,请记住Git在该环境中不是最好的。