2

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

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

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

  • 助教发布了一个带有起始代码和项目描述/作业的 repo
  • 学生们将 repo 复制到一个私人存储库(我觉得这是不可能的)
  • 学生单独完成他们的项目
  • 当学生准备好提交他们的项目时,他们会向助教提交一个拉取请求。

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

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

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

4

1 回答 1

2

好吧,这并不是一个真正适合 SO 的问题。

尽管如此,以下是我的一些个人想法:

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

我不能 100% 确定 GHE 中的分叉和权限如何表现,但通常是这样的:公共存储库只能被分叉到公共存储库;如果分叉用户想要将 repo 的状态更改为私有(如果 GHE 甚至允许),它将删除“分叉”连接(从而使拉取请求变得不可能)。如果用户克隆了一个私有仓库,它会自动成为私有仓库,但据我所知,它会保留原始仓库的权限列表。这意味着:如果您让所有学生访问私有仓库以克隆它,他们的所有分叉(默认情况下)也将具有这些权限,并且他们的代码将再次不是私有的(足够)。

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

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

这就是我现在的全部。我当然建议您使用更适合此类讨论的更具交互性的媒体。SO 适用于答案相对明确的问题。#git您可以在 irc.freenode.com 上的 IRC 频道停留或尝试 SO 聊天;或者也许一个讨论论坛也能很好地工作。

于 2013-07-12T18:38:12.293 回答