代码之家  ›  专栏  ›  技术社区  ›  waiwai933

修订版本号

  •  2
  • waiwai933  · 技术社区  · 15 年前

    我从来没有和风投合作过,所以如果我犯了任何根本性的错误,请纠正我。

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

    5 回复  |  直到 15 年前
        1
  •  6
  •   Pekka    15 年前

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

    是的,这是可能的。参见 Does Subversion have Changesets? 来自官方常见问题解答。

    另外,如果一个签入没有编译…修订号会增加吗?

    通常首先测试测试环境中的当前状态是否编译,然后检查是否编译。

    您可以使用 pre-commit hook 运行测试,在这种情况下继续签入。

        2
  •  4
  •   Tyler McHenry    15 年前

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

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

        3
  •  2
  •   Wim    15 年前

    修订号为 原子的 这意味着它适用于一次提交所做的全部更改,每次增加一个修订号。

    无论是否编译,修订号都会增加,因为Subversion不知道您的特定技术堆栈,也不与之关联,以确定是否成功构建。

    如果不在本地编译,您通常不会提交。如果你这样做了,你就“破坏了建筑”,应该把钱投进“基蒂”队。;-)

        4
  •  2
  •   Tim Long    15 年前

    Subversion提交是事务性的。要么整个提交成功,要么整个提交失败。如果提交成功,则修订号将递增。所以,不管提交包含多少文件,整个提交都会导致修订号增加1。

    Subversion无法知道代码是否编译。因此,如果提交了损坏的代码,那么提交了损坏的代码,但修订号仍然在增加。你不能撤销承诺(至少,不容易,也不会造成相当大的不便)。

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

        5
  •  1
  •   bta    15 年前

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

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

    更多信息,我强烈建议阅读(免费)官方颠覆书籍 "Version Control with Subversion" . 这是一个简单的阅读,包含几乎所有你想知道的关于颠覆,并有很多例子。

    推荐文章