On Tue, Sep 30, 2008 at 1:28 PM, Stéphane Glondu <[EMAIL PROTECTED]> wrote:
> Teemu Ikonen wrote:
>> AFAIK, all branches in git are "just references", and branch names are
>> not stored in commit objects. The proposed program would have to do a
>> preliminary pass through the revision graph starting from the branch
>> heads (patch/x and top-bases/patch/x) and tag all the commits it can
>> reach as belonging to these branches. [...]
> Sure, but you are assume topbases/* are behaving like branches, which
> they are not. Correct me if I'm wrong, but it seems that these
> references basically "randomly" jump with topgit.
Well, "tg help update" says (in topgit 0.3):
Update the current topic branch wrt. changes in the branches
it depends on and remote branches.
This is performed in two phases - first,
changes within the dependencies are merged to the base,
then the base is merged into the topic branch.
The output will guide you in case of conflicts.
In case your dependencies are not up-to-date, tg update
will first recurse into them and update these.
If a remote branch update brings dependencies on branches
not yet instantiated locally, you can either bring in all
the new branches from the remote using 'tg remote --populate'
or only pick out the missing ones using 'tg create -r'
('tg summary' will point out branches with incomplete
dependencies by showing an '!' near to them).
TODO: tg update -a for updating all topic branches
This would indicate that bases are managed by merging (which naturally
can be a fast-forward merge) and not rebasing or otherwise rewriting
history. The same applies for topic branches, which are merged to the
latest base (and not rebased).
I haven't checked the implementation though, so there might be
something more complicated going on behind the scene.
vcs-pkg-discuss mailing list