2013-02-08 2 views
12

После запуска git filter-branch, как мне получить список старых команд SHA, переписанных веткой фильтра, в их новые соответствующие SHA?Как получить список старых-> новых перезаписанных SHA-ключей из 'git filter-branch'?

Например, что-то подобное:

b19fd985746c1f060f761d42d353e387bec243fb -> c8ab40ef9bae3b58642a8d1e5b90720d093a60b5 
c5ebba1eeb92ca76c0effa32de14178ec7f07db6 -> 4d5a9958b98dbcfa47ce1354bb2af4cc77904639 
705f71543235b872ca3e1067538e36d14044429d -> d2aafbd6e5b91955b62dee34f4a0abf0171ba016 

Где левая колонка список оригинальных ПОР, а правый столбец являются новыми ШАС после переписан фильтра-ветвь.

Я вижу, что man page для ветви фильтра ссылается на функцию map, но я не понимаю, полезно ли это здесь, или если это так, как ее использовать.

Благодарим за помощь!

ответ

18

Мне нужно было прокручивать источник для git-filter-branch, чтобы работать с этим. Он не документирован (насколько я могу судить), но старый идентификатор фиксации явно экспортируется как $GIT_COMMIT. Это работает для меня:

$ git filter-branch --your-filters-here --commit-filter 'echo -n "${GIT_COMMIT}," >>/tmp/log; git commit-tree "[email protected]" | tee -a /tmp/log' your-branch-here 
[...] 
$ cat /tmp/log 
70d609ba7bc58bb196a2351ba26afc5db0964ca6,d9071b49743701c7be971f76ddc84e76554516c7 
0d1146dcabc00c45fb9be7fe923c955f7b6deb50,cb6813f9aca5e5f26fcc85007c5bb71552b91017 
[...] 

(Этот файл, конечно, имеет формат <original commit hash>,<new commit hash>.)

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

+0

Awesome, большое спасибо !! Я почему-то печатался, поэтому я понял это. Я не возражаю против выхода на чередующиеся линии. Не беспокойтесь, это * не * публичное репо. :-) –

+0

О, и кажется, что документ $ GIT_COMMIT документирован: «переменная среды $ GIT_COMMIT будет установлена ​​так, чтобы содержать идентификатор переписываемого коммита» –

+0

А, хорошо. Это обнадеживает - меня гораздо меньше беспокоит то, что это просто волшебным образом перестанет работать со следующим выпуском Git. :-) – impl

 Смежные вопросы

  • Нет связанных вопросов^_^