2012-01-10 3 views
1

perforce имеет очень полезную команду, которая печатает все изменения файла, с аннотациями, указывающими, какие версии содержат каждую строку в файле. Например, скажем, я создаю файл foo, проверяю его, а затем проверяю два последующих изменения файла. Вот три версии обув:Что такое git, эквивалентный 'p4 annotate -a'?

aaa   aaa   aaa 
bbb   bbb   bbb 
ccc   ccc   ccc 
       ddd   ddd 
       eee   fff 
       fff 

Вот что p4 аннотировать -a печатает:

1-3: aaa 
1-3: bbb 
1-3: ccc 
2-3: ddd 
2-2: eee 
2-3: fff 

Я вижу всю историю обув с аннотациями, указывающими, какие версии, содержащиеся в каждой строке.

AFAICT, git wame дает только последнюю версию, содержащую каждую строку. git log with pickaxe только печатает строки, соответствующие шаблону, и дает сообщения фиксации, а не строки в самом файле.

Есть ли способ сделать что-то похожее на вышеупомянутую команду perforce в git?

Спасибо заранее,

Грег

ответ

1

Там нет ничего непосредственно эквивалент в Git - с Git не имеет линейную историю, что-то вроде 1-3 не будет иметь смысла.

+0

«мерзавец файл журнала -ную SEARCH_STRING '» использует GIT функциональность кирки, и что-то делает с мерзавцем направленный ациклический граф отношение к «файл», как Я понимаю. Я надеялся на что-то подобное, но с выходом в терминах файловых строк вместо сообщений git commit. – user691307

+0

'git log -S' находит коммиты, которые вводят или удаляют указанную строку. Это просто фильтр истории. Возможно, вы сможете передать указанные изменения в 'git blame', а затем' grep' для строк в выводе вины, которые также содержат строку ... – Amber

0

Вы можете использовать git blame для этого, я полагаю - он покажет фиксацию источника для каждой строки.

Это, вероятно, не совсем то, что вы хотите, но это шаг в правильном направлении. Вы можете объединить этот вывод с выходом от git log и построить результат, который вы хотите.

0

как об использовании git annotate, он может выводить детали аннотаций для каждого файла

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