人为增加SVN(FSFS)存储库中的修订号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人为增加SVN(FSFS)存储库中的修订号相关的知识,希望对你有一定的参考价值。

我的公司正在执行SVN存储库迁移,我希望避免两个存储库之间的修订号重叠(目前它们都是活动的)。

我的要求是强制将新存储库的修订版本修改为特定的修订版号(例如:100.000)。

通过分析FSFS存储库,我遇到了“db / current”文件,这听起来像是更改存储库编号的正确位置。

有没有人有这个程序的经验?我想避免将来发生奇怪的事情!

PS:我知道我可以为存储库创建“100.000”虚拟提交。请在执行期间和之后分享您对存储库的此类过程和可能的性能问题的经验

PS3:我理解让每个人在程序之前提交工作副本可能是个好主意。这对我们来说不是问题(新的存储库目前用户非常有限)。不过,如果您有此类或类似要求的经验,请分享! :)

PS3:我知道这不是一个标准的SVN程序,很多人可能会对需求本身提出异议。让我们假设我的要求是合理的! :)

答案

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=940194

问:有没有办法人工增加subversion中的存储库修订号?

答:唯一的方法是提交一些虚拟修订。

另一答案

首先,不要费心去试着这个。如果要合并2,可以使用dump / load将新的一个放在旧的顶部,将为您处理修订号。因此,除非您需要知道特定版本的版本号(对于外部版本或标签),否则您根本不必担心这一点。

如果您可以使用该工具,它总是比稍后查找svnsync或svnadmin包更好,例如,不适用于您修改的存储库。

好的,所以如果你还想这样做,请更新revprop 0和db / current文件中的最后修订号,你应该没问题。

我不认为你会找到任何直接使用这种方法的人!

另一答案

一个简单的方法来进行虚拟修改......

根据需要多次重复:

svnmucc propset dummy_prop 0 -m "increases revision" https://svn/repo/ --username me --password x7G_5-u1,W

注意:

  • 值“0”不必与下一次提交不同。您可以重复相同的命令。
  • 直接更改存储库,无需签出或工作副本。
  • 更改根文件夹(由“... svn / repo”之后的尾随/引用)。因此它甚至可以在一个新鲜的'空'库中执行。
  • 仅更改文件夹的属性。这些仅适用于SVN。因此,如果您签出或更新,svn-unaware应用程序(如您的操作系统)将不会注意到有关该文件夹本身的任何更改。只有在存储这些属性的.svn子文件夹中,才会更改文件。
  • svnmucc是官方Subversion工具的一部分,至少在1.8,也许更早,参见:http://svnbook.red-bean.com/en/1.8/svn.ref.svnmucc.re.html
  • 当然密码只是一个例子,不要担心我披露了任何真实的凭据。 :-)

我希望这能为其他人节省一些研究步骤。

另一答案

使用Subversion 1.7,您可以使用svndumpfilter工具从svnadmin dump创建的转储文件中过滤掉不需要的提交:

http://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html#svn.reposadmin.maint.filtering

从该页面:

[svndumpfilter]充当存储库转储流的基于路径的过滤器

因此,这可以用于从特定路径中删除提交数据,这在一些repo管理方案中很有用(但不是全部);具体而言,在通过文件夹(例如发布标识符)聚合提交到repo的位置时,svndumpfilter将有助于减少repo大小,允许您删除不需要的文件夹。

以上是关于人为增加SVN(FSFS)存储库中的修订号的主要内容,如果未能解决你的问题,请参考以下文章

svnadmin 加载但保留修订号

svn - 基于文件的修订号而不是 repo

当我在存储库中丢失一些修订时,如何转储所有 svn 数据?

自动将 SVN 修订号导入程序

获取 SVN 中的最新修订号?

如何 git-svn 从 Subversion 存储库克隆最后 n 个修订?