【问题标题】:Git/Github workflow for students and projects [closed]学生和项目的 Git/Github 工作流程 [关闭]
【发布时间】:2013-07-12 18:01:17
【问题描述】:

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

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

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

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

我很确定这其中存在一些缺陷,其中之一是我们希望尝试让学生的工作保密。分叉到私人仓库可能是不可能的,而且我确信拉取请求不会起作用。

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

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

【问题讨论】:

  • 我看不到使用 github 为您可能想要教的内容添加了什么(例如,使用现代版本控制)。教他们 git 而不是 github 并让他们通过电子邮件发送补丁系列(例如,如果您在一开始就给他们一个操作方法,即使使用git send-email)。这样,私人/非私人回购的所有问题都会消失,因为他们的克隆在他们的控制之下,并且不依赖于某些预定的工作流程。
  • classroom.github.com 似乎允许这样做,您可以申请免费的私人回购。

标签: git github workflow github-enterprise


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2021-01-21
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多