我想知道如何为我的一个工作副本设置两个仓库。我需要一个仓库在我的服务器上,这样我就可以在两台电脑之间进行签入/签出;我需要另一个仓库在我的本地电脑上,以便我可以快速查看差异结果(我的svn服务器在一个慢速的共享主机上)。
我该怎么做?
我想知道如何为我的一个工作副本设置两个仓库。我需要一个仓库在我的服务器上,这样我就可以在两台电脑之间进行签入/签出;我需要另一个仓库在我的本地电脑上,以便我可以快速查看差异结果(我的svn服务器在一个慢速的共享主机上)。
我该怎么做?
你可以尝试使用svk作为本地客户端,而不是svn。Svk是一种伪分布式版本控制系统,使用svn存储库。
您可以使用svk设置镜像存储库,同步它,您可以随心所欲地进行差异比较,回溯到您喜欢的任何修订版本,并且所有操作都是本地的。
您还可以创建镜像存储库的分支,并将其用作您的检出,然后您的提交也是仅限本地的操作,当您准备好一批提交时,将它们推送到远程svn存储库(并拉取其他用户的更改,类似于svn update命令)。
两个注意事项:
除此之外,我赞成使用其他人建议的bazaar、mercurial或git。Bazaar可能是最容易使用的,并且有一个TortoiseBzr GUI,我的一个同事说它非常稳定。
Git 是最难使用的。它就像是一把瑞士军刀,几乎比它长还宽,里面装满了各种小工具和小玩意儿,还有很多挂在上面的东西,弹簧非常紧,有时候你试图拿出一把刀片时会不小心割伤手指。
SVN并不天生适合这种用例。你需要在这里和那里进行一些调整(比如编写cron)。如果你想要一个开箱即用的东西来适应这种用例,请尝试GIT。
我不确定标准的仓库复制会给你想要的结果。在那种设置下,一个代理始终是只读的,而我认为在你的情况下并非如此。
在提交之前,您必须执行 svn switch --relocate 来切换要查看的存储库。这有点容易出错。
你需要的是一个写入代理。
如果您在本地计算机上使用apache和mod_svn_dav进行设置,您将拥有一个本地存储库,该存储库接收所有更新,并且您可以轻松地对其进行差异比较和检出,但是所有写操作都会返回到实际存储库,其他人正在使用该存储库并获取更新。
svn diff 的结果不受您与服务器连接速度的影响,它是完全本地操作。