我想知道是否可以为具有两个不同来源的特定文件夹设置一个 SVN 颠覆系统(顺便说一句,我在 Ubuntu 11.10 上)并同时跟踪更改?
情况如下:
有一个定期更新的开源项目(来自 svn://...)。我以此为基础添加一些我需要的功能。我无权在开发人员 svn 上提交我的更改或进行分支或其他类似操作。
修改我的代码我通过本地 svn (file:///usr/...) 跟踪我修改的内容
我想做的是不时将我的版本与官方更新合并,但仍然保留我个人的本地 svn。我该如何设置?
或者拥有 SVN(用于官方颠覆)+ 其他一些系统(如 Git)会更容易吗?
p/s/ 我自己只在带有 Subclipse 插件的 Eclipse 中编写代码。
更新1:
浏览 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"