查看Subversion的每个修订版本?

时间:2013-02-21 00:57:03

标签: svn version-control tortoisesvn google-code

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

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

5 个答案:

答案 0 :(得分: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

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

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

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

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

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

如果您想继续从Google代码回购中同步,我不会提交。但是,如果您无意更新,则可以提交,然后svnadmin dump仅限于您在本地存储库中更改的版本,并使用svnrdump load将其发送到Google代码服务器。

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

答案 1 :(得分:3)

我强烈建议您使用GIT。

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

使用包含所有版本的GIT仓库,您可以在该离线计算机中执行任何操作。

答案 2 :(得分:2)

不像Adrian Shum的解决方案那么好,但如果你真的更喜欢坚持使用SVN,你也可以使用svnsync。来自stackoverflow上的Stefan's answer

首先,在您的家庭计算机上创建一个新的存储库。

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

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

答案 3 :(得分:0)

回答问题

您可以在oder中使用svn export 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 dump to repo
  • 将您当前的WC切换到新的回购或从本地结账到新的WC(并且无论如何都有传统方式的完整历史记录)

关于svnrdump的最终说明

Svnrdump是Subversion 1.7.X中客户端工具的一部分。任何 1.7客户端都可以自由地与 1.6服务器进行通信

答案 4 :(得分:0)

工具rsvndump完全达到了这个目的。