dcommit в SVN в 1 коммите после выбора вишни в git

Я хотел бы знать, есть ли чистый способ сделать git-svn dcommit нескольких локальных коммитов как 1 коммит в подрывной деятельности.

Ситуация, которая у меня есть, заключается в том, что я выбираю некоторые исправления ошибок из нашего ствола в ветку обслуживания. Предпочтение проекта состоит в том, чтобы исправления ошибок были зафиксированы как 1 фиксация в subversion, но я хотел бы сохранить историю изменений, которые я выбрал в моем локальном git для ссылок.

В настоящее время я занимаюсь сбором вишен в ветви X, а затем выполняю сквош-слияние в новую ветку Y. Затем dcommit будет выполнен из ветки Y.

Есть ли лучший способ сделать это без использования промежуточной ветки?


person DJ.    schedule 28.02.2010    source источник


Ответы (2)


Вы не можете сделать это без использования дополнительных ветвей. Ветка, из которой вы dcommit, будет отражать представление истории SVN после того, как вы dcommit. Если вы хотите сохранить исходное несквашированное представление git с несколькими коммитами, вам нужно будет использовать дополнительную ветку.

(И да, я тоже хочу, чтобы это было неправдой)

person NUXI    schedule 30.03.2010

Вы можете раздавить вещи вместе с git reset --soft или git rebase -i (если это не верхний коммит).

Пример: git reset --soft HEAD~4 && git commit -m 'Bug fixes' объединит 4 последних коммита в один.

person Vi.    schedule 20.03.2010
comment
Как я уже упоминал в исходном вопросе, я хотел бы сохранить историю коммитов в локальном git. Я хочу иметь только 1 коммит в репозитории subversion. Ваш ответ не решает моего вопроса. - person DJ.; 21.03.2010
comment
Какую картинку вы хотите получить в итоге? Вы должны учитывать, что каждый коммит, попадающий в SVN, получает отметку git-svn-id в сообщении коммита и может иметь только 1 родителя, который также является git-svn-id. В транке git-svn вы увидите историю, как в SVN. Локальная история коммитов неизбежно будет находиться в отдельной ветке. - person Vi.; 22.03.2010