Re: Hacking on PostgreSQL via GIT - Mailing list pgsql-hackers

From Martin Langhoff
Subject Re: Hacking on PostgreSQL via GIT
Date
Msg-id 4626968C.30208@catalyst.net.nz
Whole thread Raw
In response to Re: Hacking on PostgreSQL via GIT  ("Jim C. Nasby" <jim@nasby.net>)
List pgsql-hackers
Jim C. Nasby wrote:
> Then how do you tell what version a file is if it's outside of a
> checkout?

It's trivial for git to answer that - the file will either be pristine,
and then we can just scan for the matching SHA1, or modified, and we can
scan (taking a weee bit more time) which are the "closest matches" in
your history, in what branches and commits.

The actual scripting for this isn't written just yet -- Linus posted a
proof-of-concept shell implementation along the lines of
    git rev-list --no-merges --full-history v0.5..v0.7 --
src/widget/widget.c > rev-list
      best_commit=none      best=1000000      while read commit      do              git cat-file blob
"$commit:src/widget/widget.c"> tmpfile              lines=$(diff reference-file tmpfile | wc -l)              if [
"$lines"-lt "$best" ]              then                      echo Best so far: $commit $lines
best=$lines             fi      done < rev-list
 

and it's fast. One of the good properties of this is that you can ask
for a range of your history (v0.5 to v0.7 in the example) and an exact
path (src/widget/widget.c) but you can also say --all (meaning "in all
branches") and a handwavy "over there", like src. And git will take an
extra second or two on a large repo, but tell you about all the good
candidates across the branches.

Metadata is metadata, and we can fish it out of the SCM easily - and
data is data, and it's silly to pollute it with metadata that is mostly
incidental.

If I find time today I'll post to the git list a cleaned up version of
Linus' shell script as
   git-findclosestmatch <head or range or --all> path/to/scan/ \                       randomfile.c

cheers,


m
-- 
-----------------------------------------------------------------------
Martin @ Catalyst .Net .NZ  Ltd, PO Box 11-053, Manners St,  Wellington
WEB: http://catalyst.net.nz/           PHYS: Level 2, 150-154 Willis St
OFFICE: +64(4)916-7224  UK: 0845 868 5733 ext 7224  MOB: +64(21)364-017     Make things as simple as possible, but no
simpler- Einstein
 
-----------------------------------------------------------------------


pgsql-hackers by date:

Previous
From: Martin Langhoff
Date:
Subject: Re: Hacking on PostgreSQL via GIT
Next
From: Alvaro Herrera
Date:
Subject: Re: Allowing COPY into views