有没有一种简单的方法可以检查 Subversion 中的每个修订版?目前,如果我想这样做,我将不得不单独检查每个修订版。
为了回答不可避免的“你为什么需要这个?”,我将使用离线计算机并希望能够在不连接到互联网的情况下测试旧代码状态。我可能不需要一路回去,但我仍然希望有所有的修订,以防万一。
有没有一种简单的方法可以检查 Subversion 中的每个修订版?目前,如果我想这样做,我将不得不单独检查每个修订版。
为了回答不可避免的“你为什么需要这个?”,我将使用离线计算机并希望能够在不连接到互联网的情况下测试旧代码状态。我可能不需要一路回去,但我仍然希望有所有的修订,以防万一。
您可以使用 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 安装来完成。
我强烈建议您使用 GIT。
通过使用 git-svn,您将能够克隆 svn 存储库,获取每个修订版并创建相应的 GIT 存储库。
使用包含所有版本的 GIT 存储库,您可以在那台离线计算机上做任何您想做的事情。
不如 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
一天左右一次,您将只获得那些尚未在备份存储库中的更改。第一次需要一段时间,但是在您将备份存储库与真实存储库同步后,同步它只需几秒钟,因为只有那些新的修订需要同步。
回答提出的问题
您可以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
,但用于远程存储库。
在您的情况下,您:
svnadmin load
转储到回购关于 svnrdump 的最后说明
Svnrdump 是 Subversion 1.7.X 中客户端工具的一部分。任何1.7 客户端都可以与1.6 服务器自由通信而不会出现问题
工具rsvndump正是实现了这个目的。