Svn Subversion版本号

Svn Subversion版本号,svn,version-control,revision,Svn,Version Control,Revision,我从未与风投合作过,因此如果我犯了任何基本错误,请纠正我 对于我的一个项目,我选择使用Subversion,并且我一直在阅读文档。如果我理解正确的话,每次签入时修订号都会增加。然而,这带来了一个问题。是否可以一次签入多个文件(因此增量仅为一个)?另外,如果签入没有编译。。。修订号会增加吗 是否可以一次签入多个文件(因此增量仅为一个) 是的,这是可能的。请参阅官方常见问题解答 另外,如果签入没有编译。。。修订号会增加吗 您通常会首先测试测试环境中的当前状态是否编译,并检查是否编译 您可以使用运行您

我从未与风投合作过,因此如果我犯了任何基本错误,请纠正我

对于我的一个项目,我选择使用Subversion,并且我一直在阅读文档。如果我理解正确的话,每次签入时修订号都会增加。然而,这带来了一个问题。是否可以一次签入多个文件(因此增量仅为一个)?另外,如果签入没有编译。。。修订号会增加吗

是否可以一次签入多个文件(因此增量仅为一个)

是的,这是可能的。请参阅官方常见问题解答

另外,如果签入没有编译。。。修订号会增加吗

您通常会首先测试测试环境中的当前状态是否编译,并检查是否编译

您可以使用运行您的测试的自动化,在这种情况下,签入将继续进行。

修订号是原子的,这意味着它将应用于一次提交的整个更改,一次增加一个修订号

无论是否编译,版本号都会增加,因为Subversion不知道或与您的特定技术堆栈没有任何关联,因此无法确定是否成功构建


如果它不在本地编译,通常不会提交。如果你这样做了,你就“破坏了结构”,应该把钱投到团队“基蒂”身上

是的,您可以一次签入多个文件,这只会使修订增加1


在你的第二个问题中,我认为你的意思不是“编译”,因为版本控制系统并不关心它们控制的代码是否可编译。我想你的意思是“承诺”。在这种情况下,答案是subversion提交是原子的。它们要么完全起作用,要么完全失败。不可能尝试多文件提交并使某些文件成功,但使其他文件失败。失败的提交不会增加修订号。

Subversion提交是事务性的。要么整个提交成功,要么整个提交失败。如果提交成功,则修订号将增加。因此,整个提交过程,无论包含多少文件,都会导致修订号增加1

Subversion无法知道您的代码是否编译。因此,如果您提交了损坏的代码,那么您提交了损坏的代码,但是修订号仍然会增加。您不能回滚提交(至少不容易,也不是没有相当大的不便)


如果您需要构建服务器,我可以推荐。TeamCity附带了一个VisualStudio插件,允许您执行“预测试提交”。也就是说,您将代码提交给TeamCity构建服务器,该服务器构建代码。如果(且仅当)构建成功,TeamCity会将您的更改提交给Subversion。如果构建失败,TeamCity会通知您,并且不会提交代码。它工作得很好,有助于防止对损坏的版本进行禁运:)

一些版本控制系统对每个文件使用修订号。Subversion对整个存储库使用单个修订号。当您执行提交时,可以让Subversion提交您对单个文件、多个文件,甚至是自上次签出以来已更改的每个文件所做的更改(请参阅
svn add
svn revert
svn commit
的文档)。Subversion将提交视为一个原子事务;也就是说,无论您提交了多少个文件,它们都是在一个操作中提交的,该操作要么完全成功,要么完全失败(在这种情况下,存储库不会被修改)。每次发出commit命令时,整个存储库的修订号都会增加

Subversion不知道您的代码是否编译,因此没有任何东西可以阻止您签入错误代码。您可以使用Subversion存储任何类型的文件,而不仅仅是源代码,因此Subversion不会尝试验证您签入的任何文件的功能(因为尝试“构建”一个充满文本文件的存储库是没有意义的,而且服务器无法可靠地猜测您的构建系统或如何编译代码)。也就是说,无论何时尝试提交但在处理事务之前(称为预提交挂钩),都可以告诉Subversion服务器运行脚本。有些人将此功能用于尝试构建源代码(包括传入的更改)的脚本。如果脚本无法构建源代码,它将返回一个错误,Subversion将拒绝该事务(在您这边,您将看到提交操作失败)。自动构建源代码并不是默认情况下内置到Subversion中的东西,但是如果您感兴趣的话,添加它也不太困难


要了解更多信息,我强烈建议阅读(免费)官方颠覆书籍。它很容易阅读,包含了几乎所有你想知道的关于Subversion的信息,并且有很多例子。

它通常被称为“版本控制系统”或VCS。CVS是一个VCS程序。困惑了吗?我是!该喝杯咖啡了,咖啡?今天是星期五晚上。喝杯该死的啤酒@Wim Hollebrandse:对我来说,再过4个小时也不行。老实说,在预提交挂钩上设置编译步骤就是滥用预提交挂钩。你不会希望在每次提交之前编译你的代码库,这太疯狂了。你自己在本地做。过程和自动化一样都是其中的一部分。@Wim,“编译”在这里是一个非常宽泛的术语,因为这里没有提到平台、语言和环境。如果它只是运行一些测试或构建一个包,那么它可能是合理的。不过,总的来说,在大多数情况下,您是对的。@Pekka:post-commit构建过程在我看来更有用。@Paul,您能回滚一个