Используя мерзавца-svn, чтобы объединить svn переходят назад в соединительную линию и соединить магистралью назад в ответвление

Таким образом, я использую мерзавца и взаимодействую с svn repo.

У меня есть СОЕДИНИТЕЛЬНАЯ ЛИНИЯ svn, которая похожа на это:

A-B-C-D

И svn bug_fixes ответвление, которое отклоняется в фиксации B или C:

 -c-d-e-f-g-h-i

Теперь я должен получить фиксации cdefghi, которые находятся в моем ответвлении svn назад в основное ответвление.

Я знаю, что мог просто сделать раздавленную фиксацию, давайте назовем ее СКВОШЕМ сквоша (который содержал бы cdefghi), но тогда кажется, что я должен был бы уничтожить bug_fixes, переходят и запускают новое ответвление для чистого продолжения.

Здесь: http://blog.red-bean.com/sussman/?p=92 они предлагают:

checkout ответвление.

merge изменения ведущего устройства в ответвление.

Checkout ведущее устройство.

merge --reintegrate изменения ответвления на ведущее устройство.

Продолжите разработку.

К сожалению, мерзавец-svn, кажется, не распознает, что любое "слияние - повторно интегрирует" команду для svn.

Таким образом, как я чисто делаю ответвление, и ведущее устройство имеют все фиксации, так, чтобы разработка на обоих могла продолжиться, с помощью команд мерзавца-svn's?

11
задан Kzqai 29 January 2010 в 19:45
поделиться

4 ответа

Раздел Предостережения в документации git-svn предупреждает

Для простоты и взаимодействия с менее функциональной системой (SVN) рекомендуется, чтобы все git svn пользователи clone , fetch и dcommit непосредственно с сервера SVN, избегая всех git clone / pull / merge / push операции между репозиториями и ветвями git.

Автор дает рекомендацию:

Рекомендуемый метод обмена кодом между ветвями git и пользователями - git format-patch и git am , или просто dcommit в репозиторий SVN.

Адаптация к вашей ситуации

git format-patch --stdout c^..i >my.patch
git reset --hard trunk
git am <my.patch

где c и i - подходящие идентификаторы для коммитов в вашей истории.

7
ответ дан 3 December 2019 в 08:55
поделиться

Официальная иерархия классов:

Существуют также некоторые диаграммы классов. Это действительно большой, вам нужен плоттер, чтобы напечатать это в размере, который является читаемым:

-121--4293860-

Не будет ли это хорошим случаем для перегруппировки вашего локального материала ( < branchpoint >.. i ) на новый мастер, выбранный из SVN?

1
ответ дан 3 December 2019 в 08:55
поделиться

ОК, поэтому несколько подходов, которые я обнаружил:

git checkout your_branch
git rebase master
git checkout master
git merge your_branch

или

git checkout your_branch
git rebase master
git checkout master
git merge --squash your_branch

или

git checkout your_branch
git rebase master
git checkout master
git rebase -i your_branch

, а затем после всего этого.

git svn dcommit (to commit to master)
git branch -D your_branch

Затем (от SVN, потому что GIT-SVN не поддерживает удаление) Удалить ветку, и воссоздайте его из багажника и начните цикл снова и снова.

3
ответ дан 3 December 2019 в 08:55
поделиться

Если вы фиксируете слияние, оно автоматически разбивает его на 1 коммит. К сожалению, он не использует svn:mergeinfo или --reintegrate, как следовало бы, поэтому вы теряете связь с веткой, созданной с помощью 'git svn branch'.

1
ответ дан 3 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: