我有一个版本号为3960的项目。但不幸的是它没有受到源代码控制。现在我想将它放到SVN下并使用Tortoise SVN。但当我把它放进去后,版本号会从1、2、3、4等开始。
有没有一种方法可以将版本号更改为3960?
我有一个版本号为3960的项目。但不幸的是它没有受到源代码控制。现在我想将它放到SVN下并使用Tortoise SVN。但当我把它放进去后,版本号会从1、2、3、4等开始。
有没有一种方法可以将版本号更改为3960?
我能想到的最安全的方法是创建一个带有适当数量空修订版本的转储文件,然后加载它。格式大致如下:
SVN-fs-dump-format-version: 2
Revision-number: 0
Prop-content-length: 56
Content-length: 56
K 8
svn:date
V 27
2009-01-12T14:58:15.449041Z
PROPS-END
Revision-number: 1
Prop-content-length: 56
Content-length: 56
K 8
svn:date
V 27
2009-01-12T14:58:40.758271Z
PROPS-END
Revision-number: 2
Prop-content-length: 56
Content-length: 56
K 8
svn:date
V 27
2009-01-12T14:58:44.509698Z
PROPS-END
你可以省略svn:date,它依然是一个有效的svn仓库,但是使用{date}查询将不起作用(就像在日期与版本不单调递增的任何情况下一样)。因此最好伪造一段合理的日期字符串。
如果你想要3960个这样的修订版本,你可能需要编写一个脚本来生成转储文件。我把这留给读者作为练习 :-)
理论上是可能的,但并不是非常有用。
如果你需要跟踪这些信息,可以考虑创建一个标签“3960”,但否则保留正常的修订过程。
正如手册中所说:
全局修订号
与许多其他版本控制系统不同,Subversion的修订号适用于整个目录树,而不是单个文件。每个修订号选择整个目录树,在某个提交更改后的特定状态下。
另一种思考方式是,修订N表示在第N次提交后的存储库文件系统状态。当Subversion用户谈到“foo.c的修订5”时,他们实际上意味着“foo.c在修订5中的状态”。
修订号与“应用程序版本号”(您的应用程序的版本号)不同:后者由标签表示。
首先,我不知道有什么方法可以做到这一点。如果可能的话,我认为你必须使用 svn-hookscript。
其次,源代码控制系统中的修订号与您程序的修订(版本)号没有任何关系。源代码控制系统跟踪您提交的每个更改,因此您可能会有比构建代码更多的提交。如果您不仅使用新的构建号码提交更改,它可能每次都会有所不同。我不认为您应该只在如此大的步骤中检查更改。
要跟踪您的构建号码,您应该使用标记。