LINUX.ORG.RU

Выделить дельты кода по девелоперам

 


0

3

Есть исходные тексты некоей программы, хранящиеся на Git, есть две ревизии - на начало периода и на конец периода.

Нужно составить списки изменений (т.е. как бы diff, только надо учитывать возможность переименования файлов), причем для каждого девелопера - отдельно (если код какого-то чанка правился двумя девелоперами, то такой чанк идет в зачет каждому девелоперу).

Вопрос - как организовать получение таких патчей, разбитых по девелоперам?

(я подозреваю что-то типа git diff -M, но хотелось бы больше конкретики)

UPD: вот тут предлагают как считать статистику: http://habrahabr.ru/qa/3461/

но мне надо не это, мне нужны именно патчи (т.е. со строками нового кода)



Последнее исправление: maxcom (всего исправлений: 4)
Ответ на: комментарий от maxcom

не совсем. Дело в том, что между двумя исходными версиями - много коммитов. Мне нужно не их последовательный список, а суммарный патч (т.е. если кто-то что-то вписал, а другой потом стер и следов не осталось, то такого кода в патче быть не должно)

StrongDollar
() автор топика
Ответ на: комментарий от StrongDollar

Вам нужно смотреть в сторону git diff + git rev-list. Команда будет выглядеть как-то так:

git diff $(git rev-list ...)

KennyMinigun ★★★★★
()
Ответ на: комментарий от StrongDollar

Пока самое лучшее приближение получается с помощью:

git show $(git rev-list --author="author@example.com" --since="last month" master)

Теоретически получить корректный дифф - в такой ситуации не представляется возможным, ибо история может быть и такой:

  commit1   author1@example.com
  commit2   auther2@example.com
  commit3   author1@example.com
И commit3 зависит от commit2, и без мержа commit2 не выкинуть.

UPD Упс, похоже команда вверху легко заменяется на git log -p :)

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от StrongDollar

Вот так можно получить диффы коммитов без сообщений:

git log -p --author='author@example.com' --since="last month" --pretty="format:" master

С виду - похоже на патч.

KennyMinigun ★★★★★
()
Ответ на: комментарий от KennyMinigun

Теоретически получить корректный дифф - в такой ситуации не представляется возможным, ибо история может быть и такой

в постановке задачи я рассмотрел этот случай

StrongDollar
() автор топика

Может быть можно сделать diff для всего, а затем через blame получить для каждой новой строки в diff автора?

В чем смысл именно патчей, если они никуда прикладываться не будут?

kamre ★★★
()
Ответ на: комментарий от kamre

В чем смысл именно патчей

для регистрации в соответствии с
ГК РФ, часть четвёртая, «Глава 70. Авторское право» Ст. 1261 и Ст. 1262

StrongDollar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.