代码之家  ›  专栏  ›  技术社区  ›  Chuck Vose

使用奇数分支结构时Git SVN分支软管数据限制

  •  3
  • Chuck Vose  · 技术社区  · 15 年前

    我有个老板,过去时,他决定把svn分支放在和trunk相同的文件夹中。通常情况下,这不会对我有太大影响,但因为我在使用Git SVN,所以一切都进展顺利。在我提取之后,它为根文件夹中的每个分支创建了一个文件夹,所以我有三个文件夹:drupal、trunk和client。Drupal文件夹是Git的主分支,客户机和主干是SVN分支。

    合并和提交工作非常好,事实上所有与Git相关的工作都非常出色。然而,dcommit是完全托管的,它试图提交一个名为client和trunk的文件夹。我甚至无法想象这会给SVN带来什么样的破坏。

    所以我的问题是,我在.git/config中做了什么错误,我能做些什么来解决这个问题,还是我必须忍受痛苦,然后重新使用svn?

    请不要逼我回去。我想我再也受不了了。混蛋老板知道如何留下遗产。

    [svn-remote "svn"]
            url = https://svn.mydomain.com/svn/project_name
            fetch = trunk:refs/remotes/trunk
            branches = *:refs/remotes/*
            tags = tags/*:refs/remotes/tags/*
    

    通常,分支行如下所示(使用--stdlayout时):

    branches = branches/*:refs/remotes/branches/*
    

    因此,LS输出为:

    $ ls
    client/ docs/ drupal/ sql/ trunk/
    

    Git -输出:

    * master
      trunk
      remotes/git-svn
      remotes/trunk
    
    2 回复  |  直到 13 年前
        1
  •  2
  •   dlamotte    15 年前

    我认为当你改变的时候你打破了你的.git/config:

    branches = branches/*:refs/remotes/*
    

    branches = *:refs/remotes/*
    

    把你的.git/config改回原来的样子。然后添加一个新的遥控器(我从这个页面发现的, http://www.dmo.ca/blog/20070608113513/ )类似于此格式,但替换为服务器的信息:

    [svn-remote "svn34"]
        url = svn+ssh://your-server/home/svn/project-name/branches/3.4.x
        fetch = :refs/remotes/git-svn-3.4
    

    请注意添加新的“遥控器”以跟踪新分支的区别。您当前的遥控器不能用于跟踪不同的分支(从git svn文档中可以看出)。

        2
  •  1
  •   Max Nanasy    13 年前

    如果您不介意每次添加分支时编辑.git/config,则可以使用glob set语法(http://www.kernel.org/pub/software/scm/git/docs/git svn.html u配置):

    fetch = trunk:refs/remotes/trunk
    branches = {client,drupal}:refs/remotes/*