NAME
Format of URLs - The given URLs are ’overlayed’ according to their
priority, and they get a name (to ease updating only parts).
Such an extended URL has the form
[’name:’{name},][’target:’{t-rev},][’prio:’{prio},]URL
where URL is a standard URL known by subversion -- something like
http://...., svn://... or svn+ssh://....
The arguments before the URL are optional and can be in any order; the
URL must be last.
Example:
name:perl,prio:5,svn://...
or, using abbreviations,
N:perl,P:5,T:324,svn://...
Please mind that the full syntax is in lower case, whereas the
abbreviations are capitalized!
Internally the : is looked for, and if the part before this character
is a known keyword, it is used.
As soon as we find an unknown keyword we treat it as an URL, ie. stop
processing.
The priority is in reverse numeric order - the lower the number, the
higher the priority. (See url__current_has_precedence() )
Why a priority?
When we have to overlay several URLs, we have to know which URL takes
precedence - in case the same entry is in more than one. (Which is not
recommended!)
Why a name?
We need a name, so that the user can say ’<b>commit all outstanding
changes to the repository at URL x</b>’, without having to remember the
full URL. After all, this URL should already be known, as there’s a
list of URLs to update from.
You should only use alphanumeric characters and the underscore here;
or, in other words, \w or [a-zA-Z0-9_]. (Whitespace, comma and
semicolon get used as separators.)
What can I do with the target revision?
Using the target revision you can tell fsvs that it should use the
given revision number as destination revision - so update would go
there, but not further. Please note that the given revision number
overrides the -r parameter; this sets the destination for all URLs.
The default target is HEAD.
Note:
In subversion you can enter URL@revision - this syntax may be
implemented in fsvs too. (But it has the problem, that as soon as
you have a @ in the URL, you must give the target revision
everytime!)
There’s an additional internal number - why that?
This internal number is not for use by the user. It is just used to
have an unique identifier for an URL, without using the full string.
Note:
On my system the package names are on average 12.3 characters long
(1024 packages with 12629 bytes, including newline):
COLUMNS=200 dpkg-query -l | cut -c5- | cut -f1 -d’ ’ | wc
So if we store an id of the url instead of the name, we have approx. 4
bytes per entry (length of strings of numbers from 1 to 1024). Whereas
we’d now use 12.3 characters, that’s a difference of 8.3 per entry.
Multiplied with 150 000 entries we get about 1MB difference in filesize
of the dir-file. Not really small ...
Currently we use about 92 bytes per entry. So we’d (unnecessarily)
increase the size by about 10%.
That’s why there’s an url_t::internal_number.