使用svn:external分支设置本地SVN进行合并(从头开始)

时间:2012-01-17 15:50:10

标签: eclipse git svn svn-externals

我想知道是否可以为具有两个不同来源的特定文件夹设置一个SVN颠覆系统(顺便说一句,我在Ubuntu 11.10上)并同时跟踪更改?

情况如下:

  1. 有一个定期更新的开源项目(来自svn:// ...)。我用它作为基础来添加我需要的一些功能。我无权在开发人员svn中提交我的更改或进行分支或其他类似的事情。

  2. 修改我的代码我跟踪我通过本地svn修改的内容(file:/// usr / ...)

  3. 我想做的是不时将我的版本与官方更新合并,但仍保留我个人的本地服务。我该如何设置?

    或者更容易拥有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"
    

2 个答案:

答案 0 :(得分:0)

SVN book一章中的vendor branches描述了您的情况。如果开源项目也使用SVN存储库,您还可以利用externals functionality

答案 1 :(得分:0)

  

具有两个不同来源的文件夹并同时跟踪更改?

SVN无法做到这一点 - WC 一个回购的一个路径

但你的任务可以用svn:externals和“Vendor Branches”策略来涵盖:

  • 外部项目的单独分支,定义为svn:externals(不使用URL中的PEG修订版)
  • 您的开发发生在trunk
  • 分支(在使用新修订更新后)定期合并到主干