基于便携式存储的版本控制?


9

我在两台计算机上开发个人项目,而无需使用共享服务器或两者之间的网络连接。

是否有任何通用的版本控制系统可靠地支持将便携式存储设备(例如USB闪存设备)用作共享存储库?


为什么要/需要使用便携式存储?
伯纳德

以与普通版本控制系统对共享服务器相同的方式在两台计算机之间移动代码。(我没有共享服务器。)
billpg 2012年

我曾经在USB闪存驱动器上使用一组辅助存储库来更新工厂中的制造工具,并且效果很好。您甚至可以看到不在现场的技术人员何时在本地计算机上修改代码,然后将其更改合并(或拒绝),然后再将其更改同步回闪存驱动器。
Mark Booth 2012年

这里已经说过SVN支持本地存储,您可以使用usb。但是我更喜欢将它的数据库存储在我的专用DropBox文件夹中;)您还可以使用许多免费服务(例如assembla或tfs.visualstudio.com)
Pavel Voronin

Answers:


31

使用DVCS,例如GitMercurial

分布式版本控制系统没有共享的中央服务器。

使用DVCS,存储库的每个副本都拥有完整的历史记录-所有内容。这意味着,当在USB闪存盘上使用时,您对USB闪存盘上的存储库所做的任何更改都会在此历史记录中保留。


9
而且,如果您使用github,甚至都不需要携带USB驱动器
CamelBlues 2012年

谢谢。可以设置为使用便携式存储作为存储库吗?
billpg 2012年

@billpg-是的。它只是存在于目录结构中。
奥德

@CamelBlues或bitbucket或kilnhg或其他可能不合适或不合适的其他东西……
Murph 2012年

3
我在DropBox上拥有主要的个人Mercurial存储库。效果很好,并且可以自动执行备份(因为DropBox在丢失所有计算机的同时不太可能消失)。
David Thornley 2012年

7

除了上面建议的GIT,Mercurial等外,还可以看一下Fossil-它的优点是运行时二进制文件很小(对于Windows和Linux,运行时间二进制文件约为1Meg),可移植且零安装。因此,与其他设备(据我所知)不同,它可以放在存储设备上并在插入存储设备的任何计算机上运行,​​而无需首先在计算机上安装应用程序。它包括一个Wiki和带有仓库的变更/缺陷跟踪系统。它还内置了gui。

我没有认真使用它(我主要使用GIT),但是它的轻量级方法给人留下了深刻的印象,并且包含Wiki和缺陷跟踪器使其非常适合小型项目。我唯一担心的是,GIT的某些更强大的功能可能无法实现,并且与GIT不同,用户社区并不庞大,以至于很容易找到问题的答案。


尽管Git遵循Unix的诫命去做一件事情并且认真地做得很好,但是您可以通过诸如gitgit(票务系统)和gollum(基于仓库的wiki)之类的扩展在Git中拥有这些功能。
杰森·刘易斯

@Jason Lewis:您是正确的,并且由于它是开源的,因此您可以对其进行修改以满足您的要求,因此GIT(或任何其他工具)对任何人(可以被打扰,有多余的时间和资源)都是一切下载,安装和调试所有的“插件”我是说是一个解决方案,“只是工作的开箱”,这是值得考虑的化石。
mattnz

1

使用DCVS可能是一个好主意,但这不是唯一的选择。

我在USB拇指驱动器上有一个小的CVS存储库。当我要访问它时,我只需要使用cvs -d <path>或设置$CVSROOT存储库根目录的路径(当然,这需要将拇指驱动器安装在系统上)。

如果您已经习惯使用CVS,则应该可以使用。SVN也应如此。这只是意味着您的中央存储库位于拇指驱动器上,并不总是可见的。

通常有使用DCVS而不是CVS的争论。我认为中央存储库是在拇指驱动器还是其他位置上不会特别影响那些论点。例如,您可以轻松地在拇指驱动器上创建git存储库。


1
我通常不是DVCS的忠实拥护者,但我认为DVCS在这种情况下会更好。非分布式VCS的问题在于,回购是单点故障。如果它位于一个气候控制的数据中心中并定期进行备份,那没什么大不了的-但是拇指驱动器之类的东西早点丢失(或踩踏,被狗吃掉或掉入白俄文中)。或更高版本。
Mike Baranczak 2012年

1
@MikeBaranczak:很好-但是,应定期备份拇指驱动器上的所有内容,无论它是否为CVS存储库。
基思·汤普森

在分布式系统中,每个客户端都已经拥有该仓库的完整副本。因此,没有理由进行单独的“备份”过程。
Mike Baranczak 2012年

1
@MikeBaranczak:当然,这是使用DCVS的充分理由。我的观点是,选择DCVS还是使用集中式系统并不取决于您是否使用拇指驱动器。
基思·汤普森

0

作为其他答案的补充:

虽然DVCS非常适合解决此问题,但从技术上讲,如果您觉得更舒适,也可以使用Subversion。Subversion可以使用本地目录而不是中央服务器。您可以将其放在拇指驱动器上并使用。

与DVCS相比,缺点是您只能在插入拇指驱动器时使用Subversion(即提交,查看日志等)。而且,它必须始终是相同的拇指驱动器(或至少是向上驱动器) -最新副本),因为在Subversion中,您不应使用多个存储库(这是未分发的部分)。因此,如果您忘记了拇指驱动器,就无法使用它,与Git或Mercurial不同。

注意:

如上所述,在评论中,DVCS确实更适合您的问题。出于完整性考虑,我仅提到Subversion,以防万一您出于特殊原因需要使用Subversion。


1
Keith的答案一样,本地目录中VCS的问题在于它是单点故障。另外,如果您从机器A移至机器B,但将拇指驱动器插入机器A,则不太可能在乎是否使用DVCS(以后总是可以合并到本地更改中),而使用VCS ,则必须先返回到机器A,获取驱动器,然后再回到机器B,然后才能继续。
Mark Booth 2012年

@MarkBooth:我不提倡这种解决方案,我只是想指出它的存在,是出于完整性考虑,以防OP对Subversion有一些特殊的偏好。我修改了答案,以使这一点变得清楚。
sleske 2012年

感谢@sleske,我同意偏爱svn(或什至是Cvs)可能会偏重于使用该解决方案,但是出于全面披露的目的,还应提及该方法的缺点。随时将我评论中的要点编辑为您的答案。如果您愿意,我很乐意清理(删除)我的评论。* 8')
Mark Booth

我不确定这个答案会补充我还没有说过的内容。
基思·汤普森

1
@KeithThompson:它添加了以下信息:SVN可以使用本地目录而不是中央服务器。SVN文档中对此进行了解释,但是由于大多数人都是通过中央服务器使用SVN,因此SVN不需要服务器可能并不明显。
sleske 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.