извлекать каждую версию из svn репо и фиксировать новое репо с хэшированными идентификаторами коммиттера - PullRequest
0 голосов
/ 12 марта 2019

Я изо всех сил пытался найти лучший способ скопировать большой репозиторий SVN в новый репозиторий SVN или GIT, со всеми оригинальными ревизиями и метаданными (отметками времени, комментариями и т. Д.), За исключением того, что я хочу взятьполе коммиттера в журнале и хеш его.Это потому, что я буду анализировать журнал, и мне нужно, чтобы имена коммиттеров были скрыты, но их можно было идентифицировать друг от друга (т. Е. Я не могу просто удалить их или изменить их на «x»).

У меня естьпопытался сделать это несколькими способами до сих пор, но я изо всех сил пытаюсь заставить это работать.

один способ, который я рассмотрел, состоял в том, чтобы пройти через что-то подобное

get current svn revision
print log
take all fields & use as input to git commit |
pass committer id through sha1sum first
git commit
revision = current revision -1

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

Может кто-нибудь посоветовать мне, как лучше всего это сделать?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

git svn имеет два способа искажения имен авторов SVN: --authors-file и --authors-prog.Последнее позволяет вам предоставить скрипт, который будет вызываться для каждого неизвестного автора, и вы можете вернуть свой хеш.Этот скрипт может вычислять хеш, выводить хеш (подробности ожидаемого формата ответа см. В связанных документах) и сохранять это отображение в дополнительном файле.

Таким образом, вам не нужно анализировать авторов изSVN для себя - git svn сделает это для вас.

0 голосов
/ 12 марта 2019

Это 1 строка, которую я использовал, чтобы получить авторов, когда конвертировал Хранилища:

svn log --xml "$svn-url" | grep -F author | sort -u | sed 's/^<[^>]\+>\(.\+\)<.\+>$/\1 = /' >>authors.txt

Затем вы можете отредактировать authors.txt и заменить каждого автора хэшем. идентификаторы. То есть вместо

author1 = Name1 <Email1>
author2 = Name2 <Email2>

хочешь

author1 = Hash1
author2 = Hash2
...