Git-SVN ветви шланги dcommit при использовании нечетной структуры ветви - PullRequest
3 голосов
/ 05 мая 2010

У меня был босс прошедшего времени, который решил поместить ветки svn в ту же папку, что и транк. Обычно это не сильно меня затрагивает, но, поскольку я использую 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 -a вывод:

* master
  trunk
  remotes/git-svn
  remotes/trunk

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Я думаю, что вы изменили свой .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).

1 голос
/ 11 июля 2012

Если вы не против редактировать .git / config каждый раз, когда добавляется ветвь, вы можете использовать синтаксис glob set (http://www.kernel.org/pub/software/scm/git/docs/git-svn.html#_configuration):

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