Re: CVS to git: parsing ChangeLog entries?
* Jeff King wrote on Thu, Mar 13, 2008 at 06:03:22PM CET:
Show 5 quoted lines
> On Wed, Mar 12, 2008 at 08:08:27PM +0100, Ralf Wildenhues wrote:
>
> > when migrating a project that uses GNU-style ChangeLogs from CVS
> > to git, is it possible to extract patch author information from
> > the ChangeLog entries rather than from the CVS commit logs?
Show 5 quoted lines
> I don't think there is a way to do this automatically with
> git-cvsimport. However, once imported, I think you could rewrite history
> using git-filter-branch with a filter that looked at the diff of
> ChangeLog for that commit and rewrote the author. See the documentation
> for git-filter-branch.
Thank you, I just learned a new cool tool!
FWIW, here's what I used successfully on a repository with only one ChangeLog file (some fiddling to cope with format variations):
git filter-branch -d /dev/shm/t --tree-filter '
line=`sed -n "s,^[12][90][0-9][0-9]-[0-1][0-9]-[0-3][0-9] *\([A-Za-z].*\),\1,;
s,.* \([A-Za-z].*\),\1,;
/./{
s/(tiny change)//
s/ *$//
p
q
}" ChangeLog`
author=`echo "$line" | sed "s, *[<(].*,,"`
email=`echo "$line" | sed "s,[^,(]*[<(],<,; s/[)>].*/>/"`
test -n "$author" && test -n "$email" && {
GIT_AUTHOR_NAME="$author"
GIT_AUTHOR_EMAIL="$email"
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
}'Show 7 quoted lines
> > Related question: when CVS commit logs have varying encoding,
> > say, some latin1 and some UTF-8, is it possible to have uniformly
> > encoded git log entries?
>
> I don't think git-cvsimport does much with encodings at all. But again,
> you could probably go back through the imported repo with
> git-filter-branch and iconv the commit messages as appropriate.
I'll try that, too.
Thanks! Ralf