threads / discuss / 55989

git-alltrees: root trees and subtrees without duplicate commits.

Subject: git-alltrees: root trees and subtrees without duplicate commits.

## tl;dr

3 messages between Jun 23, 2021 and Jun 11, 2023.

replies: 2people: 1as markdown or json

Douglas Leonard· Jun 23, 2021, 04:17 UTC · lore
Hi all,

For a very quick introduction, I'm a career physicist. I just thought I'd share a detailed method and implementation I developed to improve on shortcomings of subtrees.

This says it all https://gitlab.com/douglas.s.leonard/alltrees/-/wikis/home

But to repeat a little...

First, it allows a container "sub" tree, ie syncing only the non "sub" parts of the tree to a repo. But maybe more importantly, when it pulls from the trees it's able to "remap" or reconstruct old commits back to their originals to avoid the duplicate commit issue of subtrees. This is round-trip reproducible so consistency is kept both ways. It avoids the need for squash with subtrees. Compare the two images in the wiki to see the difference between subtree without squash and alltrees. Non-FF changes made in a tree repo show as branched and merged. Traditional advantages of subtrees are kept, primarily that users/developers of any one repo don't need any awareness of how to use the subtrees or the other repos.

I have used this some, but not extensively yet. In my use it has worked. I think it's pretty quick, but I haven't tested on large projects.

Cheers, Doug Leonard

Douglas Leonard· Jun 23, 2021, 23:55 UTC · lore

Re: git-alltrees: root trees and subtrees without duplicate commits.

For what it's worth, a demonstration script is included which makes parallel changes on various local and remote repos and does origin and subtree push/pull.. In future plans... it's possible to fully reintegrate the subtree commits into the full branch point file tree locally so that they are cherry-pickable too, as if all changes were made on complete local branches.

Regards, Doug

On Wed, Jun 23, 2021 at 10:27 AM Douglas Leonard <dleonard.dev@gmail.com> wrote:
Show 18 quoted lines
>
>
> Hi all,
>
> For a very quick introduction, I'm a career physicist. I just thought I'd share a detailed method and implementation I developed to improve on shortcomings of subtrees.
>
> This says it all
> https://gitlab.com/douglas.s.leonard/alltrees/-/wikis/home
>
> But to repeat a little...
>
> First, it allows a container "sub" tree, ie syncing only the non "sub" parts of the tree to a repo.  But maybe more importantly, when it pulls from the trees it's able to "remap" or reconstruct old commits back to their originals to avoid the duplicate commit issue of subtrees.  This is round-trip reproducible so consistency is kept both ways. It avoids the need for squash with subtrees. Compare the two images in the wiki to see the difference between subtree without squash and alltrees. Non-FF changes made in a tree repo show as branched and merged. Traditional advantages of subtrees are kept, primarily that users/developers of any one repo don't need any awareness of how to use the subtrees or the other repos.
>
> I have used this some, but not extensively yet.  In my use it has worked.  I think it's pretty quick, but I haven't tested on large projects.
>
> Cheers,
> Doug Leonard
>
Douglas Leonard· Jun 11, 2023, 08:11 UTC · re: Douglas Leonard · lore

Re: git-alltrees: root trees and subtrees without duplicate commits.

Just an update, this has been cleaned up with a python implementation, with a decent bit of added functionality, particularly tag-renaming, and it's been working well. It's already pip installable. Maybe I'll get around to adding it to pypl.. maybe.

Cheers, Doug

On Thu, Jun 24, 2021 at 8:55 AM Douglas Leonard <dleonard.dev@gmail.com> wrote:
Show 31 quoted lines
>
> For what it's worth, a demonstration script is included which makes
> parallel changes on various local and remote repos and does origin and
> subtree push/pull..
> In future plans... it's possible to fully reintegrate the subtree
> commits into the full branch point file tree locally so that they are
> cherry-pickable too, as if all changes were made on complete local
> branches.
>
> Regards,
> Doug
>
> On Wed, Jun 23, 2021 at 10:27 AM Douglas Leonard <dleonard.dev@gmail.com> wrote:
> >
> >
> > Hi all,
> >
> > For a very quick introduction, I'm a career physicist. I just thought I'd share a detailed method and implementation I developed to improve on shortcomings of subtrees.
> >
> > This says it all
> > https://gitlab.com/douglas.s.leonard/alltrees/-/wikis/home
> >
> > But to repeat a little...
> >
> > First, it allows a container "sub" tree, ie syncing only the non "sub" parts of the tree to a repo.  But maybe more importantly, when it pulls from the trees it's able to "remap" or reconstruct old commits back to their originals to avoid the duplicate commit issue of subtrees.  This is round-trip reproducible so consistency is kept both ways. It avoids the need for squash with subtrees. Compare the two images in the wiki to see the difference between subtree without squash and alltrees. Non-FF changes made in a tree repo show as branched and merged. Traditional advantages of subtrees are kept, primarily that users/developers of any one repo don't need any awareness of how to use the subtrees or the other repos.
> >
> > I have used this some, but not extensively yet.  In my use it has worked.  I think it's pretty quick, but I haven't tested on large projects.
> >
> > Cheers,
> > Doug Leonard
> >

← back to recent threads