Мерзавец: Как фиксировать в ответвление SVN после переосновы?

У меня есть проблема с ответвлением SVN. Я сделал контроль из него с git checkout -t -b stable svn/stable. Затем я сделал слияние с git rebase master. После этого я пытался фиксировать изменения слияния в удаленное ответвление с git svn dcommit

Но теперь это кажется, что Мерзавец продвинул изменения в соединительную линию вместо ответвления :(

И git status говорит мне:

# On branch stable
# Your branch and 'svn/stable' have diverged,
# and have 218 and 52 different commit(s) each, respectively.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
...

Кто-то знает то, что я сделал неправильно и как сделать его правильно?

6
задан P Shved 17 February 2010 в 17:55
поделиться

2 ответа

Я бы не пытался сравнивать Perl и Python слишком много, чтобы выучить Python, тем более что у вас есть рабочие знания других языков. Если вы не знакомы с аспектами программирования OOP/Functional и просто хотите работать процедурно, как в Perl, начните изучать конструкции/синтаксис языка Python, а затем сделайте пару примеров. если вы делаете переход на OO или функциональный стиль парадигмы, я бы прочитал на OO основы, а затем начать на Python синтаксис и примеры... так что у вас есть своего рода ментальный план того, как вещи могут быть построены, прежде чем вы начнете работать с фактическими материалами. это просто мое смиренное мнение, однако..

-121--1041187-

Вопрос, который следует задать себе: есть ли что-либо о типе перечисления в C #, что указывает на то, что я должен относиться к нему иначе, чем ко всем другим типам, которые я создаю?

Если перечисление является открытым, оно должно рассматриваться как любой другой публичный тип. Если класс является частным, объявите его вложенным членом класса с его помощью. Нет веской причины помещать два открытых типа в один и тот же файл только потому, что один из них является перечислением. Тот факт, что это публичный тип, имеет большое значение; аромат типа не имеет.

-121--651632-

Недавно я столкнулся с той же ошибкой. Дело в том, что при ребазе к мастеру он сначала жестко сбрасывает текущую ветвь к мастеру, а затем применяет к нему фиксы, которые объединяются. Но главная ветвь связана с svn/trunk , и, таким образом, новая ветвь сброса также становится связанной с ней. Поэтому git-svn на dcommit считает, что фиксаторы «вставляются» в svn/trunk при нажатии на них.

Решение заключается в использовании git merge --no-ff вместо git rebase . Или использовать средства слияния самой Subversion.

2
ответ дан 17 December 2019 в 20:31
поделиться

Теперь это работает, я сделал это так:

   git checkout master
   git svn rebase
   git checkout --track -b svn_stable svn/stable
   git merge --squash master
   git commit -m "Bring stable up-to-date with trunk" 
   git svn dcommit --dry-run
   git svn dcommit

Слияние было намного проще, чем перебазирование с обработкой конфликтов.

В этой попытке я забыл использовать - no-ff , это вызывает фиксацию для каждого слияния, верно?

Спасибо за вашу помощь :)

0
ответ дан 17 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

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