SVN:一个工作副本,两个存储库?

时间:2009-02-24 04:10:01

标签: svn repository working-copy

我想知道如何为我的一个工作副本设置两个存储库。我的服务器中需要一个存储库,以便我可以在两个pc之间签入/签出;我需要在我的本地电脑中使用另一个存储库,以便我可以快速查看差异的结果(我的svn服务器位于慢速共享主机上)

我该怎么做?

8 个答案:

答案 0 :(得分:11)

查看repository replication

您可以设置一个cron作业,以定期从一个存储库同步到另一个存储库。但是你必须确保提交只发生在两者之一。

如果两个存储库都会发生提交,那么分布式版本控制系统(例如gitBazaarMercurial)可能更适合你的小巷吗? Git,甚至可以让你直接从Subversion存储库中取出并推送到它。

答案 1 :(得分:7)

Subversion不对其diff操作使用网络访问。这是Subversion相对于CVS的巨大好处之一。所以我不确定你为什么会遇到这个具体的问题。

另一种方法是在本地PC上使用Git,特别是git-svn。您可以在本地计算机上获得整个存储库历史记录的完整副本,并能够在本地区分和查看历史记录(以及Git为您提供的许多其他功能)。我尽可能使用git-svn访问Subversion存储库。

答案 2 :(得分:3)

如果您不必使用SVN,最好使用分布式版本控制系统,例如Mercurial或Git。每台PC都有自己的存储库副本,更改可以直接在PC之间同步,也可以通过中央服务器上的另一个副本同步。由于每台PC都有本地存储的完整存储库,因此您可以执行diff或任何其他操作而无需网络访问。

答案 3 :(得分:1)

如果你的本地方块是linux,你可以创建一个crontab条目,每隔X分钟更新一次svn,以便在后台与服务器保持同步。从那里你可以获得本地svn服务器上最新的副本来区分。

答案 4 :(得分:1)

您可以尝试使用svk作为本地客户端而不是svn。 Svk是一个使用svn存储库的伪分布式版本控制系统。

你可以使用svk设置存储库的镜像,同步它,你可以根据自己喜欢的方式对你内心的内容进行区分,并且它都是本地的。

您还可以创建镜像存储库的分支并将其用作签出,然后您的提交也是仅限本地的操作,当您准备好一批提交时,将它们推送到远程svn存储库(并将其他用户的更改回来,类似于svn更新命令)。

两个警告:

  1. 准备使用命令行。据我所知,没有TortoiseSVK或其他GUI。
  2. 我在linux上只使用了svk。如果你正在使用Windows,我不确定客户端有多好。
  3. 除此之外,我第二次使用集市,mercurial或git,正如其他人所建议的那样。 Bazaar可能是最容易使用的,并且有一个TortoiseBzr GUI,我的同事说这是非常可靠的。

    Git是最难使用的。这就像瑞士军刀几乎比它长得多,里面装着所有的小装置和小爸爸,挂着它,弹簧太紧,以至于你偶尔会把手指切开以试刀出。

答案 5 :(得分:1)

SVN本身并不适合这种用例。你必须在这里和那里调整一些东西(比如写下crons)。如果你想要一些开箱即用的东西适合这种用例,试试GIT。

答案 6 :(得分:0)

我不相信标准存储库复制会为您提供所需内容。使用该设置,一个代理始终是只读的,我不认为在您的情况下就是这种情况。

在签入之前,您必须执行svn switch --relocate切换您正在查看的存储库。有点容易出错。

你所追求的是write through proxy

如果您在本地计算机上使用apache和mod_svn_dav进行设置,那么您将拥有一个本地存储库,它可以接收所有更新,并且可以轻松区分和检出,但所有写入都会返回到实际存储库其他人都在使用并获取更新。

答案 7 :(得分:0)

svn diff的结果不依赖于连接服务器的速度;这是一个完全本地化的行动。