1

所以我们刚刚收到通知,我们的一些项目正在关闭,这些项目目前托管在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

4 回答 4

1

使用 svnsync:

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

使用 git 并在 rev 1处进行克隆,然后执行 apull和 an update

安装Mercurial,安装并启用它,在 rev 1 处hgsubversion进行克隆,然后执行 a和 an 。pullupdate

正如在 git 和 hg clone 中一样,它可能会出错并让您一无所获,但 pull 可以从它停止/遇到问题的地方接起,通常在 rev 1 克隆然后拉/更新是一个好计划。

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

于 2013-09-26T10:56:33.900 回答
1

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

于 2013-09-27T16:35:29.937 回答
1

在实际上让我的计算机运行上面详述的批处理脚本之后,然后做了更多的研究,我确信将整个东西迁移到 git 是一个好主意,所以我发现了这个:http://git-scm .com/book/en/Git-and-Other-Systems-Migrating-to-Git

基本上,每行以svn_username = Name <email>.

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

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

它只是简单的工作。从 r1 开始,一路向上没有问题,除了一个“在 users.txt 中找不到这个用户”,这很容易修复。

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

于 2013-09-27T16:15:43.380 回答
0
  1. 假设您还没有安装 python 和 pysvn 。
  2. 假设您还没有安装 svn 管理工具在您的本地机器上。
  3. 在您自己的机器存储库上创建本地并在其上启动本地服务器。
  4. 使用 python 脚本依次从远程服务器和该 rev 的日志条目中提取每个 rev。
  5. 将每个 rev 及其日志消息提交到本地服务器。
  6. 准备好后,您可以使用 svnadmin 工具从您自己的机器移动到您可以直接访问的服务器。
于 2013-09-27T05:03:29.023 回答