当前位置:  开发笔记 > 开发工具 > 正文

针对不同程序开发的库的Subversion存储库布局

如何解决《针对不同程序开发的库的Subversion存储库布局》经验,为你挑选了1个好方法。

我负责几个(相当小的)程序,它们通过不同的库共享大量代码.我想知道最好的存储库布局是什么来开发不同的prorgrams(和库),并使库在所有程序中保持同步.

为了论证,我们假设有两个带有两个库的程序:

PROGRAM1

LIBRARY1

Library2

程序2

LIBRARY1

Library2

当然,库的错误修复和增强应该(最终)合并到所有程序.由于在处理不同程序时正在处理这些库,因此使用外部定义似乎是不可能的.

所以我想把我的库除了一个地方作为供应商分支处理,但我不确定这个的最佳布局是什么.

我正在思考以下问题:

图书馆

图书馆1(祖先)

图书馆2(祖先)

PROGRAM1

Program1代码

Library1(供应商分支)

Library2(供应商分支)

...

然后说在开发Program1时对Library2进行了一些更改,我将它们合并回存储库的Libraries部分,并在需要时将它们从那里合并到所有其他程序.

合并到其他程序并不总是立即发生,在Program2上工作的人可能接近发布,而是首先完成,创建标记,然后才更新所有库.

我有点担心这会在很长一段时间后导致许多合并和一些维护问题,但我真的没有看到更好的解决方案.

再说一次,这似乎是一个相当常见的用例,所以我想我只是问一下stackoverflow社区,实现这个目的的最佳存储库布局是什么?



1> paxos1977..:

好吧,我想我不同意外部是不可能的.我过去也遇到过类似的问题.我使用svn属性externals解决了它.

创建库存储库:

svnadmin create /path/library1
svnadmin create /path/library2
...

创建客户端存储库:

svnadmin create /path/program1
svnadmin create /path/program2
...

现在将库声明为程序存储库中的外部库:

cd /path/program1
svn propset svn:externals "library1 svnpath://wherever/library1/trunk/" .
svn propset svn:externals "library2 svnpath://wherever2/library2/trunk/" .

现在,您可以对程序1和2进行更改,并且在这些项目的根目录下进行提交不会影响库...但是,如果您需要对库进行更改,则可以.然后当且仅当您对库存储库具有写权限时,您也可以提交这些更改 - 但仅限于库的子目录.

即这不是对图书馆的承诺......

... make a change in /path/program1/library1 ... 
cd /path/program1
svn commit -m "some change"

这将提交上面库中所做的更改:

cd /path/program1/library1
svn commit -m "change to library code"


Pieter,没有对库进行更改不会强制更改所有程序.如果您需要"挂起"到旧版本的库,请将外部设置为标记版本(或使用--revision的特定版本).即使您检查后备箱,也不必推高更改.
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有