Как мне получить все теги, которые назначены файлу в git? - PullRequest
3 голосов
/ 17 января 2009

Мне нужно указать, какая ревизия / SHA1 файла была связана с одним или несколькими тегами. В CVS можно получить вывод, подобный следующему:

Файл : abc.txt
Rev : 1,0
Метки : R1_0, R1_1

Rev : 1.1
Метки : R1_2

Как вы получаете историю тегов для файла с помощью git?

Edit: Я часто использую эту функцию, чтобы сказать, какая версия файла находится в производстве. Я знаю, какая версия (тег) программного обеспечения находится в производстве. Исходя из этого, я хотел бы знать, какая ревизия данного файла была помечена (а также какие предыдущие теги были связаны с этой ревизией файла).

В моем примере выше:
R1_1 будет в производстве. Запрашивая abc.txt, я могу сказать, что rev1.0 для abc.txt использовался как для R1_0, так и для R1_1. (Таким образом, маловероятно, что ошибка new в R1_1 была вызвана файлом abc.txt, потому что он все тот же файл, что и R1_0)

Ответы [ 3 ]

4 голосов
/ 17 января 2009

Я думаю, вы пытаетесь быть слишком конкретными в буквальном переводе концепций из одной системы контроля версий в другую. Я бы спросил: «Как изменилось abc.txt с R1_1

git log R1_1.. -- abc.txt

Теперь вы знаете две вещи - что это изменилось и как. Бросьте -p, если вы хотите увидеть изменения тоже.

Менее полезно, но то, что вы просили:

Чтобы сделать именно то, что вы просите (что я считаю менее полезным), и при условии, что вы помечаете правильно :

git describe `git log --pretty=format:%H -n 1 abc.txt`

Показывает, что вам ближе всего имя тега для последнего коммита, который изменил файл.

1 голос
/ 17 января 2009

В тегах git всегда указывается состояние всего проекта , а не версия одного файла . Однако вы можете легко получить список всех файлов, которые изменились между версиями, с помощью "git diff --name-only R1_0 R1_1" (или более информативным "git diff --stat --summary R1_0 R1_1". Вы можете получить последний коммит, который коснулся файла, с помощью "git log -1 <file>".

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

0 голосов
/ 17 января 2009

Чего ты пытаешься достичь? SHA1 идентифицирует состояние всего репо в тот момент времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...