我想知道是否可以为具有两个不同来源的特定文件夹设置一个SVN颠覆系统(顺便说一句,我在Ubuntu 11.10上)并同时跟踪更改?
情况如下:
有一个定期更新的开源项目(来自svn:// ...)。我用它作为基础来添加我需要的一些功能。我无权在开发人员svn中提交我的更改或进行分支或其他类似的事情。
修改我的代码我跟踪我通过本地svn修改的内容(file:/// usr / ...)
我想做的是不时将我的版本与官方更新合并,但仍保留我个人的本地服务。我该如何设置?
或者更容易拥有SVN(官方颠覆)和其他一些像Git这样的系统?
p / s /我只在Eclipse中使用Subclipse插件处理代码。
UPDATE1:
通过SVN书,我应该如何在我的案例中建立一个分支:
初次导入:
svn import /path/to/3rd-party-code \
file:///usr/.../vendor/name/current \
-m "importing initial 1.0 vendor drop"
标记:
svn copy file:///usr/.../vendor/name/current \
file:///usr/.../vendor/name/1.0 \
-m "tagging name-1.0"
带到行李箱:
svn copy file:///usr/.../vendor/name/1.0 \
file:///usr/.../trunk/ \
-m "bringing name-1.0 into the trunk"
然后从主干结账并开始修改。 那么,事情如何随着“外部”而改变?
更新2:
这是一切应该从头开始的方式:
svnadmin create /usr/.../svnrepo
svn import svn://path/to/3rd-party-code \
file:///usr/.../svnrepo/name/branch/official \
-m "importing initial XXXX rev. vendor drop"
svn copy file:///usr/.../svnrepo/name/branch/official \
file:///usr/.../svnrepo/name/trunk \
-m "bringing rev XXXX into the trunk"
svn propedit svn:externals svn://path/to/3rd-party-code name/branch/official
融合:
svn merge -r XXXX:HEAD name/branch/official
svn ci -m "Merged YYYY official revision to trunk"
更新3:
svnadmin create /usr/.../svnrepo
svn mkdir -m "Create folders" \
file:///usr/../svnrepo/name/branches \
file:///usr/../svnrepo/name/branches/official \
file:///usr/../svnrepo/name/trunk
的外部对象:
svn propedit svn:externals file:///usr/.../svnrepo/name/branches/official
(输入“svn:// path / to / 3rd-party-code”)
svn copy file:///usr/.../svnrepo/name/branches/official \
file:///usr/.../svnrepo/name/trunk \
-m "bringing rev XXXX into the trunk"
现在,问题是当我“合作”主干时,我得到以下结构:
official/svn:externals/folder1/file1
这是我不想要的东西:)
融合:
svn merge name/branches/official
svn ci -m "Merged YYYY official revision to trunk"
答案 0 :(得分:0)
SVN book一章中的vendor branches描述了您的情况。如果开源项目也使用SVN存储库,您还可以利用externals functionality。
答案 1 :(得分:0)
具有两个不同来源的文件夹并同时跟踪更改?
SVN无法做到这一点 - WC 一个回购的一个路径
但你的任务可以用svn:externals和“Vendor Branches”策略来涵盖: