From: Johannes Sixt Date: Fri, 31 Dec 2010 17:09:24 GMT Subject: Re: [RFC PATCH 1/3] filter-branch: optionally dump all mappings at the end Message-ID: <201012311809.24205.j6t@kdbg.org> In-Reply-To: <57609f1df897f19becc77d5c43c3c3608725160b.1293809100.git.trast@student.ethz.ch> On Freitag, 31. Dezember 2010, Thomas Rast wrote: > In some cases, like the sub/super-project filtering attempted in this > series, it may be necessary to carry over the mappings from one or > more filter-branch run to another. > > As the first part to this, make a --dump-map option that dumps a flat > text file with lines of the form > > $sha1 $(map $sha1) Despite the alternative implementation that I suggest below, the commit message (and also the documentation to be written) should state the output format in this way. > @@ -194,6 +195,16 @@ do > --original) > orig_namespace=$(expr "$OPTARG/" : '\(.*[^/]\)/*$')/ > ;; > + --dump-map) > + case "$OPTARG" in > + /*) Please use if is_absolute_path "$OPTARG" then ... > +# At this point the mappings are stable so we can dump them if > +# requested > + > +if test -n "$dump_map"; then > + ( cd "$workdir"/../map/; ls ) | > + while read sha1; do > + echo $sha1 $(map $sha1) There must be a more efficient way than to spawn an additional process for each mapped SHA1. Since this excercises only one branch in the map() function anyway, how about this: ( cd "$workdir"/../map/ && ls -1 ) | while read sha1; do read mapped << $sha1 && echo $sha1 $mapped done > "$dump_map" Though, there is some mechanism that maps one SHA1s to more than one, and my approach might not cover that case. > + done > "$dump_map" -- Hannes