1

有没有一种简单的方法可以检查 Subversion 中的每个修订版?目前,如果我想这样做,我将不得不单独检查每个修订版。

为了回答不可避免的“你为什么需要这个?”,我将使用离线计算机并希望能够在不连接到互联网的情况下测试旧代码状态。我可能不需要一路回去,但我仍然希望有所有的修订,以防万一。

4

5 回答 5

6

您可以使用 svnsync 在本地克隆存储库。svnsync 不需要任何额外的访问级别,而不是您已经拥有的,您最终将获得存储库的完整副本。请注意,如果存储库很大,这可能需要一些时间。

svnsync 记录在 svnbook 中:http: //svnbook.red-bean.com/en/1.7/svn.ref.svnsync.html

一般流程会。

创建一个新的存储库:

svnadmin create mirror

初始化同步(其中 URL 是您的 Google 代码存储库根):

svnsync initialize file://`pwd`/mirror $URL --source-username user --source-password pass

然后,您可以更新同步以匹配当前存储库:

svnsync synchronize file://`pwd`/mirror

请注意,我pwd在 URL 中使用命令的文件,如果需要,您可以使用完整路径,因此您不必保留在同一目录中。

然后,您可以重新定位现有的工作副本以使用您的本地镜像(其中 WC 是您的工作副本路径,URL 是 Google 代码仓库的 URL):

 svn switch --relocate $URL file://`pwd`/mirror $WC

然后返回到 Google 代码存储库就像(其中 URL 是您的 Google 代码存储库的 URL)一样简单:

svn switch --relocate file://`pwd`/mirror $URL $WC

如果您想继续从 Google 代码仓库同步,​​我不会提交。但是,如果您不打算更新,您可以提交并svnadmin dump限制您在本地存储库中更改的版本,并用于svnrdump load将它们发送到 Google 代码服务器。

git-svn 是另一种选择。但是以上应该可以通过现有的 SVN 安装来完成。

于 2013-02-21T01:29:35.960 回答
3

我强烈建议您使用 GIT。

通过使用 git-svn,您将能够克隆 svn 存储库,获取每个修订版并创建相应的 GIT 存储库。

使用包含所有版本的 GIT 存储库,您可以在那台离线计算机上做任何您想做的事情。

于 2013-02-21T01:08:54.553 回答
2

不如 Adrian Shum 的解决方案好,但如果你真的更喜欢坚持使用 SVN,你也可以使用svnsync。来自Stefan对 stackoverflow 的回答:

首先,在您的家用机器上创建一个新的存储库。

svnadmin create c:\backuprepo

接下来,创建一个名为 pre-revprop-change.bat 的文件:

echo exit 0 > c:\backuprepo\hooks\pre-revprop-change.bat

然后,初始化同步:

svnsync init file:///c:/backuprepo https://url/of/your/repository

之后,您可以简单地运行

svnsync sync file:///c:/backuprepo

一天左右一次,您将只获得那些尚未在备份存储库中的更改。第一次需要一段时间,但是在您将备份存储库与真实存储库同步后,同步它只需几秒钟,因为只有那些新的修订需要同步。

于 2013-02-21T01:30:07.203 回答
0

回答提出的问题

您可以svn export在 oder 中使用 1-st 形式在任何修订版中导出到 repo 的未版本化树状态。从svn help export

export [-r REV] URL[@PEGREV] [PATH]
...
Exports a clean directory tree from the repository specified by
URL, at revision REV if it is given, otherwise at HEAD, into
PATH.

您可以轻松编写最简单的脚本,该脚本在 repo 中的所有修订版中运行并执行导出以更改更改的目标路径

回答未提出的问题“如何克隆任何远程仓库”

在 Subversion 1.7.* 中添加了新的管理工具:svnrdump,允许执行svnadmin dump|load,但用于远程存储库

在您的情况下,您:

  • 在 TortoiseSVN 中创建本地仓库
  • CG-repo 的负载转储(可能只有主干部分的完整转储)
  • svnadmin load转储到回购
  • 将您当前的 WC 切换到新的仓库或从本地结帐到新的 WC(并且在任何情况下都以传统方式拥有完整的历史记录)

关于 svnrdump 的最后说明

Svnrdump 是 Subversion 1.7.X 中客户端工具的一部分。任何1.7 客户端都可以与1.6 服务器自由通信而不会出现问题

于 2013-02-21T07:22:54.103 回答
0

工具rsvndump正是实现了这个目的。

于 2013-02-23T02:20:09.287 回答