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
