SVN和修订号

时间:2009-06-10 10:08:42

标签: svn version-control cvs

假设我在修订版1中有3个文件foo.txt,bar.txt和moo.txt。

假设我提交了foo.txt和bar.txt十次。所以他们正在修改1.10。由于在SVN中存在单个修订版,因此moo.txt也必须处于修订版1.10。现在,如果我看到moo.txt的历史,我会看到1到10的提交历史吗?

我问这个问题的原因是我告诉我的朋友,与SVN相比,CVS是多么糟糕。他是CVS的忠实粉丝。所以他告诉我,因为CVS版本号是特定于文件的,所以很容易将单个文件带回某些状态(因为单个文件的历史记录不包含对项目其他部分的提交)。由于我总是将整个项目更新为以前的版本(不是单个文件),因此我从未遇到过这种情况。所以,我想知道在SVN中如何处理它?<​​/ p>

5 个答案:

答案 0 :(得分:2)

当您查看文件的历史记录时,您将只看到包含该文件的提交的注释和更改,但修订版号不一定是连续的。

但您仍然可以将单个文件还原为任何特定的修订版号,而不会影响其他文件。

E.g。

两个文件:
foo.txt和bar.txt

1:checkin foo.txt
2:checkin foo.txt&amp;跳回到bar.txt
3:checkin foo.txt
4:checkin bar.txt
5:checkin foo.txt
6:checkin bar.txt

如果你看一下酒吧的历史,你会看到:

6:
4:
2:

你仍然可以将bar.txt恢复到版本2而不会影响foo.txt

如果你看一下foo的历史,你会看到:

5:
3:
2:
1:

如果查看整个目录的历史记录,您将看到所有提交。

拥有一个存储库范围的版本号只意味着您可以从修订版号中了解更改内容的顺序。它不会影响您查看历史记录或回滚文件的能力。

答案 1 :(得分:1)

可以按文件或按目录查看SVN历史记录,因此您将看到与您要查找的过滤器匹配的任何文件的历史记录。如果您只查看moo.txt的历史记录,那么您将只看到它的更改(在您的示例中可能是3-12)。

另外值得指出的是,SVN允许多个文件的原子提交,因此您可能在版本2的单个更改中将foo.txt和moo.txt一起提交。在这种情况下,您还会看到这在moo.txt的更改历史中。

但实际上,我认为正确的答案只是安装SVN并自行测试。然后,您将更好地了解更改历史记录的工作原理。

答案 2 :(得分:0)

这很容易测试。如果您查看单个文件的历史记录,它将仅包含其中一部分的修订版本。如果未修改,则不会显示日志条目。您可以轻松地还原单个文件或一组文件的特定修订。

答案 3 :(得分:0)

SVN使用存储库范围的修订号,每次提交时都会增加。当您查看单个文件的日志时,您将只看到该文件的修订版,但版本编号中会有间隙。)

答案 4 :(得分:0)

你可以把它想象成moo.txt确实有文件特定的修订,它只是有间隙,例如,moo.txt的修订版本是1,10,11,18等。

实际上,这并不比处理1,2,3,4,5更难处理,但是具有对整个存储库有意义的附加优势。