首先,我不得不承认我搞砸了CVS.我有一个发布标签releaseX,这是在一段时间后完成的(即,不是HEAD).然后我决定在那时我需要一个维护分支.而不是创建一个分支标记(branchX中)除了要releaseX,我删除了释放标签并创建了一个分支标签(错误地)命名releaseX.然后我接着对维护分支上工作,创造releaseX1,releaseX2等等.
我的问题:当我退房时releaseX,我得到分支头,即该分支的最新代码.我现在需要的是分支点的代码,即前一 releaseX代码.
有没有办法做到这一点?
从备份恢复到早期存储库版本不是一种选择.
编辑:我知道我可以通过基于日期的结账来解决这个问题.我想知道是否仍然可以做一个基于标签的.
更新(Re @Philip Derbeko):我知道CVS与文件之间没有关联.但CVS 确实有分支发生的信息.在ViewVC中,我甚至可以看到它:
File X - Revision 1.y - Branch: MAIN - Branch point for: releaseX
下一个文件修订版是:
File X - Revision 1.y.2.1 - Branch: releaseX - CVS Tags: releaseX1
元数据显然存在.因此我的问题是:是否可以检查分支点,而不是分支HEAD?
Ral*_*lph 10
由于您在分支时没有设置标记,我看到的唯一方法是使用日期方法.但是你现在仍然可以设置该标签.让我们假设您要调用该初始版本"ReleaseX0",因为不幸的是,分支已经占用了名称"ReleaseX".根据您是要在分支上还是在MAIN分支上设置标记,您可以使用以下任一检查命令:
cvs co -r releaseX -D "2008-12-30" modulename
cvs co -D "2008-12-30" modulename
Run Code Online (Sandbox Code Playgroud)
然后设置标签:
cvs tag releaseX0
Run Code Online (Sandbox Code Playgroud)
从现在开始,您可以使用与签出其他版本相同的方式签出此版本.
正如您在对我的初始响应的评论中指出的那样,将分支从releaseX重命名为releaseX_branch,这样做不起作用:
cvs rtag -r releaseX releaseX_branch modulename
cvs rtag -d releaseX modulename
Run Code Online (Sandbox Code Playgroud)
要重命名分支,需要使用"cvs admin -N <old>:<new>".但无论如何,重命名分支是一个坏主意.(我很抱歉首先提出它;-).),重命名会弄乱其他用户的工作副本.所以最好坚持使用原来的名字.