Подтвердить что ты не робот

Git svn предупреждение о вишневом игнорировании

Когда я запускаю git svn fetch, он иногда печатает следующее предупреждение:

W:svn cherry-pick ignored (/path/in/svn:<svn revision number list>) missing 55 commit(s) (eg 9129b28e5397c41f0a527818edd344bf264359af)

О чем это предупреждение?

4b9b3361

Ответ 1

Когда кто-то выполняет "слияние вишни" с Subversion, Subversion записывает фиксацию, которая была объединена в метаданных для задействованных файлов и папок.

Когда вы выполняете git svn fetch, Git видит, что слияние метаданных, и пытается интерпретировать его как слияние между ветвями Git. Все это сообщение означает, что Git пытался сделать это, но не удалось, поэтому он будет записывать его как регулярное коммитирование, а не слияние.

Это не то, о чем вам нужно беспокоиться, если вы не видите ошибок в том, как Git берет на себя Subversion.

Подробнее:

Скажем, у вас есть репозиторий Subversion с двумя ветвями A и B с соответствующим хранилищем swn Git:

A B   

*    r6
| *  r5
* |  r4
| *  r3
|/     
*    r2
*    r1

Если вы хотите реинтегрировать ветвь B обратно в ветвь A, вы должны использовать команду в ветке A с рабочей копией, например svn merge -r 3:HEAD ^/branches/B или просто svn merge --reintegrate ^/branches/B. Subversion записывала метаданные в тегах svn:mergeinfo, записывая, что это слияние произошло, и ваш следующий git svn fetch увидит эти метаданные, см., Что ветвь B была реинтегрирована в ветвь A и записала соответствующее сообщение в своем история как слияние тоже.

Если вам нужна только одна фиксация из ветки B в ветке A (скажем, r3 добавила нужную вам функцию), но вы еще не хотите реинтегрировать всю ветвь, вместо этого вы должны использовать Subversion команда вроде svn merge -c 3 ^/branches/B. Опять же, Subversion будет записывать метаданные слияния, а Git увидит это и попытается сработать, если он сможет записать слияние ветвей, как в предыдущем примере. В этом случае он не может: ветвь A не содержит ничего похожего на ветку B r5. Это вызывает это предупреждение.