git svn cherry pick игнорируется предупреждение - PullRequest
32 голосов
/ 24 февраля 2012

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

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

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

1 Ответ

46 голосов
/ 25 февраля 2012

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

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

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

Более подробно:

Допустим, у вас есть хранилище Subversion с двумя ветвями A и B с соответствующим репозиторием Git svn:

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.Вот что вызывает это предупреждение.

...