You can use the idea of knittl to find the closest commit - the only modification below is the fact that you are comparing the git tree with the installed package, and not the git repository:
Since there may not be a git repository directory structure for the installed package, create a new directory for the git repo. I use html5lib for an example:
mkdir ~/tmp/html5lib cd ~/tmp/html5lib/ git init
Now select the git tree:
git remote add foreign https:
Copy the installed package in git repo:
rsync -a ~/.virtualenvs/muffy/lib/python3.4/site-packages/html5lib ~/tmp/html5lib/
Run git diff to compare the current state of the repo (with the installed package code) with each revision in the git tree:
for REV in $(git rev-list --all); do echo $(git diff --shortstat foreign/master $REV) $REV ; done | sort -n
This is sorted by the number of modified files, then the number of inserts, and then deletion. The result will look something like this:
1 file changed, 3 insertions(+), 1 deletion(-) 17499b9763a090f7715af49555d21fe4b558958b 2 files changed, 10 insertions(+), 8 deletions(-) ec674a97243e76da43f06abfd0a891308f1ff801 3 files changed, 17 insertions(+), 12 deletions(-) 1a28d721091a2c433c6e8471d14cbb75afd70d1c 4 files changed, 18 insertions(+), 13 deletions(-) ff6111cd82191a2eb963d6d662c6da8fa2e7ddde 6 files changed, 19 insertions(+), 19 deletions(-) ea0fafdbff732b1272140b696d6948054ed1d6d2
The last item on each line is associated with a git commit.
If the git story is very long, you want to change git rev-list --all to a range of commits. For example, use git rev-list tag1..tag2 to search between two tags. If you know roughly when the package was installed, you may have a good guess about which tags to use. Use git tag to show possible tag names. See documents for more options.