我们目前正在进行工作讨论,我正在寻找有关SVN设置的一些建议。
我们的模式是我们在SVN中检查了各种项目,其中一些项目依赖于其他项目。例如,FooWebServices依赖于FooCommons。
如果我正在处理需要更改FooWebServices和FooCommons的功能,我希望能够在这两个项目中进行原子提交。如果我以某种方式搞砸了并且FooWebServices的提交失败了整个蜡球都失败了。这样我就不会搞砸任何其他开发人员,或者在追踪我遇到的任何问题时不得不退出变更。 CI服务器似乎也经常变得混乱。
我可以对我们的repo的root(然后是FooWebServices和FooCommons)进行浅层检查并获得此行为。然后我可以得到原子提交行为。
情况很复杂,因为我们的承包商也在存储库中工作。目前,他们无法检查root的浅层副本,因此无法获得该行为。
我想进行设置,以便承包商可以查看root,FooWebServices和FooCommons,而不是其他内容。我还想阻止他们浏览root以查看我们未授予他们访问权限的项目。
这可能吗?我是否过度复杂化问题并且原子提交甚至不是必需的?
答案 0 :(得分:0)
我认为这太复杂了 - 并且耦合了。
你应该不有双向关系;如果你这样做,你就会遇到更大的问题。 (在这种情况下,他们实际上只是一个项目。)
应避免循环。通过良好的接口解决它们。
相关项目的更好方法可能是具有单向依赖性。如果项目A依赖于B,您可以处理项目B,提交更改,然后创建添加到项目A的JAR文件。
这种方法的优点在于A的变化不需要强制部署B;它可以通过继续使用旧的JAR来接受对A的更改,直到升级时为止。