monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] Re: mtn:// sync


From: Matthew Nicholson
Subject: Re: [Monotone-devel] Re: mtn:// sync
Date: Thu, 27 Mar 2008 23:08:01 -0500
User-agent: Mozilla-Thunderbird 2.0.0.9 (X11/20080109)

Markus Schiltknecht wrote:
Hi,

Timothy Brownawell wrote:
It will be in addition to the current syntax, so what works now will
still work.

Okay, that's fine.

Yes, '&' and especially '!' aren't good characters for shells. I think
I'll use the suggestions of '/' and '-' instead (still in the query
string instead of the path, so it'll work with file:// and ssh:// sync).

Yeah, that looks better for shells. However, I'm wondering somewhat how you want to find the end of the URL and beginning of include/exclude patterns.

So, am I right in assuming we are talking about such URLs like these:

 * mtn://monotone.ca/net.venge.motonone*
 * mtn://monotone.ca/net.venge.motonone*-net.venge.monotone.experiment
 * file:/tmp/test.db/org.foo*/org.bar*-org.foo.unwanted/org.bar.unwanted


Do we still need the asterisk? Quite a while ago, Lapo was complaining, that net.venge.monotone* would not only mean branches net.venge.monotone and net.venge.monotone.*, but also net.veneg.monotone-foo. That's a valid concern, IMO.
>
Now, I know we didn't ever hardcode the dot as a branch name separator (IIRC). However, most people *are* using dot-separated branch names. And for policy branches - possibly also for nuskool - we should probably switch to enforce such a hierarchical branch naming anyway.

I don't like this idea. One of the things I like about monotone is that it does not force you to think like its developers think when it comes to naming branches. As a side note, I do like '.' as a branch separator, but not the reverse domain name prefixes (I think some sort of namespace support would be better).

So, I'm proposing to get rid of the asterisk entirely, making "net.venge.monotone" mean: that branch and "net.venge.monotone.*" (but not "net.venge.monotone-foo". I'm assuming that's what you want most of the time anyway. If you really want to sync only "net.venge.monotone" and none of it's children, you'd have to explicitly exclude them. So it would look more like:

I don't think making net.venge.monotone mean {net.venge.monotone,net.venge.monotone.*} is a good idea either. When I ask for net.venge.monotone that is what I want, not it and all of its children. If I want all of its children, I can explicitly ask for those too. In fact, I have never wanted all of its children.

 * mtn://monotone.ca/net.venge.motonone

Or for nvm only, excluding child branches:

 * mtn://monotone.ca/net.venge.motonone-net.venge.monotone.*


As we need to change branch naming policies (prohibit use of '-' and '/') it seems like it's a good time for rethinking branch naming policies.

This would break some existing databases (mine being one) and would either need to be handled by supporting branch renaming (magical policy branches?) or by renaming the branches as part of a migration (which is difficult to handle automatically).

--
Matthew Nicholson
matt-land.com




reply via email to

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