Когда я запускаю git svn fetch
, он иногда печатает следующее предупреждение:
W:svn cherry-pick ignored (/path/in/svn:<svn revision number list>) missing 55 commit(s) (eg 9129b28e5397c41f0a527818edd344bf264359af)
О чем это предупреждение?
Когда я запускаю git svn fetch
, он иногда печатает следующее предупреждение:
W:svn cherry-pick ignored (/path/in/svn:<svn revision number list>) missing 55 commit(s) (eg 9129b28e5397c41f0a527818edd344bf264359af)
О чем это предупреждение?
Когда кто-то выполняет "слияние вишни" с 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. Это вызывает это предупреждение.