summaryrefslogtreecommitdiffstats
path: root/uglib.sh
diff options
context:
space:
mode:
authorUwe Kleine-König <ukleinek@strlen.de>2010-09-24 16:24:53 +0200
committerUwe Kleine-König <ukleinek@strlen.de>2010-09-24 16:24:53 +0200
commit539e437eaf86f1c9f6327b1c38d761c5f198f114 (patch)
treec0f7aa100d4fd70a84852d397a03515d3c7f7922 /uglib.sh
parent0ed430e6cba20908c98c0f199d79e0ab5f85d0da (diff)
downloadubergit-539e437eaf86f1c9f6327b1c38d761c5f198f114.tar.gz
ubergit-539e437eaf86f1c9f6327b1c38d761c5f198f114.tar.xz
properly implement authorinfo and committerinfo
authorinfo still lacks parsing .ubergit/author Signed-off-by: Uwe Kleine-König <ukleinek@strlen.de>
Diffstat (limited to 'uglib.sh')
-rw-r--r--uglib.sh37
1 files changed, 29 insertions, 8 deletions
diff --git a/uglib.sh b/uglib.sh
index 1c2398b..82f042d 100644
--- a/uglib.sh
+++ b/uglib.sh
@@ -1,10 +1,8 @@
## authorinfo ## {{{2
authorinfo() {
# XXX: implement parsing .ubergit/author
- # more XXX: get author from $1
- echo "GIT_AUTHOR_NAME='Uwe Kleine-König'"
- echo "GIT_AUTHER_EMAIL='ukl@pengutronix.de'"
- echo "GIT_AUTHER_DATE='1283281597 +0200'"
+
+ personfromcommit "$1" "author" "AUTHOR"
}
## assert ## {{{2
@@ -32,10 +30,7 @@ commitenv() {
committerinfo() {
assert is_topic "$1"
- # XXX: get commiter from $1
- echo "GIT_COMMITTER_NAME='Uwe Kleine-König'"
- echo "GIT_COMMITTER_EMAIL='ukl@pengutronix.de'"
- echo "GIT_COMMITTER_DATE='1283281597 +0200'"
+ personfromcommit "$1" "committer" "COMMITTER"
}
## debug ## {{{2
@@ -143,6 +138,32 @@ msg() {
git cat-file blob "$1:.ubergit/msg"
}
+## personfromcommit ## {{{2
+# personfromcommit <commitish> [author|committer] [AUTHOR|COMMITTER]
+personfromcommit() {
+ # inspired by git's get_author_ident_from_commit
+ local encoding script
+
+ encoding="$(git config i18n.commitencoding || echo UTF-8)"
+ script="
+ /^$2 /{
+ s/'/'\\\\''/g # quote single quotes
+ h
+ s/^$2 \\([^<]*\\) <[^>]*> .*$/GIT_$3_NAME='\\1'/p
+
+ g
+ s/^$2 [^<]* <\\([^>]*\\)> .*$/GIT_$3_EMAIL='\\1'/p
+
+ g
+ s/^$2 [^<]* <[^>]*> \\(.*\\)$/GIT_$3_DATE='\\1'/p
+
+ q
+ }
+ /^\$/q
+ "
+ git show -s --pretty=raw --encoding="$encoding" "$1" -- | sed -n -e "$script"
+}
+
## pretty_tree ## {{{2
pretty_tree() {
git ls-tree --full-tree "$1" \