To compare individual files between many releases, I want to keep track of the first release where a file has changed, per file.
I want to log the first tag for a file in git in the current state, since the last change.
For example, I have two files:
* file1 - aadfed
* file2 - aadfed
Each time I build a release, I add a tag to the current commit, so I can easily re-create the release from GIT. So, after the first release, this will be the tags
* file1 - aadfed - [release-1]
* file2 - aadfed - [release-1]
Suppose I change file1, generating a new commit that contains file1. Then I build a release, tagging the commit with release-2
.
This is my current status:
* file1 - bebebe - [release-2]
* file2 - aadfed - [release-1][release-2]
I want to efficiently tell what the first tag is where the file appeared in, in current form.
Current implementation
What I do now is:
git describe --contains `git rev-list HEAD file1`
git describe --contains `git rev-list HEAD file2`
(actually, the git describe
is in a shell script that I run like this:)
find * -exec bash getgitinfo.sh {} \;
getgitinfo.sh:
COMMIT=$(git rev-list -1 HEAD $1)
if [ "${COMMIT}x" != "x" ];
then
RELEASE=$(git describe --contains $COMMIT)
echo $1,$RELEASE
fi
While this kinda-works, it feels there should be a better way. Any hints?
Desired output:
file1,release2
file2,release1