获取SVN项目所有修订版本的本地副本

3
有没有可能将项目的所有修订版本复制到我的本地计算机上?基本上,我想要的是从远程SVN存储库中提取项目W、X、Y和Z并在我的计算机上访问它们,最好是在本地运行的SVN副本中。理想情况下,我希望使用某种GUI工具来完成这个过程,因为我的Unix技能有限,而且我在工作中没有准备好的*nix盒子。
由于我无法直接访问涉及的服务器,因此我只能使用可以在svn客户端机器上执行的方法。
我的第一个目标是在关闭所在服务器之前备份代码。我已经通过检出获得了基本形式,但如果可能的话,我想维护变更历史记录。长期保持与服务器同步也很有用,但由于此时不太可能发生任何其他对代码的编辑,因此这是一个较低优先级的目标。
4个回答

4
如果您的目标仅是备份远程存储库检出http://rsvndump.sourceforge.net/。您只需要用户访问权限即可获取此转储文件,无需特殊权限。请注意,这是一个命令行工具。

这看起来比我到目前为止看到的任何东西都更接近我想要的。但我需要为4个URL拉取转储数据 (base/app1、base/app2、base/lib1和base/lib2)。您知道这个工具是否允许我指定多个URL,或者我是否可以将这些转储合并到单个本地仓库中,并使修订数据全部匹配(例如,针对影响几个独立的转储的提交)吗? - Dan Is Fiddling By Firelight
不,我不知道有任何选项可以在同一命令中提供4个URL。我个人没有尝试将所有4个URL倒入一个存储库。但我的直觉告诉我它会起作用。如果它起作用,请务必告诉我们。 - Version Control Buddy

2

Subversion是一种基于“服务器”的版本控制系统。你所询问的更适合使用“分布式版本控制系统”。使用git-svn,你可以拥有本地副本,同时仍然向中央(subversion)仓库贡献代码。


没错。目前我最关心的是第三方服务器的长期可用性。单向快照对于档案目的来说已经足够了。如果有任何不那么密集的选择,那种双向链接就过度了。 - Dan Is Fiddling By Firelight
我问你跟Rup一样的问题。对于这种方法,粒度会是什么?有些第三方存储库中有一些项目我不想移植过来。 - Dan Is Fiddling By Firelight
你的主要目标是什么?解耦、归档还是本地离线访问源代码控制。 - zellus
参与分布式版本控制系统(DVCS),在这种情况下是git,可能会在未来受益。使用几个命令可以跟踪svn存储库并使用git-svn进行操作。 - zellus
从长远来看也许是这样,但在短期/中期内,能够在需要配置或出现故障时向帮助台大喊大叫而不必自己做所有管理工作的优势,比起使用GIT或Mercurial更加重要;而我不是足够擅长办公室政治的人,无法让足够多的人使用一个非正式的服务器,以便IT部门被迫接受它的所有权以减轻风险。此外,与VSS和Clearcase不同,SVN实际上没有任何明显的缺陷,这使得政治斗争更加困难。 - Dan Is Fiddling By Firelight
我喜欢冒险;-)。无论是团队还是个人解决方案,都会产生很大的差异。建立个人git-svn克隆只需要几分钟时间。引入新的版本控制工具/策略更具挑战性,正如你所指出的那样。 - zellus

1

还有svnsync;一旦您设置了预提交挂钩以启用修订属性更改,就可以使用它将内容镜像到本地存储库中。

这仅使用客户端操作;如果您能说服管理员给您提供存储库转储,则svnadmin dump / load方法可能更好地开始使用。


设置预提交钩子需要哪些步骤?理想情况下,我希望使用公司 SVN 服务器上的存储库,但对其进行任何配置更改都需要通过我们的 IT 部门进行处理。 - Dan Is Fiddling By Firelight
此外,svnsync 是否允许控制其获取的范围?第三方仓库中有许多项目我不想抓取副本。 - Dan Is Fiddling By Firelight
对于钩子,使用svnadmin create创建要同步的存储库,然后在那里查看hooks目录;取出pre-revprop-change.tmpl,在Windows上将其重命名为.bat,或者在Linux上去掉扩展名并使其可执行 - 即仅进行轻微的文件更改。文件中的注释解释得很清楚,尽管对于同步存储库,您可能只想用exit 0(即true)替换所有内容。选择性同步:不确定,抱歉 - 或者至少我从未这样做过,并且我没有看到任何初始化或同步参数。因此,可能不是最好的解决方案,抱歉。 - Rup

-1

你无法访问数据,它只是一个转储。 - CharlesB
你可以轻松地将数据加载到本地仓库中。而且似乎这与备份有关。 - Stefan Egli
如果您可以从第三方获取转储文件,那么您(或他们)可以使用捆绑的 svndumpfilter 脚本将其缩小到您感兴趣的存储库部分。请注意,这不适用于 --deltas 转储文件(上次我尝试时),仅适用于 --incremental - Rup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接