If i want to break my package manager or mess with dpkg-divert or whatever it is.
Anyways, what's going on here? I took 6 different actions I perform on a normal basis and mapped whats involved. You're updates aren't exactly clear, some are pointing what you do in git and others are just there.
So all the branches are always in the database (those that are served on the remote end, I know there are local branches, I'm not talking about those). So if someone is working in a branch that I don't care about until it's merged, I have to pull the revs in git. This is not necessary in mtn.
As you point out, use the db is in the same directory as the working copy, and yes you can use that database in another working copy. What if i want to kill the working copy that has the database? Or is the database hardlinked into the other wc if i use "git clone -s" or whatever it is?
Also, mtn propagate is a simplified form of explicit _ merge. It merges two heads, that is the distinction and normally what you want to do. However, when theres LOTS of divergence, like say there hasn't been a merge months and theres been a ton of activity. You can use explicit _ merge to make it easier, but breaking up giant divergence to more manageable divergence.
The "only one head per branch" is a difference in implementation. Monotone knows that it will not always solve divergence, and thus embraces it. It is *my* understanding that git forces a lack of divergence by making the developer handle it. But I really have no idea because I haven't ran into divergence with git.
Usher is a concentrator for mtn serve. If you don't use it, you have to pick different ports for each database you want to serve. Think of the old UNIX mantra, "do one thing, and do it well", that's where usher fits in.
Approve is a cert, nothing more. I know you've seen some of the cert system, but I think you missed the point of the approve here. When you do mtn approve -b ${branch name}, monotone will commit a new revision with a branch cert that has a value of the new branch. That is how you branch in monotone. However, you can use mtn approve with no *-b ${branch name}" to sign off on a revision. This can be used for code reviews/signoffs, test results, whatever else you can dream up.
As I mentioned earlier, you don't really explain how to perform these six actions in git. For example, how do you create a new branch from an existing one, how do I work on a new (to me branch) in a new working copy, how do I create a new branch that is completely unrelated to any existing branch, etc.
(note, had to edit this a few times due to the markup messing up the output...)