Mercurial: как мне найти создателя файла? - PullRequest
1 голос
/ 21 октября 2010

Банкомат Я делаю это так медленно и некорректно:

for i in `find -type f`; do
  echo $i`LANG=C hg log -v $i | grep user | tail -1 | awk '{print " "; print $2}'`;
done

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

Я просто хочу узнать его, по некоторым причинам :), так как у нас нет кодаПраво собственности на наш проект, все равно не имеет значения ...:)

Ответы [ 3 ]

3 голосов
/ 21 октября 2010

Если вы используете новую версию hg, вы можете использовать revsets , чтобы сделать это очень просто:

hg log -r 'adds(\"path/to/file\")'

(возможно, вам придется изменить экранирование, в зависимости от вашей оболочки.)

Функция adds находит наборы изменений, в которые был добавлен данный файл. Есть куча других функций; см. revsets или hg help revsets для получения дополнительной информации.

0 голосов
/ 30 мая 2013

Если вам нужна только информация об авторе, вы можете сделать

hg log -r 'first(file("path/to/file"))' --template '{author}\n'

как мне подсказал krigstask в # mercurial

9 секунд быстрее тоже:)

0 голосов
/ 21 октября 2010

Вы можете сделать вещи немного более эффективными, изменив команду hg log на:

hg log -r : -l 1 $i --template "{files} {author} {rev}\n"

-r : меняет порядок вывода журнала, а -l 1 показывает только первую запись в журнале; вместе они показывают самую раннюю ревизию любого имени файла в $i. Переключатель --template настраивает вывод, в данном случае я показываю имя файла, автора и ревизию, в которой был представлен файл. См. hg help templating для получения дополнительной информации.

Другая оптимизация будет заключаться в использовании вывода hg manifest, переданного по каналу xargs; find -type f вернет все файлы, поэтому если у вас есть объектные файлы или другие неотслеживаемые файлы в рабочем каталоге, вы будете без необходимости запускать на них hg log.

К сожалению, это не поможет вам определить, куда люди скопировали файлы, не сообщив об этом Mercurial.

...