关键在于,即使我不与其他人协调,我也喜欢对所有编码使用版本控制。我希望在使用任何系统时都能看到最新版本的代码。
我不想依赖于始终具有网络访问权 - 我可能在没有Wi-Fi的地方进行编码(是的,这很少见,但有些地方仍然处于石器时代)。我正在考虑使用git,但如果我在本地有仓库可用,SVN之类的工具也可以。或者笔记本电脑成为SVN服务器,桌面访问它。
有人做过这样的事情吗?是否有任何陷阱/问题/教训?
嗯,我强烈建议您考虑使用分布式系统而不是Subversion。这将满足您不依赖网络访问的要求,并且可能更适合您的工作流程。分布式版本控制系统的主要选择包括git、Mercurial(也称为“hg”)和Bazaar(或“bzr”)。我个人更喜欢Mercurial,但它们都差不多。
然而,Mercurial在其他版本控制系统中有一个优点(这对您的情况非常有帮助),那就是“hg serve”命令。您可以在此处阅读有关它的信息:使用“hg serve”进行非正式共享。基本上,它设置了一个非常简单(临时)的服务器,允许通过网络拉取您的存储库。我经常使用它来保持桌面电脑和笔记本电脑之间的代码同步。如果我在笔记本电脑上进行了一些更改,我只需在那里运行“hg serve”,然后从桌面电脑上运行“hg pull”,或者反过来,如果我在桌面电脑上工作。因此,总体而言,我绝对建议研究分布式系统,我认为它们将最好地设置您想要的环境。网络上有大量关于使用它们的信息。我没有花太多时间研究其他系统,但如果您想尝试Mercurial,这本免费在线书籍涵盖了您需要开始的几乎所有内容。
无论你做什么,一定要确保你的代码库经常备份。如果你的笔记本电脑存储着代码库,那尤其需要注意。你还需要考虑如果你的笔记本电脑被盗了会发生什么。在这种情况下,使用git并将代码库留在台式机上可能更好。
如果你追求简单(设置),SVN就可以了。它可以在没有网络连接的情况下工作,因为你的整个历史记录都保存在每个同步的电脑上,而且SVN+SSH的设置非常简单。它使用SSH的内置功能来运行程序,所以如果你已经设置好了SSH服务器,你只需要创建一个仓库,一切都能正常工作,无需任何服务器设置。
这也可以作为你的备份,因为你的整个仓库都保存在你与之同步的每台电脑上。
分布式版本控制系统也很有趣,但我认为前期投入更高,但它的优点是你可以在没有连接的情况下保存到你的仓库(如果你独自工作,这并不太重要,但随时进行检查点和回滚可能会有优势)。
当你没有访问存储库的权限时,使用SVN会变得非常棘手。由于我在一台计算机上进行所有开发工作,因此我已经很好地使用了SVN,但您可能不会觉得那么容易。据我所知,这正是git旨在解决的问题-它允许您进行在本地副本中注册的提交,然后在获得访问权限时将它们全部上传到存储库。
http://www.google.com/search?hl=en&q=svn+hosting&btnG=Google+Search&aq=f&oq=
我最喜欢的版本控制系统是darcs,因为它支持补丁挑选。它是一种分布式版本控制系统,非常容易使用。