* Recoding of {git,cg}-log output
@ 2006-02-27 0:10 Krzysiek Pawlik
2006-02-27 0:36 ` Johannes Schindelin
2006-02-27 1:26 ` Petr Baudis
0 siblings, 2 replies; 4+ messages in thread
From: Krzysiek Pawlik @ 2006-02-27 0:10 UTC (permalink / raw)
To: Git Mailing List
[-- Attachment #1.1: Type: text/plain, Size: 873 bytes --]
First: a little "why": having /usr/bin/vim as PAGER allows to enter
UTF-8 commit messages quite easily, the problem is when git-log (or
cg-log) is run in terminal that's not UTF-8. In my case: terminal is
ISO-8859-2 and:
nelchael@nelchael ~$ cat ~/.vimrc | grep gitci
au BufRead /tmp/gitci* setlocal textwidth=75 fileencoding=utf-8
encoding=utf-8 fileencodings=utf-8,default
So... having {git,cg}-log recode the log entires when displaying is
quite useful. Two patches attached:
a. git-log-recode.patch - uses iconv to recode the log output to
GIT_LOG_RECODE encoding
b. cg-log-recode.patch - the same, but for cogito
With this patches it's possible to write UTF-8 commit messages and see
them ok in non-UTF-8 terminal in log by having GIT_LOG_RECODE=iso-8859-2.
Comments?
--
Krzysiek Pawlik (Nelchael)
RLU #322999 GPG Key ID: 0xBC555551
[-- Attachment #1.2: cg-log-recode.patch --]
[-- Type: text/plain, Size: 889 bytes --]
--- /usr/bin/cg-log 2006-01-19 17:22:22.000000000 +0100
+++ bin/cg-log 2006-02-27 00:59:07.000000000 +0100
@@ -348,13 +348,21 @@
if [ "$shortlog" ]; then
# Special care here.
- $revls $sep "${ARGS[@]}" | git-shortlog | pager
+ if [ -n "${GIT_LOG_RECODE}" ]; then
+ $revls $sep "${ARGS[@]}" | git-shortlog | iconv --from-code=UTF-8 --to-code="${GIT_LOG_RECODE}" | pager
+ else
+ $revls $sep "${ARGS[@]}" | git-shortlog | pager
+ fi
exit
fi
# LESS="S" will prevent less to wrap too long titles to multiple lines;
# you can scroll horizontally.
-$revls $sep "${ARGS[@]}" | print_commit_log | _local_CG_LESS="S" pager
+if [ -n "${GIT_LOG_RECODE}" ]; then
+ $revls $sep "${ARGS[@]}" | print_commit_log | iconv --from-code=UTF-8 --to-code="${GIT_LOG_RECODE}" | _local_CG_LESS="S" pager
+else
+ $revls $sep "${ARGS[@]}" | print_commit_log | _local_CG_LESS="S" pager
+fi
exit 0
[-- Attachment #1.3: git-log-recode.patch --]
[-- Type: text/plain, Size: 544 bytes --]
--- /usr/bin/git-log 2006-02-23 18:31:32.000000000 +0100
+++ bin/git-log 2006-02-27 00:47:34.000000000 +0100
@@ -11,5 +11,11 @@
[ "$revs" ] || {
die "No HEAD ref"
}
-git-rev-list --pretty $(git-rev-parse --default HEAD "$@") |
-LESS=-S ${PAGER:-less}
+if [ -n "${GIT_LOG_RECODE}" ]; then
+ git-rev-list --pretty $(git-rev-parse --default HEAD "$@") | \
+ iconv --from-code=UTF-8 --to-code="${GIT_LOG_RECODE}" | \
+ LESS=-S ${PAGER:-less}
+else
+ git-rev-list --pretty $(git-rev-parse --default HEAD "$@") | \
+ LESS=-S ${PAGER:-less}
+fi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 191 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Recoding of {git,cg}-log output
2006-02-27 0:10 Recoding of {git,cg}-log output Krzysiek Pawlik
@ 2006-02-27 0:36 ` Johannes Schindelin
2006-02-27 0:50 ` Krzysiek Pawlik
2006-02-27 1:26 ` Petr Baudis
1 sibling, 1 reply; 4+ messages in thread
From: Johannes Schindelin @ 2006-02-27 0:36 UTC (permalink / raw)
To: Krzysiek Pawlik; +Cc: Git Mailing List
Hi,
On Mon, 27 Feb 2006, Krzysiek Pawlik wrote:
> First: a little "why": having /usr/bin/vim as PAGER allows to enter
> UTF-8 commit messages quite easily, the problem is when git-log (or
> cg-log) is run in terminal that's not UTF-8.
Of course, you could always set up a script doing the recoding and the
paging, like
-- snip --
#!/bin/sh
iconv -f UTF-8 -t ISO-8859-2 "$@" | vim
-- snap --
and point your PAGER to that script (which is untested BTW). The advantage
of this approach compared to adjusting git is that other programs use
PAGER, too.
Hth,
Dscho
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Recoding of {git,cg}-log output
2006-02-27 0:36 ` Johannes Schindelin
@ 2006-02-27 0:50 ` Krzysiek Pawlik
0 siblings, 0 replies; 4+ messages in thread
From: Krzysiek Pawlik @ 2006-02-27 0:50 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git Mailing List
[-- Attachment #1: Type: text/plain, Size: 787 bytes --]
Johannes Schindelin wrote:
> Of course, you could always set up a script doing the recoding and
> the paging, like
No.
> The advantage of this approach compared to adjusting git is that
> other programs use PAGER, too.
Passing code (web pages, etc) throught iconv is not a good idea -
{git,cg}-diff should show the file content as it is, not altered by iconv.
Changing PAGER is a bit... ugly and messy way of doing it. Assume that I
work on some files and want to look at some unversioned files outside
the tree (like docs, man pages, whatever) and the $PAGER passes the
legitimate ISO8859-2 files through iconv, what gives us garbage. And we
end up changing pager very often - Bad Idea (TM).
--
Krzysiek Pawlik (Nelchael)
RLU #322999 GPG Key ID: 0xBC555551
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 191 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Recoding of {git,cg}-log output
2006-02-27 0:10 Recoding of {git,cg}-log output Krzysiek Pawlik
2006-02-27 0:36 ` Johannes Schindelin
@ 2006-02-27 1:26 ` Petr Baudis
1 sibling, 0 replies; 4+ messages in thread
From: Petr Baudis @ 2006-02-27 1:26 UTC (permalink / raw)
To: Krzysiek Pawlik; +Cc: Git Mailing List
Dear diary, on Mon, Feb 27, 2006 at 01:10:44AM CET, I got a letter
where Krzysiek Pawlik <krzysiek.pawlik@people.pl> said that...
>
> First: a little "why": having /usr/bin/vim as PAGER allows to enter
> UTF-8 commit messages quite easily, the problem is when git-log (or
> cg-log) is run in terminal that's not UTF-8. In my case: terminal is
> ISO-8859-2 and:
>
> nelchael@nelchael ~$ cat ~/.vimrc | grep gitci
> au BufRead /tmp/gitci* setlocal textwidth=75 fileencoding=utf-8
> encoding=utf-8 fileencodings=utf-8,default
Wouldn't it be enough to also set termencoding?
> So... having {git,cg}-log recode the log entires when displaying is
> quite useful. Two patches attached:
>
> a. git-log-recode.patch - uses iconv to recode the log output to
> GIT_LOG_RECODE encoding
> b. cg-log-recode.patch - the same, but for cogito
>
> With this patches it's possible to write UTF-8 commit messages and see
> them ok in non-UTF-8 terminal in log by having GIT_LOG_RECODE=iso-8859-2.
>
> Comments?
Not opposed in principle. But it would be much more sensible to have
something like $GIT_META_ENCODING (defaulting probably to utf8), recode
to whatever is your current locale, have the appropriate setting in the
configfile, ...
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Of the 3 great composers Mozart tells us what it's like to be human,
Beethoven tells us what it's like to be Beethoven and Bach tells us
what it's like to be the universe. -- Douglas Adams
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-02-27 1:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-27 0:10 Recoding of {git,cg}-log output Krzysiek Pawlik
2006-02-27 0:36 ` Johannes Schindelin
2006-02-27 0:50 ` Krzysiek Pawlik
2006-02-27 1:26 ` Petr Baudis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).