Nor*_*sey 68 version-control darcs
我在CS部门教授第三个必修课程.我的一项家庭作业要求学生加快他们为以前的作业编写的代码.十倍的加速是常规的; 因素100或1000并非闻所未闻.(对于1000倍的加速,你必须使用malloc()犯下新手错误.)
程序是通过序列改进的小改进.我要求学生记录并描述每个变化以及由此产生的改进.
当你正在改进程序时,也可以打破它.退出不是很好吗?
你可以看到我的目标:我的学生将从版本控制中受益匪浅.但有一些警告:
以下是我对现有系统的评论:
我正在征求关于与初学者一起使用什么源代码控制的建议.我怀疑我们可以找到资源在现有系统上放置薄薄的贴面并简化现有文档.我们可能没有资源来编写新文档.
那么,与合作伙伴一起设置,提交,还原和共享更改真的很容易,但是不必很容易合并或大规模工作?
一个关键的限制是编程对必须能够彼此共享工作,并且只能彼此共享工作,并且每周都会更改对.我们的基础架构是Linux,Solaris和带有netapp文件管理器的Windows.我怀疑我的IT人员想为每对学生创建一个Unix组.我忽略了一个更简单的解决方案吗?
(感谢您接受的答案,由于其对Git Magic的出色参考以及有用的评论而击败了其他人.)
Abi*_*ern 84
我会说像Git这样的东西可能适合这个法案:
看看这个网站Git Magic ,甚至是这个提示网站GitReady
小智 48
二是Mercurial的选择
好处
缺点
Jee*_*Bee 16
Subversion易于安装,在windows,linux和mac os x上.我不知道他们正在编程什么程序,但是Eclipse的subclipse插件很容易安装并且隐藏了一些存储库的复杂性.
和存储库复杂性?无论如何,这只是在每个项目中都有一个trunk,tags和branches文件夹.他们可能没有太多时间,但他们应该有时间学习SVN(或类似的),因为这是一种在他们的简历上看起来很好的技能.
Ale*_*mov 11
我会推荐Mercurial(也称为'hg').它是一个分布式开源VCS,不需要中央存储库.每天使用它很容易.官方网站上有足够的文档.例如,查看QuickStart.
对我而言,决定点是Windows的一个很好的GUI - TortoiseHg.它似乎也支持Linux(没试过自己).当然,大多数Linux版本都有命令行发行版.
当然从围栏这边看起来很容易,也许对于忙碌的学生来说,概念,优点和日常操作都不会那么容易习惯.但最终,即时提交,恢复到任何修订的能力以及从那里自动创建新分支,以及智能差异/合并都是不可替代的.
希望这可以帮助!
为了让您的学生真正轻松使用,您可以安装一个SVN服务器,该服务器已启用自动提交,使用webdav共享.这样他们就可以使用WebDAV安装他们的目录,每次他们点击保存时都会自动提交 - 使用TortoiseSVN,Eclipse/Visual Studio插件或ViewVC等一些Web访问解决方案可以轻松访问历史记录.对于您的访问限制需求,您可以使用集成的subversion身份验证(在此处查看) - 它使用简单的配置文件进行细粒度访问控制.
配置变得更加容易(现在有更好的文档 - 看看SVN书籍),但如果您需要多个具有访问限制和Web界面的独立存储库,可能会有点复制.
Autocommit更像是"我的办公室工作人员/老板"的解决方案,他不知道计算机内部是否需要对word文档进行版本控制.参加编程课程的学生也许应该学习如何使用体面的SCM.
Git and Mercurial would be nice because of their distributed nature, which makes sharing easy - but both tools lack GUI interfaces which are really easy to use (TortoiseHg looks promising, and gitk is a very good Repository browser, but your students would still have to wrap their heads around the command line tools to make full use of the tools). Also the concept of distributed SCM's is a little more complex to grasp.
在专业方面,您可以使用GitHub等公共托管解决方案,而不必担心服务器设置.这也使得共享解决方案变得非常容易,但会破坏您的"只有彼此"的要求.但我想你无论如何都无法阻止他们交换代码,根据我的课程工作经验,我发现查看代码并验证它是唯一的防止复制的方法.
你也可以使用PlasticSCM,它为很多IDE提供了非常好的界面,并且(至少是网站声称)为教育机构提供免费许可.
Darcs是一个优秀的DVCS,特别适用于小型项目,如CS类课程.我希望我在大学时被介绍给Darcs或Git,我也赞赏你把它介绍给你的学生.
我每天都使用Git.这是一个非常强大的DVCS,但对于较小的项目可能有点过分.
顺便提一下,这些版本控制系统都非常好.
我对Bazaar有一些很好的经验.像Git/Mercurial一样,它是分发的.它是无服务器的 - 您不需要在托管存储库的服务器上安装守护程序,即使您远程访问它(即,它可以像FTP/SFTP共享一样工作).
分布式VCS最灵活.您可以从更传统的"中央"存储库中查看分支,并获得能够将您自己的小开发分离到中央服务器等的所有好处,然后,或许,可以将您的更改推回原处.
有其他VCS的导入工具,如Subversion,虽然我还没有尝试过.
darcs send设置很简单 - 当你运行时darcs send <remote repo>,它会查看_darcs/prefs/email远程仓库以确定将电子邮件发送到的位置.如果那里什么也没有,那么它会提示用户.
补丁的接收者只保存文件并darcs apply <patch file>在适当的仓库中运行.
因此,每个学生都可以使用自己的电子邮件地址拥有自己的回购,_darcs/prefs/email并通过电子邮件交换补丁.