2009-08-19 2 views
0

Я использую так много репозиториев git-svn (в то же время), что это становится основной задачей для их обновления. Я бы хотел написать сценарий, который автоматизирует это, поэтому я могу запускать его каждое утро, пока я приношу кофе.обнаружить конфликты после git-svn rebase

В основном мой рабочий процесс, как это

cd ~/module1 
git svn fetch 
git checkout master 
git svn rebase 

git checkout topicbranch 
git svn rebase 

cd ~/module2 
git svn fetch 
git checkout master 
git svn rebase 

Я уже автоматизировал git svn fetch часть, которая может быть безопасно сделать в любое время. Но небезопасно делать git svn rebase автоматически, так как могут быть конфликты.

Как скрипт может выяснить, возник ли конфликт после переустановки? Тогда я мог бы запустить мерзавец перебазироваться --abort и записать строку в файл журнал, так что я могу просмотреть неудачи, когда я вернусь с моим кофе :)

ответ

1

Из того, что я могу собрать из git-svn, git-rebase и git-sh-setup мерзавца выйдет с кодом выхода 1, если rebase не может быть выполнено из-за конфликтов.

+0

Это кажется правильным, хотя оно также будет возвращено 1, если rebase не может быть выполнено, например. в рабочей копии есть незафиксированные изменения. Должен ли я просто запустить git rebase -abort в любом случае? – amarillion

+0

Ну, если rebase нельзя выполнить без взаимодействия, у вас действительно нет выбора, когда он запускается автоматически, не так ли? – Bombe

3

После этого «принести мерзавец СВН», вы можете использовать слияние вместо перебазироваться, чтобы получить последнюю Svn вещей в ближайшее отделение. Если слияние выполнено успешно, вы будете знать, потому что конфликтов нет (которые вы можете найти с помощью таких инструментов, как git ls-files). Если слияние не работает, вы ничего не искалечили и можете просто игнорировать эти изменения верхнего уровня в рабочем дереве.

Затем выполните переустановку как последний шаг перед совершением (если вы хотите, это не обязательно), и вы можете обрабатывать подверженность ошибкам интерактивно только один раз.