gpt4 book ai didi

svn - Git 到 svn : Adding commit date to log messages

转载 作者:太空狗 更新时间:2023-10-29 13:15:26 24 4
gpt4 key购买 nike

我应该如何将作者(或提交者)姓名/日期添加到日志中“dcommitting”到 svn 时的消息?

例如,如果 Git 中的日志消息是:

This is a nice modif

我希望 svn 中的消息是这样的:

This is a nice modif-----Author: John Doo <John.Doo@company.com>  2010-06-10 12:38:22Committer: Nice Guy <nguy@acme.org>  2010-06-10 14:05:42

(请注意,我主要对日期感兴趣,因为我已经在 .svn-authors 中映射了 svn 用户)

有什么简单的方法吗?需要 Hook 吗?其他建议?
(另请参阅:http://article.gmane.org/gmane.comp.version-control.git/148861)

最佳答案

完成此操作的一种方法是使用脚本、GIT_EDITOR 环境变量和 dcommit --edit 选项。

将以下内容保存到一个文件中,我们称之为svnmessage.sh:

#!/bin/sh
c=`git rev-parse HEAD`
t=`git cat-file -t $c`
m=`cat "$1"`
if [ "commit" = "$t" ]; then
o=`git cat-file $t $c`
o_a=`echo "$o" | grep '^author '`
o_c=`echo "$o" | grep '^committer '`
author=`echo "$o_a" | sed -e 's/^author \(.*>\).*$/\1/'`
authorts=`echo "$o_a" | sed -e 's/^author .*> \([0-9]\+\) .*$/\1/'`
authordt=`date -d @$authorts +"%Y-%m-%d %H:%M:%S %z"`
committer=`echo "$o_c" | sed -e 's/^committer \(.*>\).*$/\1/'`
committerts=`echo "$o_c" | sed -e 's/^committer .*> \([0-9]\+\) .*$/\1/'`
committerdt=`date -d @$committerts +"%Y-%m-%d %H:%M:%S %z"`
m="$m
-----
Author: $author $authordt
Committer: $committer $committerdt"
fi
echo "$m" > "$1"

确保脚本是可执行的:chmod +x svnmessage.sh。然后像这样运行你的 dcommit:

GIT_EDITOR="/path/to/script/svnmessage.sh" git svn dcommit --edit

--edit 选项将在提交到 SVN 之前编辑提交消息,使用 GIT_EDITOR 环境变量来处理提交消息。参见 git-svngit-var了解更多信息。

你可以创建一个别名来让事情变得更简单:

git config --global alias.dcommit-edit '!GIT_EDITOR="$HOME/bin/svnmessage.sh" git svn dcommit --edit'

然后只需使用 git dcommit-edit


脚本依赖于git-svn.perl虹吸 git cat-file输出以创建 SVN 提交消息。相同的技术用于提取作者和提交者信息。一个简单的提交可能看起来像:

$ git cat-file commit 24aef4f
tree eba872d9caad7246406f310c926427cfc5e73c8d
parent 7dd9de9b5c68b9de1fc3b798edbab2e350ae6eac
author User <user@acme.com> 1321054806 -0500
committer User <user@acme.com> 1321054806 -0500

foo-27

脚本通常会将 .git/COMMIT_EDITMSG 作为参数传递给它;其内容将包含将用于 SVN 提交消息的 Git 提交消息。

关于svn - Git 到 svn : Adding commit date to log messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com