我想知道如何为我的一个工作副本设置两个存储库。我的服务器需要一个存储库,以便我可以在两台电脑之间签入/签出;我需要在我的本地 pc 中使用另一个存储库,以便我可以快速查看 diff 的结果(我的 svn 服务器位于慢速共享主机上)
我怎样才能做到这一点?
我想知道如何为我的一个工作副本设置两个存储库。我的服务器需要一个存储库,以便我可以在两台电脑之间签入/签出;我需要在我的本地 pc 中使用另一个存储库,以便我可以快速查看 diff 的结果(我的 svn 服务器位于慢速共享主机上)
我怎样才能做到这一点?
Subversion 的差异操作不使用网络访问。这是 Subversion 优于 CVS 的一大优势。因此,我不确定您为什么会遇到该特定问题。
另一种方法是使用 Git,特别是git-svn
在您的本地 PC 上。您可以在本地计算机上获得整个存储库历史记录的完整副本,并能够在本地区分和查看历史记录(以及 Git 为您提供的许多其他功能)。只要有可能,我现在就使用它git-svn
来访问 Subversion 存储库。
如果您不必使用 SVN,您可能会更好地使用分布式版本控制系统,例如 Mercurial 或 Git。每台 PC 都有自己的存储库副本,更改可以直接在 PC 之间同步,也可以通过中央服务器上的另一个副本同步。由于每台 PC 都在本地存储了完整的存储库,因此您可以在没有网络访问的情况下进行 diff 或任何其他操作。
如果您的本地机器是 linux,您可以创建一个 crontab 条目以每 X 分钟更新一次 svn 以使其与后台服务器保持同步。从那里您将在本地 svn 服务器上获得最新的副本以进行比较。
您可以尝试使用svk作为本地客户端,而不是 svn。Svk 是一个使用 svn 存储库的伪分布式版本控制系统。
您将使用 svk 设置存储库的镜像,对其进行同步,然后您可以根据自己的喜好进行比较,尽可能多的修订,并且都是本地的。
您还可以创建镜像存储库的分支并将其用作结帐,然后您的提交也是仅限本地操作,当您准备好一批提交时,您将它们推送到远程 svn 存储库(并拉其他用户改回来,类似于 svn update 命令)。
两个警告:
除此之外,我第二次使用 bazaar、mercurial 或 git,正如其他人建议的那样。Bazaar 可能是最容易使用的,并且有一个 TortoiseBzr GUI,我的一位同事说它非常可靠。
Git 是最难使用的。它就像一把瑞士军刀,几乎宽而不是长,所有的小玩意儿和老爸老妈都在里面,挂在上面,弹簧很紧,以至于你偶尔会切开手指试图撬开刀片出去。
SVN 本身并不适合此类用例。你必须在这里和那里调整一些东西(比如编写 crons)。如果你想要开箱即用的东西来适应这些用例,试试 GIT。
我不相信标准存储库复制会给你你想要的。使用该设置,一个代理始终是只读的,我认为在您的情况下并非如此。
您必须在签入之前执行 svn switch --relocate 来切换您正在查看的存储库。有点容易出错。
您所追求的是通过代理写入。
如果您在本地计算机上使用 apache 和 mod_svn_dav 进行设置,您将拥有一个接收所有更新的本地存储库,您可以轻松地对其进行比较和签出,但所有写入都会返回到其他人的实际存储库正在使用并从中获取更新。
svn diff 的结果不取决于您连接到服务器的速度;这是一个完全本地化的操作。