我的公司正在使用CVS作为源控制的事实标准.但是,我听说很多人都说SVN更好.
我知道SVN比较新,但除此之外,我对它的好处并不熟悉.
我正在寻找的是两个系统的良好,简洁的比较,注意到Java/Eclipse开发环境中每个系统的优点和缺点.
我在使用发布标签签出文件时遇到了一些麻烦,希望有人可以提供帮助.
基本上我的存储库是这样构造的
module1
- src
- jsp
- conf
module2
- src
- jsp
- conf
Run Code Online (Sandbox Code Playgroud)
版本可以包括module1或module2或两者的更改.有几个开发人员可以处理任何模块中的任何文件.
要处理新版本,我们使用以下命令检出最新版本(例如LIVE-REL-2.4)
cvs checkout –r “LIVE-REL-2.4” moduleName
Run Code Online (Sandbox Code Playgroud)
请注意,我们不会从trunc中查看.这样做的原因是,如果您从trunc结帐,则包含其他开发人员已签入但您不想包含在下一版本中的文件.
在我们检查了最新版本之后,我们进行了更改并检查了新文件.对于交付,我们使用特定于错误的标记标记我们签入的所有新文件.
cvs tag BUG434 <file1>
cvs tag BUG435 <file2>
Run Code Online (Sandbox Code Playgroud)
然后,我们将新标签应用于当前版本中的每个文件.
cvs tag – r “LIVE-REL-2.4” “LIVE-REL-2.5”
Run Code Online (Sandbox Code Playgroud)
然后,我们为我们签入的新文件添加新的发布标记
cvs tag –r “BUG434” “LIVE-REL-2.5”
cvs tag –r “BIG435” “LIVE-REL-2.5”
Run Code Online (Sandbox Code Playgroud)
以上内容确保新版本将包含"最新发布的版本"中的所有文件以及我们希望包含在发行版中的错误修复.要检查新版本,我们就这样做
cvs checkout –r “LIVE-REL-2.5” moduleName
Run Code Online (Sandbox Code Playgroud)
上面的结账是经过测试和交付的.关于这个过程是否真的有效,但是有点混乱.我们突然有人抱怨他们无法检查任何新文件,如果他们通过标签签出.生成的错误如下所示
sticky tag `LIVE-REL-2.5' for file `DatabaseFacade.java' is not a branch
Run Code Online (Sandbox Code Playgroud)
我一直在阅读这个错误,但我还没有找到解决方案.从我从谷歌搜索收集到的,可用的解决方案如下
这不适合我,因为我不想释放"头"上的变化.我想要发布的修订版是上一版本的更新版本.'HEAD'上的那个可能是有人更新过的,并且不会在下一个版本中发布.
我希望我能做到这一点,但我似乎无法说服我的任何老板我们应该支持分支.我们不支持它,因为它显然使事情变得比它们需要的复杂得多.
这可能会起作用,因为每当有新版本时我就可以从'HEAD'结帐.
现在我的问题真的如下,