Hi,

> I wonder why you decided to use Git this way.  IIUC you only use Git's
> tree of refs as your database, so you do not seem to take advantage of
> many of Git's features (e.g. you end up having to write your own gc as
> well as your own code to traverse the dag of messages (to distinguish
> parents which are messages in this issue from parents which are other
> kinds of references)).
After reading this, I didn't have a clue what you meant by advantages,
to be honsest, but only after briefly looking at BuGit.

Well, we looked at some projects. Some of them would store _all_ issue
data in a single branch. Some would even use a single blob containing
all issues, e.g. as JSON, resulting in the obvious merge-problems. One
of the core goals we had was to avoid such problems. Another
requirement was that the system would function somewhat like a
mailing-list. The latter lead to the idea of laying out the data as a
tree of messages.

BuGit's data storage surely looks interesting, and does not have some
of the inconveniences git-dit has. However, the data-layout of git-dit
also has it's perks. For example, merge-conflicts simply cannot occur
(not counting attachments, which are not supported yet).

If I'm reading the BuGit source correctly, replies are simply added to
the description. If you have two concurrent replies, you end up with
the necessity of a merge with all the associated problems. With
git-dit, replies can never conflict (if they don't end up having the
same hash). Sure, we require a garbage-collector. We also need to
aggregate metadata (at least for that, work-arounds exist). But the
_hard_ problem of resolving conflicts of concurrent modifications of an
issue is simply non-existent for us.

Sidenote regarding the traversal: we actually require only little extra
code. `git for-each-ref` and libgit2 already support following only the
first parent (which is important for us). We only need some code for
identifying an initial message and "fusing" the iteration at that point.

Btw., it never occured to us to move some metadata into the tree the
way BuGit does. It would surely work for some classes of issues. But we
also want to support patch-sets and for them it would be problematic.

Regards,
Jule

PS: Matthias and I were encouraged adding git-dit to this wiki:
https://dist-bugs.branchable.com/software/
Care doing so for BuGit?
_______________________________________________
dist-bugs mailing list
[email protected]
https://kitenet.net/cgi-bin/mailman/listinfo/dist-bugs

Reply via email to