показывать первую запись даты в каждом файле - PullRequest
0 голосов
/ 18 апреля 2011

Я делаю скрипт, чтобы найти все файлы в репозитории SVN и показать первую дату ввода каждого файла.первая запись в хранилище и не показывает первую запись файлов, поступающих после первой ревизии.

¿Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 18 апреля 2011

Так что не обязательно самый эффективный, но этот скрипт должен позаботиться об этом за вас.Он перебирает каждый файл в репо и запускает svn log, чтобы получить первую запись для каждого файла.Требуется немного для запуска, но он дает хороший вывод, если он нужен только один раз или около того (я использовал gawk, потому что я застрял на солярисе, но обычный старый awk мог бы отлично работать также на normal unixкоробки).

#!/bin/bash

cd /path/to/local/copy
for file in `svn ls -R`
do
  #the this if then only needed if you don't want directories listed in output
  if [ -f $file ]
  then
    printf "${file}: "
    echo `svn log -q ${file} --incremental | gawk 'END { print $5" "$6}'`
  fi
done
0 голосов
/ 05 декабря 2014

Использование find piped to grep даст хороший отчет:

find . -not -path '*/\.*' -type f \
  -exec echo Filename: '{}' \; \
  -exec svn log -r 1:HEAD --limit 1 "$@" '{}' \; \
  | grep -A 2 -B 1 Filename:

Использование "-not -path '* /. *'" Исключает каталог .svn.Кредит для '-r 1: HEAD -limit 1' bit получен из ответа CMS на 'SVN: Как получить первую версию файла?' .

Пример вывода:

Filename: ./asn.php
------------------------------------------------------------------------
r1 | dregal | 2005-02-28 15:27:17 -0800 (Mon, 28 Feb 2005) | 1 line
--
------------------------------------------------------------------------
Filename: ./asn_edit.php
------------------------------------------------------------------------
r1149 | dregal | 2009-07-03 12:16:56 -0700 (Fri, 03 Jul 2009) | 3 lines
--
------------------------------------------------------------------------
Filename: ./asn_list.php
------------------------------------------------------------------------
r1149 | dregal | 2009-07-03 12:16:56 -0700 (Fri, 03 Jul 2009) | 3 lines
0 голосов
/ 18 апреля 2011

Упомянутое вами решение можно использовать, если вы сначала получите список всех файлов в хранилище, а затем примените решение для каждого из них.Хотя это будет очень медленно, если у вас много файлов в репо.

Более быстрым вариантом может быть выборка всего журнала svn репо и анализ выходных данных.

svn log <repo_URL> --verbose -r 1:HEAD

svn log предоставит информацию о ревизиях вместе с их датой.

--verbose опция даст вам информацию о добавленных файлах для каждой ревизии.

------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line
Changed paths:
   A /trunk/src/bar.c

Added new file bar.c

Таким образом, вы можете собрать необходимую информациюотносительно быстроОпция --xml может быть полезна для вас, если вы легко разбираете xml - таким образом, svn log вывод будет четко структурирован и, возможно, его легче будет проанализировать.

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