所以我们刚刚注意到我们正在关闭的一些项目目前正在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访问,甚至无法登录到网站上客户门户网站)?
答案 0 :(得分:1)
使用svnsync:
svnsync help sync
synchronize (sync): usage: svnsync synchronize DEST_URL [SOURCE_URL]
使用git并执行克隆在rev 1 ,然后执行pull
和update
。
安装Mercurial
,安装hgsubversion
并启用它,执行克隆在rev 1 ,然后执行pull
和update
。
因为在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)