解决方案中的多个项目与源代码管理中的多个项目

时间:2011-02-07 18:06:29

标签: visual-studio version-control

在采用窑一年左右之后,我一直坚持每个视觉工作室项目都有一个源控制项目的惯例。虽然我发现这使得提交保持简洁,并且源代码控制项目非常集中,但它开始导致很多提交实际上是一次更改。

实施例: 我的一个视觉工作室解决方案是这样设置的:

  • App.Core(服务层)
  • App.Core.Tests(测试图层)
  • App.Web.Core(控制器)
  • App.Web.UI(views / js / etc ..)
  • App.Web.Admin(网络管理网站)
  • App.Web.Tests(测试图层)
  • App.ChromeExtension

最终我将添加一个andriod和iphone视图层(可能是monotouch / monodriod)

假设我在服务层一侧添加了一个需要更新界面的功能,然后我必须通过各种Web方法甚至是chrome扩展来传播该更改。这非常简单,但这可能意味着我必须做多达7次不同的提交才能实现单一的“改变”。这也意味着当我切换到笔记本电脑或从我的笔记本电脑切换时,为其他开发人员或我自己拉了很多更改。

处理大型项目的人是否可以评论“最佳”方法是什么?我是否坚持使用多个源代码控制项目,以便每个提交树都超级简洁并处理开销?为简单起见,我是否将所有内容都放在一个源代码控制项我是否在混合中将任何与网络相关的内容合并到一个项目中,以及与另一个项目相关的任何服务?或其他什么?

供参考:该项目由UX开发人员和我自己维护,但将来很容易改变。

(另外:我不确定这是程序员还是stackoverflow值得,并决定转到这里。如果一个mod想要移动它,我没有异议。)

谢谢!

1 个答案:

答案 0 :(得分:2)

只要您具有相互依赖的组件(文件集,此处为解决方案),对一个模块的一次更改必须传播到其他模块,您可以考虑"system" approach (即一个存储库,其中包含所有内容):
如果您认为只有一个模块没有标记而没有在所有其他模块上设置该标记,那就有意义了。

如果这些组件可以彼此独立开发,则可以通过编写脚本来减少提交次数,like in this script 'git-submodule-recur.sh:'(此处为Git):

#!/bin/sh

case "$1" in
        "init") CMD="submodule update --init" ;;
        *) CMD="$*" ;;
esac

git $CMD
git submodule foreach "$0" $CMD

然后在每个子模块中提交一个命令:

git-submodule-recur commit -a -m "some comment"