1

我在学校服务器上有一个 subversion 存储库,来自我和朋友上个学期工作的一个项目。我们希望接受该项目并对其进行润色,使其更像是一个投资组合项目,我不太确定该存储库是否会在学校服务器上保持完整(他们通常会在几个学期后将其擦除)。我无权转储 repo,尽管我已经发送了一封电子邮件,看看我是否可以得到一个 - 这将是最好的解决方案。

我尝试了 svnsync 但学校服务器不支持重播命令(可能已关闭),所以这对我不起作用。

现在,理论上,是否可以(手动或以编程方式)签出存储库的每个修订版并将其签入我们自己服务器上的新存储库?我认为它会起作用 - 我们只有 3 个人,并且没有我们必须担心的工作副本冲突,只需要一份回购中所有历史记录的副本,以防我们需要回去查看它。

话虽如此,在我通过编写脚本来重新发明轮子之前 - 这样的事情是否已经存在?我必须弄清楚已经有一个工具可以做到这一点,或者有人已经编写了一个脚本来做到这一点。

4

4 回答 4

0

您没有指定项目中大约有多少修订。并且可以对每个修订进行基于脚本的签出。但这是不现实的,因为每个文件夹都创建了所有“.svn”文件夹。因为他们,你

  1. 要么需要另一个脚本递归删除这些文件,然后另一个脚本才能签入。
  2. 或者,为每个修订版执行 svn 导出,然后编写另一个脚本将其签入。

如您所见,这是不可行的。而且我不知道执行此操作的脚本。

但是,您可以从 repo 中导出许多最重要的提交,然后将它们添加到新的存储库中。如果修订的数量较少,那么它应该更容易。

于 2010-04-13T06:47:58.690 回答
0

如果您愿意使用 Mercurial——a) 与 Subversion 相距不远,在命令方面,b) 将防止此类问题,并且 c) 使用起来实际上很有趣*——您可以使用convert扩展名。它内置于 Mercurial 中,您只需激活它。

* 反正我是这么想的

于 2010-04-13T06:18:01.043 回答
0

在svnsync的帮助下,对 subversion 存储库的读取权限应该足以创建该存储库的克隆。一个简短的例子如何做到这一点:

svnadmin create new_repos

new_repos/hooks/pre-revprop-change用类似的东西创建钩子脚本

#!/bin/sh
exit 0
#

不要忘记使其可执行

chmod u+x new_repos/hooks/pre-revprop-change

然后初始化一个同步:

svnsync init file:///PATH/TO/new_repos https://old_repos/trunk/subfolder
svnsync sync file:///PATH/TO/new_repos https://old_repos/trunk/subfolder

测试您的新存储库

svn co file:///Users/bjoern/test/new_repos new_working_copy

并且不要忘记删除钩子脚本

rm new_repos/hooks/pre-revprop-change

有关存储库复制的更多详细信息可以在svn book中找到。

于 2013-10-10T20:34:40.103 回答
0

我尝试了 svnsync 但学校服务器不支持重播命令(可能已关闭),所以这对我不起作用。

我想那svnsync是因为一些小问题而没有奏效;既不需要svnsync也不svnrdump需要任何服务器端修改才能工作!


如果您至少具有通过 HTTP(S) 对 Subversion 存储库的只读访问权限,svn(+ssh)://那么您绝对可以使用svnsyncsvnrdump工具获得完整的修订历史记录。

svnrdump方法。

只需运行命令并等待它完成:

svnrdump URL-TO-ORIGINAL-REPO > repo.dump

结果,您将获得包含完整更改历史记录的 repo.dump 文件。svnadmin load您可以稍后使用命令将文件加载到空存储库。

svnsync方法。

所有步骤都应在您的(本地)机器上执行:

  1. 创建新存储库:svnadmin create newrepo,

  2. 允许更改新存储库的修订(未版本化)属性:

    echo exit 0 > myrepo\hooks\pre-revprop-change.bat

  3. svnsync init file:///C:\Repositories\newrepo https://URL-TO-ORIGINAL-REPO

  4. svnsync sync file:///C:\Repositories\newrepo https://URL-TO-ORIGINAL-REPO

于 2015-03-03T16:04:52.590 回答