On Mon, Nov 10, 2008 at 2:46 PM, Paul Mackerras <paulus@xxxxxxxxx> wrote: > Alexander Gavrilov writes: > >> +proc do_readcommit {id} { >> + global tclencoding >> + >> + # Invoke git-log to handle automatic encoding conversion >> + set fd [open [concat | git log --no-color --pretty=raw -1 $id] r] >> + # Read the results using i18n.logoutputencoding >> + fconfigure $fd -translation lf -eofchar {} >> + if {$tclencoding != {}} { >> + fconfigure $fd -encoding $tclencoding > > Does this mean there are two conversions going on, one inside git log > and another inside Tcl? Is there a reason why it's better to do two > conversions than one, or is it just more convenient that way? That makes the processing flow uniform with the usual code path. > Would an alternative approach have been to read the output of git > cat-file with -translation binary, look for an encoding header, and do > an encoding convertfrom based on the encoding header? What would be > the disadvantage of such an approach? If all commits were loaded through cat-file, that would be the way to go. Otherwise, when one code path uses one method of conversion, and another one, which is used rarely and semi-randomly, a different method, it may lead to confusing results if something goes slightly wrong. Alexander -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html