版本控制的使用,要從娃娃抓起

2014-05-29 20:42:59 +08:00
 yukirock
大作业的 group work 是拿 Java 写一个迷宫游戏。迷宫生成算法其实不复杂,GUI 虽然很恶心但也能忍,但 git 的使用与队友的表现才令人头大。

考虑到作业代码不宜公开,所以采用了 Bitbucket 的私有源,然后把最早完成的迷宫部分的代码交了上去。上课时一直使用 Eclipse 写 Java,但 Eclipse 与 git 怎样结合大家似乎都没有研究过。我最早尝试时,如果在 Eclipse 中直接使用 git 的话,所有的代码会归入一个 src 目录。但当时我以为这不对,应该是所有的代码都在根目录下,所以就放弃了通过 Eclipse,一直用另一个目录作为 local git repo,然后与 Eclipse 目录之间手动同步。

这样虽然蹩脚但还能用,但另一个队友比我还不擅长 git。那边的做法是,Eclipse 里写的代码,直接打开 Bitbucket 的网页编辑器贴进去。版本完全乱套。我后来提交的修改,那边每一次提交都会不留声息地抹掉。

与此同时分工也没有仔细划分。一开始分工倒还简单,例如谁做后台算法,谁做 GUI,但一来队友对 git 不熟悉,二来有幽灵队友这两天才露面不知道要分什么活好,现在完全出于混乱的境界。完全不知道代码进度,而且也有人在同时做一个东西然后窝工。代码管理也是通过打包然后发邮件或者传到 fb 讨论组这种石器时代的方式共享,好端端的 git 都被我们吃了。

总结拔高主题,本科生不是病,犯起来要人命。与被队友坑过的各位共勉,也祝各位不被队友坑、不会坑到队友。与此同时也无力地呼吁各位重视版本控制等软件工程工具的重要性,至少对不懂事的本科生来说这个实在是太容易被忽略了。
5814 次点击
所在节点    程序员
35 条回复
acros
2014-05-29 20:50:11 +08:00
我怎么觉得你队友不是不熟悉工具,是还没明白版本管理工具的运作机理····
yukirock
2014-05-29 20:56:52 +08:00
@acros
這不是一碼事麼= =
其實我校其它課程也有涉及這些軟件工程工具的用法,但一來不深入,二來也沒有在 group work 中大規模使用過。
事實上作業要求中也沒提到這些東西的部分……只是要求要有編寫代碼的記錄,手寫日誌或者拿 git 提交記錄其實都可以。
hitsmaxft
2014-05-29 20:57:57 +08:00
啥都不懂的学生党, 建议 svn 搞起
yukirock
2014-05-29 21:00:31 +08:00
@hitsmaxft
這種時候 svn 反而顯得麻煩了吧,還要搭一個 svn 服務器。Git 的話有 GitHub,還有 Bitbucket 和 Heroku,國內還有 Gitcafe,以這種大作業的規模和性質我覺得還是 git 更適合。
emric
2014-05-29 21:04:17 +08:00
可以尝试 GUI 的 GIT 例如 SourceTree. 比起命令行, 在团队推广起来方便多了.
再丢几个 GIT 的知识连接, 基本来说 GIT 问题已经不大了. 剩下的只能让慢慢的让他们领悟了.
yukirock
2014-05-29 21:10:40 +08:00
@emric
讚。
但我們這四個人,兩個 OS X,一個 Arch 一個 Ubuntu,GUI 工具可能也有麻煩……
不過反正我校師生用蘋果本的已經越來越多了,我也早已磨刀霍霍向蘋果店。
我大概也算是高估了隊友用 git 的能力,因爲我想着畢竟作爲計院學生這點技能應該也是有的……再說也是 ABC,沒有讀英文的難題啊。
hitsmaxft
2014-05-29 21:17:12 +08:00
@yukirock 为了共享点代码, 就直接上 git, 过了, 仅此而已. 不过 svn 服务器不好搭倒也不至于, sourceforge 和 google code 貌似还是支持, 只是年代久远了, 不太记得.
palytoxin
2014-05-29 21:18:07 +08:00
讲真,这种情况svn虽然好不到哪里去,但是比git一定是强不少。eclipse我记得是用egit这个插件管理。

第一次用svn是在windows上用totoriseSVN,客户端服务器端都方便的多。
git的服务器端自己搭超麻烦,用gitlab也是个不错的选择
jsonline
2014-05-29 21:19:39 +08:00
呵呵,工具没问题,人有问题。
yukirock
2014-05-29 21:27:02 +08:00
@hitsmaxft @palytoxin
我是平時自己玩所以對 git 一套比較熟,所以一開始就沒怎麼考慮 svn。再說 git 和 svn 我都沒有搭服務器的經驗,但 git 方面已經有 GitHub 等工具了。
大作業也有時間限制,如果還要去熟悉不常用的工具時間可能會來不及,畢竟手頭還有別的科目的作業。
davidli
2014-05-29 21:39:54 +08:00
为什么本科的Team project还需要版本控制?
不都是找个周末边喝可乐边通宵,然后一晚上直接搞定的么
F1ReKing
2014-05-29 21:41:55 +08:00
Eclipse 使用Git的话 推荐插件EGit,可以定义不同的分支,这样就可以控制版本了 带上: http://download.eclipse.org/egit/updates/
yukirock
2014-05-29 21:42:12 +08:00
@davidli
光是迷宮算法我就幹了整整一天,帶上 awt/swing 那一套我乾脆手拿菜刀上街裸奔算了……
yukirock
2014-05-29 21:43:03 +08:00
@fireking
我最早用的就是這個,但是沒研究透就草草開工了。
這算是本次大作業獲得的教訓之一。
以及多謝推薦。
kyze8439690
2014-05-29 21:57:59 +08:00
你应该把为什么要这样做教给他,想我也是大二的时候从朋友那些学会版本控制这种东西....
lincanbin
2014-05-30 00:36:10 +08:00
Git用起来确实还是比较麻烦的,你可以先从GUI的git开始,然后再让他们学Shell
例如TortoiseGit就不错,甚至我觉得Shell可有可无了。
jetbillwin
2014-05-30 00:38:46 +08:00
这个情况下可以直接用dropbox啊,而且本身也带版本管理……自从经历了一次文件丢失之后,我就是git+dropbox双保险
yukirock
2014-05-30 02:56:44 +08:00
@kyze8439690 @lincanbin
我校也有設計版本管理這種軟件工程的科目,但畢竟各人選課進度不同,我不知道這邊有沒有接觸過。接觸過的話感覺再去講太裝逼了。

我用 git 一開始就是 CLI 上手的,GUI 怎麼用我完全沒有經驗。我頂多告訴對面說,我們用 git,商量一下公共 repo 怎麼寫,剩下的細節我覺得沒必要一一說……哪怕是老師也只管講課,我們那個 TA 又是在校生,連 UML/CRC cards 這些東西他自己也高不清楚,這些課程大綱上沒寫的更不會講了。

@jetbillwin
我沒聽說過有人 group work 拿 Dropbox 幹活的……而且那個版本管理根本不夠幹活用的。
Git + Dropbox 雙保險倒是必備,我一同學前兩天筆記本差點弄丟,找回來之後馬上就把所有重要的東西備份到 Dropbox 來了。
我買了 50G 的永久容量。
fishleen
2014-05-30 04:32:05 +08:00
为什么用arch, ubuntu的不习惯git命令行啊,找个简单教程,不超过一下午基本的git命令都能学会啦。

话说我们农村学校不要说project course了,就是做hackthon一群人也是用git来做。而且我们学校自己有搭git,连bitbucket都不用,校内学校服务器速度非常快,而且也有web直观化的log,diff和network(就是私人的github)。

Eclipse的话能设置.gitignore,搜索.gitignore java就可以啦~别人可以git clone之后直接导入的,只要是同一个project。

不过也有比较脑残的实验室不用任何版本控制,直接zip然后email,碰到这种队伍我都直接绕着走的。
20150517
2014-05-30 04:52:08 +08:00
说实话,这么小的项目,而且每次提交改动不大的话,用git还不如直接用svn,git相对优势是因为svn整天要merge出来做开发,而不影响trunk比较麻烦,但你们一个作业什么,都是只在一个master上改来改去,做git每次要来个commit,然后再push,好麻烦,意思不大....真有必要git吗?觉得好多人盲目崇拜git过了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114931

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX