threads / patch / 15998

v2builtin-blame: Reencode commit messages according to git-log rules.

Subject: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

## tl;dr

13 messages between Oct 21, 2008 and Oct 22, 2008. Diffs are folded; open one to read it.

replies: 12people: 5as markdown or json

Alexander Gavrilov· Oct 21, 2008, 20:55 UTC · lore

Currently git-blame outputs text from the commit messages (e.g. the author name and the summary string) as-is, without even providing any information about the encoding used for the data. It makes interpreting the data in multilingual environment very difficult.

This commit changes the blame implementation to recode the messages using the rules used by other commands like git-log. Namely, the target encoding can be specified through the i18n.commitEncoding or i18n.logOutputEncoding options, or directly on the command line using the --encoding parameter.

Converting the encoding before output seems to be more friendly to the porcelain tools than simply providing the value of the encoding header, and does not require changing the output format.

If anybody needs the old behavior, it is possible to achieve it by specifying --encoding=none.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
---
	I intentionally forced binary encoding for files
	with the localized strings, to avoid any possible
	corruption.
	
	-- Alexander
 Documentation/blame-options.txt |    7 +++
 Documentation/i18n.txt          |    6 +-
 builtin-blame.c                 |   16 +++++--
 commit.h                        |    2 +
 pretty.c                        |   21 ++++++---
 t/t8005-blame-i18n.sh           |   92 +++++++++++++++++++++++++++++++++++++++
 t/t8005/cp1251.txt              |  Bin 0 -> 68 bytes
 t/t8005/sjis.txt                |  Bin 0 -> 100 bytes
 t/t8005/utf8.txt                |  Bin 0 -> 100 bytes
 9 files changed, 130 insertions(+), 14 deletions(-)
 create mode 100755 t/t8005-blame-i18n.sh
 create mode 100644 t/t8005/cp1251.txt
 create mode 100644 t/t8005/sjis.txt
 create mode 100644 t/t8005/utf8.txt
Show changes to 9 files +130 −14

Documentation/blame-options.txt, Documentation/i18n.txt, builtin-blame.c, commit.h, pretty.c, t/t8005-blame-i18n.sh, t/t8005/cp1251.txt, t/t8005/sjis.txt, t/t8005/utf8.txt

diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt
index 5428111..1ab1b96 100644
--- a/Documentation/blame-options.txt
+++ b/Documentation/blame-options.txt
@@ -49,6 +49,13 @@ of lines before or after the line given by <start>.
 	Show the result incrementally in a format designed for
 	machine consumption.
 
+--encoding=<encoding>::
+	Specifies the encoding used to output author names
+	and commit summaries. Setting it to `none` makes blame
+	output unconverted data. For more information see the
+	discussion about encoding in the linkgit:git-log[1]
+	manual page.
+
 --contents <file>::
 	When <rev> is not specified, the command annotates the
 	changes starting backwards from the working tree copy.
diff --git a/Documentation/i18n.txt b/Documentation/i18n.txt
index d2970f8..2cdacd9 100644
--- a/Documentation/i18n.txt
+++ b/Documentation/i18n.txt
@@ -37,9 +37,9 @@ of `i18n.commitencoding` in its `encoding` header.  This is to
 help other people who look at them later.  Lack of this header
 implies that the commit log message is encoded in UTF-8.
 
-. 'git-log', 'git-show' and friends looks at the `encoding`
-  header of a commit object, and tries to re-code the log
-  message into UTF-8 unless otherwise specified.  You can
+. 'git-log', 'git-show', 'git-blame' and friends look at the
+  `encoding` header of a commit object, and try to re-code the
+  log message into UTF-8 unless otherwise specified.  You can
   specify the desired output encoding with
   `i18n.logoutputencoding` in `.git/config` file, like this:
 +
diff --git a/builtin-blame.c b/builtin-blame.c
index 48cc0c1..2457e71 100644
--- a/builtin-blame.c
+++ b/builtin-blame.c
@@ -1431,7 +1431,7 @@ static void get_commit_info(struct commit *commit,
 			    int detailed)
 {
 	int len;
-	char *tmp, *endp;
+	char *tmp, *endp, *reencoded, *message;
 	static char author_buf[1024];
 	static char committer_buf[1024];
 	static char summary_buf[1024];
@@ -1449,24 +1449,29 @@ static void get_commit_info(struct commit *commit,
 			die("Cannot read commit %s",
 			    sha1_to_hex(commit->object.sha1));
 	}
+	reencoded = reencode_commit_message(commit, NULL);
+	message   = reencoded ? reencoded : commit->buffer;
 	ret->author = author_buf;
-	get_ac_line(commit->buffer, "\nauthor ",
+	get_ac_line(message, "\nauthor ",
 		    sizeof(author_buf), author_buf, &ret->author_mail,
 		    &ret->author_time, &ret->author_tz);
 
-	if (!detailed)
+	if (!detailed) {
+		free(reencoded);
 		return;
+	}
 
 	ret->committer = committer_buf;
-	get_ac_line(commit->buffer, "\ncommitter ",
+	get_ac_line(message, "\ncommitter ",
 		    sizeof(committer_buf), committer_buf, &ret->committer_mail,
 		    &ret->committer_time, &ret->committer_tz);
 
 	ret->summary = summary_buf;
-	tmp = strstr(commit->buffer, "\n\n");
+	tmp = strstr(message, "\n\n");
 	if (!tmp) {
 	error_out:
 		sprintf(summary_buf, "(%s)", sha1_to_hex(commit->object.sha1));
+		free(reencoded);
 		return;
 	}
 	tmp += 2;
@@ -1478,6 +1483,7 @@ static void get_commit_info(struct commit *commit,
 		goto error_out;
 	memcpy(summary_buf, tmp, len);
 	summary_buf[len] = 0;
+	free(reencoded);
 }
 
 /*
diff --git a/commit.h b/commit.h
index 4c05864..3a7b06a 100644
--- a/commit.h
+++ b/commit.h
@@ -65,6 +65,8 @@ enum cmit_fmt {
 
 extern int non_ascii(int);
 struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
+extern char *reencode_commit_message(const struct commit *commit,
+				     const char **encoding_p);
 extern void get_commit_format(const char *arg, struct rev_info *);
 extern void format_commit_message(const struct commit *commit,
 				  const void *format, struct strbuf *sb,
diff --git a/pretty.c b/pretty.c
index 1e79943..f6ff312 100644
--- a/pretty.c
+++ b/pretty.c
@@ -783,6 +783,20 @@ void pp_remainder(enum cmit_fmt fmt,
 	}
 }
 
+char *reencode_commit_message(const struct commit *commit, const char **encoding_p)
+{
+	const char *encoding;
+
+	encoding = (git_log_output_encoding
+		    ? git_log_output_encoding
+		    : git_commit_encoding);
+	if (!encoding)
+		encoding = "utf-8";
+	if (encoding_p)
+		*encoding_p = encoding;
+	return logmsg_reencode(commit, encoding);
+}
+
 void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit,
 			 struct strbuf *sb, int abbrev,
 			 const char *subject, const char *after_subject,
@@ -799,12 +813,7 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit,
 		return;
 	}
 
-	encoding = (git_log_output_encoding
-		    ? git_log_output_encoding
-		    : git_commit_encoding);
-	if (!encoding)
-		encoding = "utf-8";
-	reencoded = logmsg_reencode(commit, encoding);
+	reencoded = reencode_commit_message(commit, &encoding);
 	if (reencoded) {
 		msg = reencoded;
 	}
diff --git a/t/t8005-blame-i18n.sh b/t/t8005-blame-i18n.sh
new file mode 100755
index 0000000..4470a92
--- /dev/null
+++ b/t/t8005-blame-i18n.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+test_description='git blame encoding conversion'
+. ./test-lib.sh
+
+. "$TEST_DIRECTORY"/t8005/utf8.txt
+. "$TEST_DIRECTORY"/t8005/cp1251.txt
+. "$TEST_DIRECTORY"/t8005/sjis.txt
+
+test_expect_success 'setup the repository' '
+	# Create the file
+	echo "UTF-8 LINE" > file &&
+	git add file &&
+	git commit --author "$UTF8_NAME <utf8@localhost>" -m "$UTF8_MSG" &&
+
+	echo "CP1251 LINE" >> file &&
+	git add file &&
+	git config i18n.commitencoding cp1251 &&
+	git commit --author "$CP1251_NAME <cp1251@localhost>" -m "$CP1251_MSG" &&
+
+	echo "SJIS LINE" >> file &&
+	git add file &&
+	git config i18n.commitencoding shift-jis &&
+	git commit --author "$SJIS_NAME <sjis@localhost>" -m "$SJIS_MSG"
+'
+
+cat >expected <<EOF
+author $SJIS_NAME
+summary $SJIS_MSG
+author $SJIS_NAME
+summary $SJIS_MSG
+author $SJIS_NAME
+summary $SJIS_MSG
+EOF
+
+test_expect_success \
+	'blame respects i18n.commitencoding' '
+	git blame --incremental file | \
+		grep "^\(author\|summary\) " > actual &&
+	test_cmp actual expected
+'
+
+cat >expected <<EOF
+author $CP1251_NAME
+summary $CP1251_MSG
+author $CP1251_NAME
+summary $CP1251_MSG
+author $CP1251_NAME
+summary $CP1251_MSG
+EOF
+
+test_expect_success \
+	'blame respects i18n.logoutputencoding' '
+	git config i18n.logoutputencoding cp1251 &&
+	git blame --incremental file | \
+		grep "^\(author\|summary\) " > actual &&
+	test_cmp actual expected
+'
+
+cat >expected <<EOF
+author $UTF8_NAME
+summary $UTF8_MSG
+author $UTF8_NAME
+summary $UTF8_MSG
+author $UTF8_NAME
+summary $UTF8_MSG
+EOF
+
+test_expect_success \
+	'blame respects --encoding=utf-8' '
+	git blame --incremental --encoding=utf-8 file | \
+		grep "^\(author\|summary\) " > actual &&
+	test_cmp actual expected
+'
+
+cat >expected <<EOF
+author $SJIS_NAME
+summary $SJIS_MSG
+author $CP1251_NAME
+summary $CP1251_MSG
+author $UTF8_NAME
+summary $UTF8_MSG
+EOF
+
+test_expect_success \
+	'blame respects --encoding=none' '
+	git blame --incremental --encoding=none file | \
+		grep "^\(author\|summary\) " > actual &&
+	test_cmp actual expected
+'
+
+test_done
diff --git a/t/t8005/cp1251.txt b/t/t8005/cp1251.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ce41e98b811b09c135115529b41e227ce5ec4ff6
GIT binary patch
literal 68
zcmZ<`Ff=kXjQ4Z&b+uJG@#w)@h4W88eR%ii#dn2^FP^*uvXr=-A!>Ys-EEaFJ^lFU
W-J^F;6+XUu_weV_w=bS5aRC6=1t)(1

literal 0
HcmV?d00001

diff --git a/t/t8005/sjis.txt b/t/t8005/sjis.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2ccfbad207c6e96b1f4f528031d9e4938d364b92
GIT binary patch
literal 100
zcmWIc@(hmmbM$q!Rci5UDQYQbsZ(ePXen)JX=!R{018yLbSkt20jUxo7c8X26%5kk
k8|)6$6AV<^3{(tK+R##}0OT|PVPQ)*P@)c~tyGB%00x;U@Bjb+

literal 0
HcmV?d00001

diff --git a/t/t8005/utf8.txt b/t/t8005/utf8.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f46cfc56d80797740c3ec15e166add052f905fcb
GIT binary patch
literal 100
zcmWFyakGf`bM$q!Rk|?a!lnxwF6>pfF#p2Vi%l0BF6;ve?6}yjaADzv9T&D-*as0(
t;tB<6@(p$e>RAL-+IX=EtaRUntqK<#fy{juHeT$!u=T=Tpth|_TmU(XJDmUk

literal 0
HcmV?d00001
-- 
1.6.0.20.g6148bc
Jeff King· Oct 22, 2008, 08:20 UTC · re: Alexander Gavrilov · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 12:55:57AM +0400, Alexander Gavrilov wrote:
Show 5 quoted lines
> +test_expect_success \
> +	'blame respects i18n.commitencoding' '
> +	git blame --incremental file | \
> +		grep "^\(author\|summary\) " > actual &&
> +	test_cmp actual expected

Even though it is POSIX, using backslashed grouping in 'grep' isn't portable. It fails at least on Solaris 8, and you have to do:

  egrep "^(author|summary) "

instead. Of course, I can't get your test to pass even with that change, but I think that is just a broken iconv on Solaris.

-Peff
Alexander Gavrilov· Oct 22, 2008, 08:35 UTC · re: Jeff King · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 12:20 PM, Jeff King <peff@peff.net> wrote:
Show 15 quoted lines
> On Wed, Oct 22, 2008 at 12:55:57AM +0400, Alexander Gavrilov wrote:
>
>> +test_expect_success \
>> +     'blame respects i18n.commitencoding' '
>> +     git blame --incremental file | \
>> +             grep "^\(author\|summary\) " > actual &&
>> +     test_cmp actual expected
>
> Even though it is POSIX, using backslashed grouping in 'grep' isn't
> portable. It fails at least on Solaris 8, and you have to do:
>
>  egrep "^(author|summary) "
>
> instead. Of course, I can't get your test to pass even with that change,
> but I think that is just a broken iconv on Solaris.

Hm, which of the conversions fail? You can try manually converting the txt files with the iconv command to figure it out.

Alexander
Jeff King· Oct 22, 2008, 08:50 UTC · re: Alexander Gavrilov · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 12:35:17PM +0400, Alexander Gavrilov wrote:
Show 5 quoted lines
> > instead. Of course, I can't get your test to pass even with that change,
> > but I think that is just a broken iconv on Solaris.
> 
> Hm, which of the conversions fail? You can try manually converting the
> txt files with the iconv command to figure it out.

Test 2 fails for CP1251 and SJIS. Manually converting with iconv seems to work ok (at least, doing "iconv -f CP1251 -t UTF-8 cp1251.txt" produces the same output as "cat utf8.txt".

The output from "t8005-blame-i18n.sh -v -i" is attached (as application/octet-stream to protect it from email munging) if that is helpful to you. I can't make heads or tails of it.

-Peff
Alexander Gavrilov· Oct 22, 2008, 09:32 UTC · re: Jeff King · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 12:50 PM, Jeff King <peff@peff.net> wrote:
Show 15 quoted lines
> On Wed, Oct 22, 2008 at 12:35:17PM +0400, Alexander Gavrilov wrote:
>
>> > instead. Of course, I can't get your test to pass even with that change,
>> > but I think that is just a broken iconv on Solaris.
>>
>> Hm, which of the conversions fail? You can try manually converting the
>> txt files with the iconv command to figure it out.
>
> Test 2 fails for CP1251 and SJIS.  Manually converting with iconv seems
> to work ok (at least, doing "iconv -f CP1251 -t UTF-8 cp1251.txt"
> produces the same output as "cat utf8.txt".
>
> The output from "t8005-blame-i18n.sh -v -i" is attached (as
> application/octet-stream to protect it from email munging) if that is
> helpful to you. I can't make heads or tails of it.
>From the output it seems that what fails is "-f cp1251 -t sjis" and

"-f utf-8 -t sjis" (remember that blame --incremental produces its output in reverse order compared to the order of commits). Unless blame for some reason actually tries to convert to an entirely different encoding. If tests 4 and 5 pass, you can try adding --encoding=shift-jis to test 2 to check it.

Alexander
Jeff King· Oct 22, 2008, 12:39 UTC · re: Alexander Gavrilov · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 01:32:56PM +0400, Alexander Gavrilov wrote:
> From the output it seems that what fails is "-f cp1251 -t sjis" and
> "-f utf-8 -t sjis" (remember that blame --incremental produces its

Oh, indeed. Converting to and from utf-8 seems to work, but not between cp1251 and sjis:

  $ iconv -f SJIS -t UTF-8 sjis.txt | sed s/SJIS/UTF8/ >test &&
  >   cmp test utf8.txt && echo ok
  ok
  $ iconv -f UTF-8 -t SJIS utf8.txt | sed s/UTF8/SJIS/ >test &&
  >   cmp test sjis.txt && echo ok
  ok
  $ iconv -f SJIS -t CP1251 sjis.txt
  Not supported SJIS to CP1251
  $ iconv -f CP1251 -t SJIS cp1251.txt
  Not supported CP1251 to SJIS

So I think it is simply a limitation of the platform with respect to the particular encodings used. There is a similar problem in t3900, I think, with EUCJP and ISO-2022-JP. I assume one _can_ install these encodings for Solaris, but the admins of my box haven't done so (and this is a production box that I can't ask for such things on).

> blame for some reason actually tries to convert to an entirely
> different encoding. If tests 4 and 5 pass, you can try adding
> --encoding=shift-jis to test 2 to check it.
Tests 2, 3, and 4 fail. Test 5 does pass.
-Peff
Junio C Hamano· Oct 22, 2008, 19:07 UTC · re: Jeff King · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

Jeff King <peff@peff.net> writes:
Show 15 quoted lines
> On Wed, Oct 22, 2008 at 12:55:57AM +0400, Alexander Gavrilov wrote:
>
>> +test_expect_success \
>> +	'blame respects i18n.commitencoding' '
>> +	git blame --incremental file | \
>> +		grep "^\(author\|summary\) " > actual &&
>> +	test_cmp actual expected
>
> Even though it is POSIX, using backslashed grouping in 'grep' isn't
> portable. It fails at least on Solaris 8, and you have to do:
>
>   egrep "^(author|summary) "
>
> instead. Of course, I can't get your test to pass even with that change,
> but I think that is just a broken iconv on Solaris.

Yuck. Solaris 8 /usr/bin/grep does not even grok "-e", so we cannot do a more obvious:

	grep -e "^author " -e "^summary "
Do people build with NO_EXTERNAL_GREP on older Solaris?

git-submodule.sh uses grep "-e" to look for two patterns and I suspect older Solaris would have the same issue.

Jeff King· Oct 22, 2008, 19:14 UTC · re: Junio C Hamano · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 12:07:48PM -0700, Junio C Hamano wrote:
> Yuck.  Solaris 8 /usr/bin/grep does not even grok "-e", so we cannot do a
> more obvious:
> 
> 	grep -e "^author " -e "^summary "

Yep. I already introduced one use of egrep for a similar case in 8753941 (tests: grep portability fixes).

> Do people build with NO_EXTERNAL_GREP on older Solaris?
Yep. See:
  http://repo.or.cz/w/git/gitbuild.git?a=blob;f=jk/solaris/config.mak;hb=platform

for the gory details (boy, I wish we had nice PATH_INFO-based gitweb URLs...).

> git-submodule.sh uses grep "-e" to look for two patterns and I suspect
> older Solaris would have the same issue.

Yes, that code will break on Solaris. Most of my portability fixes have been in direct response to tests, so I guess we are not testing git-submodule very well.

-Peff
Jeff King· Oct 22, 2008, 19:22 UTC · re: Jeff King · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 03:14:16PM -0400, Jeff King wrote:
Show 6 quoted lines
> > git-submodule.sh uses grep "-e" to look for two patterns and I suspect
> > older Solaris would have the same issue.
> 
> Yes, that code will break on Solaris. Most of my portability fixes have
> been in direct response to tests, so I guess we are not testing
> git-submodule very well.

And here's a patch. Though I believe this is the last "grep -e", I wonder if it wouldn't have been wiser to simply force people on such platforms to use GNU grep (I already have to use GNU tools to build, and bash to run the scripts).

-- >8 -- submodule: fix some non-portable grep invocations

Not all greps support "-e", but in this case we can easily convert it to a single extended regex.

Signed-off-by: Jeff King <peff@peff.net>
---
Passes the test scripts, but I'm not sure they are exercising this code,
anyway, since it passed on Solaris. Please double-check my conversion.
 git-submodule.sh |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Show changes to git-submodule.sh +2 −2
diff --git a/git-submodule.sh b/git-submodule.sh
index 65178ae..b63e5c3 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -424,7 +424,7 @@ cmd_summary() {
 	cd_to_toplevel
 	# Get modified modules cared by user
 	modules=$(git diff-index $cached --raw $head -- "$@" |
-		grep -e '^:160000' -e '^:[0-7]* 160000' |
+		egrep '^:([0-7]* )?160000' |
 		while read mod_src mod_dst sha1_src sha1_dst status name
 		do
 			# Always show modules deleted or type-changed (blob<->module)
@@ -438,7 +438,7 @@ cmd_summary() {
 	test -z "$modules" && return
 
 	git diff-index $cached --raw $head -- $modules |
-	grep -e '^:160000' -e '^:[0-7]* 160000' |
+	egrep '^:([0-7]* )?160000' |
 	cut -c2- |
 	while read mod_src mod_dst sha1_src sha1_dst status name
 	do
-- 
1.6.0.2.825.g6d19d
Johannes Schindelin· Oct 22, 2008, 20:29 UTC · re: Jeff King · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

Hi,
On Wed, 22 Oct 2008, Jeff King wrote:
> submodule: fix some non-portable grep invocations
> 
> Not all greps support "-e", but in this case we can easily
> convert it to a single extended regex.

I really wonder if we cannot catch these things (unportable grep, sed, etc invokations) with a simple patch to the pre-commit hook.

Ciao, Dscho

Jeff King· Oct 22, 2008, 20:40 UTC · re: Johannes Schindelin · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 10:29:39PM +0200, Johannes Schindelin wrote:
Show 5 quoted lines
> > Not all greps support "-e", but in this case we can easily
> > convert it to a single extended regex.
> 
> I really wonder if we cannot catch these things (unportable grep, sed, etc 
> invokations) with a simple patch to the pre-commit hook.

We could probably write a hook for some of the simpler ones, but we would have quite a few false negatives, I suspect.

FWIW, I am not finding these portability problems by hand. I am nightly auto-building and testing Junio's maint, master, and next on Solaris 8 and FreeBSD, and Mike Ralphson is doing the same for AIX. So while we could perhaps catch them sooner, I am very happy to have caught several issues recently in next, _before_ they hit master.

-Peff
Jakub Narebski· Oct 22, 2008, 20:12 UTC · re: Jeff King · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

Jeff King wrote:
Show 8 quoted lines
>> Do people build with NO_EXTERNAL_GREP on older Solaris?
> 
> Yep. See:
> 
>   http://repo.or.cz/w/git/gitbuild.git?a=blob;f=jk/solaris/config.mak;hb=platform
> 
> for the gory details (boy, I wish we had nice PATH_INFO-based gitweb
> URLs...).
Currently you can use path_info URL for blob_plain
  http://repo.or.cz/w/git/gitbuild.git/platform:/jk/solaris/config.mak
Soon (thanks to Giuseppe patches) you would be able to use
  http://repo.or.cz/w/git/gitbuild.git/blob/platform:/jk/solaris/config.mak
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Jeff King· Oct 22, 2008, 20:42 UTC · re: Jakub Narebski · lore

Re: [PATCH v2] builtin-blame: Reencode commit messages according to git-log rules.

On Wed, Oct 22, 2008 at 10:12:54PM +0200, Jakub Narebski wrote:
> Currently you can use path_info URL for blob_plain
> 
>   http://repo.or.cz/w/git/gitbuild.git/platform:/jk/solaris/config.mak
Ah, I didn't know that. Thanks.
> Soon (thanks to Giuseppe patches) you would be able to use
> 
>   http://repo.or.cz/w/git/gitbuild.git/blob/platform:/jk/solaris/config.mak

Yes, those patches were actually what spurred my comment. :) I am looking forward to playing with them once they are on repo.or.cz.

-Peff

← back to recent threads