2013-07-12 95 views
1

一些同學和我都試圖引進其他學生的Git/Github上,並召開座談會從來沒有真正努力讓學生興奮並開始採取的工具和服務的優勢。今年,我們希望通過讓學生使用git提交他們的評分項目來嘗試並加入到課程中。的Git/Github的工作流程,爲學生和項目

問題是;我們還沒有想出一個適當的工作流程來做到這一點。理想情況下,所有這些都可以通過Github完成。我們學校有Github Enterprise(閱讀無限的公共/私人回購),所以我們有一些空間可供玩耍。我不確定我們可以做多少定製,但我不確定Github Enterprise所提供的是什麼。

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

  • 助教發佈回購與啓動代碼和項目描述/分配
  • 學生叉回購私人倉庫(我有一種感覺,這是不可能的)
  • 學生對他們的項目都是單獨工作
  • 當學生準備好提交他們的項目時,他們會向教學助理提交一份合併請求。

我敢肯定有這幾個缺點,其中之一是,我們要儘量保持學生的作品私人。分叉到一個私人回購可能是不可能的,我肯定拉的請求不會工作。

我很好奇,如果有人做了類似的事情或有任何想法。我也願意設置一個單獨的服務器。我的想法是,學生可以使用Github(私人回購)來集中他們的代碼,並通過分派項目並在那裏工作來熟悉Github。當提交他們的評分項目時,他們會將項目推送到一個單獨的服務器。我不完全確定這是如何工作的,但我認爲有一些方法可以允許接受推送請求並通過鉤子將它們推送到不同的分支。

的想法是,讓學生與該項目的git/github上的工作可能讓他們開始使用版本控制一般爲實際工作對他們的項目。當然,有些學生在完成任務之前不會做任何事情。這更多的是讓學生接觸這項技術。

+2

我沒有看到什麼使用github增加了你想要教的東西(例如使用現代版本控制)。教他們* git *而不是* github *,並讓他們通過電子郵件發送一系列補丁(例如,如果您在開始時給他們一個指導,甚至可以用'git send-email')。這樣,所有與私人/非私人回購協議相關的問題都會消失,因爲他們的克隆是在他們的控制之下,而不是與某些預定的工作流程相關聯。 –

回答

1

那麼,這是不是真的與SO非常適合的問題。

然而,這裏有一些我個人的想法:

正如有人指出,在評論你的問題,使用Github上[企業]這個當它涉及到教學的Git可能有點潔癖。雖然您需要某種服務器來讓學生獲取並提交他們的數據,但Github非常關注其Web界面。即使使用Github進行協作也是您班級的一部分,您應該花大量精力讓學生先學習Git。

我不是100%肯定有關權限如何分流和行爲在GHE,但它通常是這樣的:一個公共倉庫只能分叉到公共回購;如果分叉用戶想要將回購的狀態更改爲私有(如果GHE甚至允許),它將刪除「分叉」連接(從而使得請求不可能)。如果一個用戶克隆一個私有倉庫,它將自動保密,但據我所知,它將保留原始倉庫的許可權清單。這意味着:如果你讓所有的學生訪問私人回購來克隆它,他們的所有分支都將(默認情況下)擁有這些權限,並且他們的代碼再次不會是私人的(足夠)。

第三,我不認爲PR是讓學生交作業的好方法。 PRs旨在將代碼/更改傳播到上游回購站,但會混淆所有學生的代碼。相反,讓學生標記他們想要提交評分的提交,然後在某處通知您標籤(在Github上發佈問題,發送電子郵件,無論如何)。爲此,您可以使用像Gitolite這樣的服務器解決方案,在該解決方案中,您可以禁止用戶刪除標籤 - 因此,一旦提交,學生就無法更改或收回提交內容。

最後:根據這個課程中的作業結構,我不知道使用單個回購/叉結構是否是學習項目管理的好方法。讓我們假設分配工作就像在我的大學裏一樣:每隔一兩週,學生就可以完成任務,這些任務幾乎是獨立的。遵循標準的單項回購項目公約,每個學生每週可獲得1到4次回購。使用fork-networks來處理這個問題會給你的教學助手帶來很大的開銷(至少在Github上,當你手動使用Github API時,使用Github API或像Gitolite這樣的更多可定製的解決方案時,可以編寫腳本)。
另一方面,如果您有一個學生在整個班級工作的單個(或兩個)項目,請定期(或最後一次)提交審查,使用分叉網絡或類似的東西更可行。通過這種方式,使用標籤的想法也將教會學生使用標籤來標記重要里程碑(在某些情況下可能是發佈)的慣例。

這就是我現在所有的。我當然建議你使用更適合這種討論的交互式媒體。 SO適用於具有相對明確答案的問題。您可以在irc.freenode.com上的IRC頻道#git停止或嘗試SO聊天;或者一個討論論壇也可以運作良好。

相關問題