为原子提交和受限访问设置SVN

为原子提交和受限访问设置SVN,svn,commit,atomic,Svn,Commit,Atomic,我们目前正在工作中进行讨论,我正在寻求有关SVN设置的一些建议 我们的模式是,我们将各种项目签入SVN,其中一些项目依赖于其他项目。例如,FooWebServices依赖于FooCommons 如果我正在开发一个需要更改FooWebServices和FooCommons的特性,我希望能够跨这两个项目进行原子提交。如果我搞砸了,FooWebServices的提交失败,那么整个蜡球都会失败。这样,我就不会搞砸任何其他开发人员,也不必在跟踪任何问题的同时收回更改。CI服务器似乎也经常感到困惑 我可以对

我们目前正在工作中进行讨论,我正在寻求有关SVN设置的一些建议

我们的模式是,我们将各种项目签入SVN,其中一些项目依赖于其他项目。例如,FooWebServices依赖于FooCommons

如果我正在开发一个需要更改FooWebServices和FooCommons的特性,我希望能够跨这两个项目进行原子提交。如果我搞砸了,FooWebServices的提交失败,那么整个蜡球都会失败。这样,我就不会搞砸任何其他开发人员,也不必在跟踪任何问题的同时收回更改。CI服务器似乎也经常感到困惑

我可以对根目录进行浅层签出,然后在我们的repo下对FooWebServices和FooCommons进行签出,并得到这种行为。然后我可以得到原子提交行为

情况很复杂,因为我们有承包商也在仓库中工作。目前,他们无法签出root的浅拷贝,因此无法获得该行为

我想设置一些东西,以便承包商可以签出root、FooWebServices和foocomons,而无需其他任何东西。我还想阻止他们浏览根目录以查看我们没有授予他们访问权限的项目


这可能吗?我是否将问题过度复杂化,甚至不需要原子提交?

我认为这太复杂了,而且是耦合的

你不应该有一个双向的关系;如果你这样做了,你会遇到更大的问题。在这种情况下,它们实际上只是一个项目

应避免循环。使用位置良好的接口将其分解

对于相关项目,更好的方法可能是使用单向依赖关系。如果项目A依赖于项目B,您可以处理项目B,提交更改,然后创建一个添加到项目A中的JAR文件


这种方法的美妙之处在于,对A的更改不需要强制部署B;只要可以,它就可以接受对JAR的更改,方法是继续使用旧JAR,直到升级时机成熟。

我可能还不够清楚。没有循环。问题是,当您提交的更改专门用于向a添加功能时,您不想提交给B。我认为这没有必要。你把事情复杂化了。