为了对发布给我们客户的所有 jar 文件的内容进行版本控制,在过去几年中,我们一直在这些 jar 中发布一个文本文件,该文件将保存File <-> CVS Version
该 jar 中包含的每个 java 文件的映射。CVS 存储库被用作我们的 VCS。
不怀疑当时是否没有更好的解决方案,几个月前,我们决定迁移到 SVN,我们的解决方案是为一个可能随时从客户生产环境中检索到的长期被遗忘的 jar 保留历史,是svn property
为每个迁移的 java 文件添加自定义。
例如:
My/Foo/Bar.java
在 CVS 版本迁移1.2.33.5
到 SVN,因为svn-rev.5678
将收到以下属性:svn:cvs = 1.2.33.5
.
My/Foo/Bar.java
对(CVS 版本)的最后更改1.2.33.4
被映射到svn-rev.5145
为我们的文件设置了 svn 属性的svn:cvs = 1.2.33.4
.
可以轻松浏览该文件的 SVN 状态/日志,因此可以同时浏览对该文件所做的更改和svn:cvs
属性值的历史记录。
现在,当一个新的 svn 签入到那个文件时,比如说 as svn-rev.5700
,所有需要做的就是清除该属性。
任务完成——我们本可以完全放弃 CVS。
转移到 Git。
我们路径上的下一步是将一些遗留的 TFS 存储库与我们现在拥有的 SVN 存储库合并,并且不详细介绍,我们希望遵循的方法是将这两者直接迁移到 Git。
我们关心的一个主要问题是如何不丢失在我们第一次迁移期间引入的 svn:cvs 属性。意识到gitattributes似乎是正确的方法,但没有更好的选择吗?真的有必要.gitattributes
在源代码周围存储文件吗?(全局文件可能不实用)。此外,从 svn 属性生成这些文件及其历史记录听起来不像是一个简单的脚本。
任何提示将不胜感激。