如何“转储”正在关闭的SVN远程存储库

时间:2013-09-25 22:31:38

标签: svn version-control repository

所以我们刚刚注意到我们正在关闭的一些项目目前正在sourcerepo.com上托管。

当然,我可以从头版本更新并让一切都很酷,为了存档,我真的希望获得过去一年半对存储库所做的更改的整个历史记录。

我提出了一个快速而肮脏的解决方案,它正在工作,但却像疯了一样占用磁盘空间:

FOR /L %i IN (1, 1, 680) DO svn checkout <url>/Project@%i %i
SVN LOG <url>/Project >> log.txt

即使我不喜欢这个!

svnadmin dump <url>/Project出错,说它需要本地路径才能使用。

有没有更简洁的方法来做到这一点,即使我没有本地或SSH访问服务器本身(我只通过https进行读/写svn访问,甚至无法登录到网站上客户门户网站)?

4 个答案:

答案 0 :(得分:1)

使用svnsync:

svnsync help sync
synchronize (sync): usage: svnsync synchronize DEST_URL [SOURCE_URL]

使用git并执行克隆在rev 1 ,然后执行pullupdate

安装Mercurial,安装hgsubversion并启用它,执行克隆在rev 1 ,然后执行pullupdate

因为在git和hg中克隆都可能出错而且只剩下拉可以在它停止的地方拾取/遇到问题通常是一个很好的计划来克隆在rev 1然后拉/更新。

您甚至可以考虑为每个版本生成和存储补丁文件,而不是每个版本的整个存储库。

答案 1 :(得分:1)

实际让我的计算机运行上面详述的批处理脚本,然后再做一些研究之后,我确信将整个事情迁移到git是一个好主意,所以我发现了这个:{{ 3}}

基本上,每行填写一个users.txt文件,其中包含五个贡献者,格式为svn_username = Name <email>

我尝试了他们建议从SVN日志中提取用户的方法,但它没有用。因此,我只是在Tortoise中打开SVN日志,查看所有条目并快速扫描所有条目,然后手动将它们输入到文本文件中。

然后执行了git clone https://<url>/Project --authors-file=users.txt --no-metadata Project(没有使用-s标志,因为我们公司项目的结构完全没有标准......)。

它只是简单的工作。从r1开始,一路走来没有问题,除了单个&#34;在users.txt&#34;中找不到这个用户。这很容易修复。

没有任何标签或分支可言,因此甚至不需要额外的转换。

答案 2 :(得分:1)

Subversion的最后两个版本包括svnrdump tool。指向存储库的URL,它将生成一个转储文件,然后您可以使用该转储文件加载(svnadmin load)本地存储库或用于转换为另一个VCS。

答案 3 :(得分:0)

  1. 安装python和pysvn ,假设您还没有
  2. 在本地计算机上安装svn管理工具,假设您还没有
  3. 在您自己的计算机存储库上创建本地并在其上启动本地服务器。
  4. 使用python脚本依次从远程服务器和该rev的日志条目中提取每个rev。
  5. 将每个rev及其日志消息提交给本地服务器。
  6. 准备就绪后,您可以使用svnadmin工具从您自己的计算机移动到您可以直接访问的服务器。