在给定文件名及其修订版的情况下,是否有任何CVS命令可以为我提供文件的先前版本?
答案 0 :(得分:2)
您可以使用cvs history command。
答案 1 :(得分:1)
CVS控制文件版本的方式是只有在该文件中有提交时才会增加修订。树或标记等中的更改不会影响单个文件的修订。
虽然没有明确的方法来获取文件的先前修订版,但是给出了名称及其修订版......但是有一个命中和试用方法。盲目地转到以前的修订版。例如,Rev 1.5
的上一版本将是Rev 1.4
另一种解决方法是编写shell脚本。使用cvs log
获取特定文件名的更改日志并grep所需的修订号。
答案 2 :(得分:0)
没有直接的方法可以从CVS命令执行此操作。但是因为我正在使用输出(CVS日志)IN java,所以下面的代码片段为我工作
if (currentRevision == null || currentRevision.trim().length() == 0) {
return null;
}
String[] revComponents = currentRevision.trim().split("\\.");
if (revComponents == null || revComponents.length == 0) {
log.warn("Failed to parse revision number: " + currentRevision
+ " for identification of previous revision");
return null;
}
if (revComponents.length % 2 == 1) {
log.warn("Odd number of components in revision: " + currentRevision);
log.warn("Possibly a tag revision.");
return null;
}
int lastComp;
try {
lastComp = Integer.parseInt(revComponents[revComponents.length - 1]);
} catch (NumberFormatException nmfe) {
log.warn("Failed to parse the last component of revision from " + currentRevision);
log.warn("Identified presence of alphanumric values in the last component. Cannot predict previous revision for this");
return null;
}
if (revComponents.length == 2 && lastComp == 1) {
log.debug("Revision: " + currentRevision + " is the first revision for the current file. Cannot go further back");
return null;
}
StringBuilder result = new StringBuilder();
if (lastComp == 1) {
for (int i = 0; i < revComponents.length - 2; i++) {
if (result.length() > 0)
result.append('.');
result.append(revComponents[i]);
}
} else if (lastComp > 1) {
for (int i = 0; i < revComponents.length - 1; i++) {
result.append(revComponents[i]);
result.append('.');
}
result.append((lastComp - 1));
} else {
log.warn("Found invalid value for last revision number component in " + currentRevision);
return null;
}
return result.toString();
}
上面的代码也处理分支修订,例如,如果当前修订版(图片中)是分支上的第一个修订版,它将返回从该文件的分支创建的修订版。
希望这有帮助。