学生和项目的Git / Github工作流程

时间:2013-07-12 18:01:17

标签: git github workflow github-enterprise

我和一些学生正试图向其他学生介绍git / Github并举办研讨会从来没有让学生兴奋并开始利用这个工具和服务。今年,我们希望通过让学生使用git提交他们的评分项目来尝试进入课程。

问题是;我们还没有提出适当的工作流程来做到这一点。理想情况下,所有这些都可以通过Github完成。我们学校有 Github Enterprise (阅读无限制的公共/私人回购),所以我们有一些空间可以玩。我不确定我们可以做多少定制,我不确定Github Enterprise提供的是什么。

我的第一个工作流程如下。

  • 教学助理发布了一份包含起始代码和项目描述/作业
  • 的回购
  • 学生将仓库分成私人仓库(我觉得这是不可能的)
  • 学生单独处理他们的项目
  • 当学生准备提交他们的项目时,他们会向教学助理提交拉回请求。

我很确定这有一些缺陷,一个是我们想尝试让学生保持私密。分叉到私人仓库可能是不可能的,而拉力请求我肯定不会起作用。

我很好奇是否有人做了类似的事情或有任何想法。我也愿意设置一个单独的服务器。我在这里的想法是,学生可以使用Github(私人回购)来集中他们的代码,并通过分配项目并在那里工作来熟悉Github。当提交他们的项目进行评分时,他们会将项目推送到一个单独的服务器。我不完全确定这是如何工作的,但我认为有一些方法可以接受推送请求并通过钩子将它们推送到不同的分支。

这个想法是让学生使用git / github进行项目可能会让他们开始使用版本控制来实际处理他们的项目。当然,学生们不会做任何事情,直到他们完成任何事情。这更多是关于让学生接触这项技术。

1 个答案:

答案 0 :(得分:2)

嗯,这不是一个非常适合SO的问题。

然而,这是我个人的一些想法:

正如您对问题的评论中指出的那样,在教授Git时,使用Github [Enterprise]可能会有点过头了。虽然您需要某种服务器来允许学生获取和交付他们的数据,但Github非常关注其Web界面。即使使用Github进行协作也是你班级的一部分,你应该付出相当大的努力让学生先学习Git。

我不是百分之百地确定在GHE中分叉和权限的行为,但它通常是这样的:公共存储库只能分叉到公共仓库;如果分叉用户想要将repo的状态更改为private(如果GHE甚至允许),它将删除“fork”连接(从而使Pull Request不可能)。如果用户克隆私有存储库,它将自动成为私有存储库,但据我所知,它将保留原始存储库的权限列表。这意味着:如果你让所有学生都可以访问私人仓库来克隆它,他们的所有分支(默认情况下)也会拥有这些权限,而且他们的代码将不会是私有的(足够)。

第三,我认为PR不是让学生交出作业的好方法。 PR旨在将代码/更改传播到上游存储库中,但这会混淆所有学生的代码。相反,让学生标记他们想要提交以进行评分的提交,然后在某处通知您有关标记的信息(在Github上发布问题,发送电子邮件,等等)。对此进行扩展,您可以使用像Gitolite这样的服务器解决方案,在该解决方案中您可以禁止用户删除标签 - 因此,一旦提交,学生就无法更改或收回他们提交的内容。

最后:根据本课程中作业的结构,我不知道使用单一的repo / fork结构是否是学习项目管理的好方法。让我们假设作业就像在我的大学一样:每隔一两周,学生就会得到作业,这些作业几乎都是独立的。遵循标准的每个项目的一次回购协议,每个学生每周一到四个回购。使用fork-networks处理这个问题会给你的教学助手带来相当大的开销(至少在Github上,当手工操作时;使用Github API或更可定制的解决方案,如Gitolite,这可以编写脚本)。
另一方面,如果你有一个(或两个)项目,学生在整个课堂上工作,定期(或最后一次)提交它,使用分支网络或类似的东西是很多更可行。通过这种方式,使用标签的想法也将教会学生使用标签来标记重要里程碑(在某些情况下可能会发布)的惯例。

现在这一切都来自我。我当然建议你使用更适合这种讨论的更具互动性的媒体。 SO旨在用于具有相对明确答案的问题。您可以在irc.freenode.com上的IRC频道#git停留或尝试SO聊天;或者讨论论坛也可以运作良好。