monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] What are rosters?


From: William Uther
Subject: [Monotone-devel] What are rosters?
Date: Fri, 17 Aug 2007 17:03:53 +1000

Hi,
I'm trying to make DieDieDie merge go away. I think I'm close, but I need to understand the core monotone code better....

  So, er, exactly what are rosters?

I've read NJS's post here: http://lists.gnu.org/archive/html/ monotone-devel/2005-11/msg00102.html but it mainly just says what they are used for. It doesn't explain what data is stored in them, or how. I also found this page: http://wiki.vestasys.org/ToolComparison/ Monotone which has some details, but not too many.

At the moment my rough guess is that a roster contains a list of nodes, their content hashes, and a list of marks for mark-merge on where the content changed (and it wasn't a conflict-free merge). It only contains marks for existing files. I'm also assuming that there is some pruning for older marks of existing files. "By *(A), we mean we set of minimal marked ancestors of A."

  So, is there a magic piece of documentation I'm missing?

In particular, it seems that sometimes rosters are stored as deltas, and sometimes complete. Is there any rhyme or reason here? Head is complete, others are reverse deltas? Root is complete, others are forward deltas?

My next question might be easier... What's an easy way to get a list of added or dropped files in a revision. I'm thinking of a function I could call from merge.cc : interactive_merge_and_store(), and it would give me a list of node_ids. Having added and dropped files separately would be nice - maybe two functions?

Finally, assuming I've worked out the merging issues (which depends upon the answers above), I'd want to add a new command to allow the resurrection of files. I'm assuming the command would take a file name and a revision and an optional new file name. It would then behave very similarly to the rename command... get the old roster, clone the node, attach the new node to the new roster. Does that sound about right?

Thanks for any input,

Will        :-}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]