[PATCH] Add a source_tree field to Project.

Guilherme Salgado guilherme.salgado at linaro.org
Sat Apr 2 00:43:06 EST 2011


On Fri, 2011-04-01 at 13:01 +0200, Dirk Wallenstein wrote:
> On Wed, Mar 30, 2011 at 06:25:12PM -0300, Guilherme Salgado wrote:
> > On Wed, 2011-03-30 at 12:10 +0800, Jeremy Kerr wrote:
[...]
> > +def ensure_source_checkout_for_project(project):
> > +    forest = '/home/salgado/src' # This is where we store the trees we checkout
> > +    root = os.path.join(forest, project.linkname)
> > +    if not os.path.exists(root):
> > +        repo = Repo.init(root, mkdir=True)
> > +    else:
> > +        repo = Repo(root)
> > +
> > +    transport, path = get_transport_and_path(project.source_tree)
> > +    refs = transport.fetch(path, repo)
> > +    # XXX: Is this the appropriate thing to do?  will there always be a master
> > +    # branch?
> > +    repo.refs['refs/heads/master'] = refs['HEAD']
> > +    return repo
> > +
> > +
> > +def get_hashes_for_commits(repo, stop_at):
> > +    # We don't care about the first commit, but if needed it should be
> > +    # possible to diff it against an empty tree and yield its hash as well.
> > +    commit = repo['HEAD']
> > +
> > +    while len(commit.parents) > 0:
> > +        commit_id = commit.id
> > +        if commit_id == stop_at:
> > +            break
> > +
> > +        parent = repo[commit.parents[0]]
> 
> What about possible other parents?  I would say every merged branch has
> to be inspected until the merge-base of the immediate predecessors --

That's one of the reasons that led me to run git as a subprocess instead
of using python-dulwich. In a followup to this thread I sent a new
version of this patch which uses just git.

> maybe recursion works here.  I forgot to mention Git-Python in the other
> mail.  It has a wrapper to execute git commands with python syntax.
> That can facilitate such things.
> 
> https://github.com/gitpython-developers/GitPython

Oh, cool, I'll have a look at that.

Cheers,

-- 
Guilherme Salgado <https://launchpad.net/~salgado>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/patchwork/attachments/20110401/058f4a54/attachment.pgp>


More information about the Patchwork mailing list