On 02/17/2012 12:53 AM, Jonathan Nieder wrote: > Michael Schubert wrote: > >> If your question is more like "how do I tell git to find out where >> this old code fits in my history and eventually place it there", >> the answer is: you cannot do it. No VCS will do this and especially >> not Git. > > Wouldn't it be possible to add the tags you want by walking through > the commit log to find a matching commit for each tarball? I read the question like "How do I insert / prepend my zipped *pre-VCS* version (in)to my Git history in an automated fashion". > For example: > > # Usage: "GIT_DIR=<repository> tag-tars <tarballs>" > # Arguments should be tarballs containing releases in > # reverse-chronological order. > # Should be run in an empty directory, which will be > # used as a workspace. > > # save stdin > exec 3<&0 > > GIT_DIR=$(git rev-parse --resolve-git-dir "$GIT_DIR") || exit 1 > GIT_INDEX_FILE=$GIT_DIR/index.tag-tars > export GIT_INDEX_FILE > > if test -n "$(git ls-files -c -o | head -1)" > then > echo >&2 'fatal: I need an empty directory to work with' > exit 1 > fi > > for tar > do > # empty workspace > git ls-files | xargs rm -f -- > rm -f "$GIT_INDEX_FILE" > > # get tree name for tarball > tar --strip-components=1 -xf "$tar" > git ls-files -o | git update-index --add --stdin > tree=$(git write-tree) > > # tag the first commit found matching that tree, if any > git rev-list master | > while read cmit > do > if git diff-tree --quiet $cmit $tree > then > git tag -a ${tar%%.*} $cmit <&3 > break > fi > done > done > > Variation using --numstat and a path filter to find the closest commit > ignoring some files instead of an exact match left as an exercise to > the reader. Nice, thanks! -- 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