On 4/17/2017 8:24 PM, Warren Young wrote:
On Apr 17, 2017, at 7:27 PM, Ross Berteig <r...@cheshireeng.com> wrote:
On 4/14/2017 9:15 PM, Warren Young wrote:
On Apr 14, 2017, at 5:09 PM, Ross Berteig <r...@cheshireeng.com> wrote:
1. It doesn’t tell you that globs and regexes are not the same thing.
True, it probably should.I'll work that into the second paragraph.
Better, but I wouldn’t say that regexes and globs are *related* so much as that
they both use some of the same special characters and both come to us out of
the Unix tradition.
I’m a bit of a student of Unix history, and I never recall hearing that globs
were developed from regexes or vice versa. As I understand it, they are just
two competing good ideas that both managed to survive within Unix because they
meet different needs: globs are simpler and thus more suited to ad-hoc pattern
matches on the command line, whereas regexes are more powerful and thus well
suited to scripts and compiled programs where the cost of crafting them can be
repaid many times through reuse.
They share some special characters because ASCII doesn’t have a whole lot to
choose from, not because they’re purposely half-compatible.
They are related because they are both notations for describing patterns
in text. You certainly can transform a glob into a regexp with a set of
very simplistic substitutions. Regexps are stronger in that you can say
more elaborate things.
But I'll reword because it still doesn't quite say what is needed.
3. GLOB is all-caps in Fossil help output because it’s a variable parameter
It is also the SQL operator that implements the pattern.
That feels like plumbing to me, not porcelain. Know your audience.
I'll preserve the all caps usage if I quote the command help, and otherwise use the word
"glob" as short for "glob pattern" most places.
You’ve still got an all-caps GLOB in the first header.
I could weasel and claim I did that because the only likely user
exposure to the term within fossil would be the help text. But instead,
I'll fix it. And also notice that the title here and in mkindex.tcl were
different even before that fix.
Do you prefer "filename" or "file name"?
I had used "file name" or just "name" in most of the text. I used "file
name" in the page title, but "filename" in the version of the title
provided to the index. I've regularized it to "file name" everywhere now.
That whole rest of the section is really just my whining about the state of the
current docs.
Right, but this document fixes the problem, and the eventual readers don’t need
to know there once was a problem. :)
Well, I hope it does at least!
There is no dependency on libics, and since the Image Cytometry Standard has
little impact on us, I'm not that surprised. ;-) ICU on the other hand
Yes, yes, *that* libics. The one where “s” is spelled “u”. :)
But I don't see any dependency on ICU4C, or any other Unicode support library.
See ext/icu/icu.c in the SQLite source code. It’s an optional dependency: you
can build SQLite with ICU or without it.
I didn't know that. But can fossil's build do that and does it take
advantage of it if it does? There's no selection for it in ./configure
and those are just about the only configuration options I've ever
wiggled here.
I also wonder if the SQLite intent was to follow POSIX or just a general sense of
"Unix is like this”.
There’s no one to enforce POSIX conformance in SQLite or Fossil; you can’t get
certified in that way.
But, there’s also no point being needlessly incompatible, if only to avoid
violating the principle of least surprise.
(There’s an obscure POSIX rule that says two leading slashes must be left
untouched...
Windows users expect \\SERVER\Share\some\file.txt to make sense.
Yes, I suspect the POSIX path rule is some kind of sop towards UNC.
Cygwin was able to take advantage of that rule: it understands
//server/share/path/to/file.txt for example. That’s why I know the rule: they
had to be careful not to break that behavior.
Occasionally, some path manipulation code will accidentally build up a double
leading slash on Cygwin, causing the victim to report that Cygwin has suddenly
gotten really slow, and obviously Cygwin has a bug. Then later, we learn that
the code has built up something like //usr/bin/vi, so it’s looking for a file
server named USR with a share called BIN, then taking a long time to get a DNS
timeout on the server name lookup.
Couple that with WINS lookup timeouts or poorly-configured AD DNS setups, and
this sort of error can turn into a major speed trap.
Yup. Been there. Got the bruises.
18. The “Where are they used” and “Platform quirks” headers should be bigger.
I think you have your # character counts mixed up in the Markdown source. (Or
---- where you mean ====, if you do your headings that way; I didn’t bother
looking.)
They are the same header level as Syntax and File Names to Match.
So they are. It appears to be a CSS problem on fossil-scm.org. <h2> is styled as
1.05 em high but <h3> is 1.17 em. Is it a default skin bug or an error in later
hand-customization?
The first header should use “#” rather than ======== styling, for consistency,
though.
I suspect the right answer here is to drop all mention of any matching other
than ms=GLOB, leaving the meanings of EXACT, LIKE, GLOB, and REGEXP in that
context to some other documentation entirely.
I agree. Again, porcelain vs. plumbing.
This entire document is actually about GLOB the SQLite operator.
Yes, but the reader doesn’t need to know that it is implemented in terms of
SQLite’s GLOB. The reader just needs to know what the rules are.
26. If you’re going to cover `.fossil-settings` here at all, make it clear that
this must be at the top level of the checkout directory.
...It is a lot more powerful to just say *.bak in one file instead of needing
it in every folder.
I don’t think we need to justify the way it is. This is just a good place to
document the fact that .fossil-settings/ignore-glob is not *quite* the same
thing as .gitignore. Similar purposes, but not 1:1 compatible.
My sense at the moment is that a separate document that takes either Git, SVN,
or CVS as the example would be the right answer for this since it is so
specific to a single setting.
An alternate viewpoint is that almost everyone using Fossil will have used some
other SCM tool in the CVS .cvsignore tradition, so when they first see the
versioned form of ignore-glob, they’ll go “Oh, I know what that is,” then
proceed to get bit by the impedance mismatch.
Let’s round that speed bump out a bit, ‘kay?
let you see the hash I made to the top half of the document
I stopped at “Platform quirks.” That is the dividing point you mean?
Yes, that is where I realized I should go make dinner and checked it in.
What I see is much better than the first version.
Some of the new material invites more comment, however:
1. “…match files either on the disk or in the active checkout…” Maybe I’m
missing something, but that looks like a distinction without a difference to me.
Probably my tendency to be pedantic poking out. But ignore-glob is
matched to names on disk and not in the repository, see the recent
kerfuffle on fossil-users caused by a new user who checked in a bunch of
fluff then set ignore-glob and was surprised that didn't immediately
stop fossil from tracking the fluff.
I think for an introduction, though, I can soften that to just
"...identify files needing special treatment...."
2. “If a glob must contain commas or spaces, surround it with single or double
quotation marks.” You repeat this two paragraphs later. I’d rather you held
off on this until the Syntax section. (That is, keep the second.)
Sure. Again, introduction can omit a detail for clarity that is
corrected later.
3. “Some examples of character lists:…” I’d merge this list of examples into
the first bullet point, as they are basically just illustrations of this same
point. The next point (…[A-z]…) could merge in here as well. Markdown
supports paragraph breaks inside a bullet point, if that’s all you were after.
I'll fuss with the order here a bit. The first bullet is trying to
define a range in a list, using an example. The next few bullets define
a few special cases that make it possible to name all (printable, at
least) characters in the character list notation.
4. “The glob */README does match src/README…” Maybe add *README as a way to
match all README files in the checkout tree.
But *README also matches YOUBETTERREADME as well as YOU/BETTER/README.
I'll see if I can think up some more compelling examples.
5. “operator in [SQLite][].” Missing link target. But if you remove the
discussion of the plumbing, this will go away anyway.
I rewrote that paragraph and lost that link entirely. I added links to
the documentation of each command and web page to that and nearby
paragraphs.
But perhaps, given the scale of that edit, you should get credit in the change
log for writing it. Richard shouldn't have any qualms about giving you checkin
privileges…
If y’all want me to check that in separately, let me know.
What with the postal holiday here in the US and the postal surge of Tax Day, I
wouldn’t expect my agreement to arrive in North Carolina before Friday.
I ended up having to email him a photo of my signature. I don't know if
the original ever arrived or not. He set up my access minutes after that
email exchange.
Either way, I might poke at the Platform Quirks section this afternoon.
It certainly
--
Ross Berteig r...@cheshireeng.com
Cheshire Engineering Corp. http://www.CheshireEng.com/
+1 626 303 1602
_______________________________________________
fossil-dev mailing list
fossil-dev@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/fossil-dev