On Oct 16, 2017, at 7:28 PM, Andy Goth <andrew.m.g...@gmail.com> wrote:
> 
> I don't have the luxury of Cygwin because my end users won't have it.

You can just distribute the DLL, then.

In cases where your users *may* have Cygwin installed, it is considered polite 
to install the DLL only when it doesn’t already exist on the target system, so 
that the preexisting one is used where present.  If you don’t, you create two 
independent Cygwin worlds on the machine, which can lead to interop problems 
when one Cygwin program calls another that is using a different DLL.

> It's already like pulling teeth (don't get me started) to get them to
> allow fossil.exe to be on the install CD

You can have an EXE but not a DLL linked to that EXE?  I suppose dynamic 
linkage does increase the attack surface area, but it’s a pretty thin argument.

I’m not aware of any independent audit of Cygwin, but it’s got to be at least 
as well community-tested as Fossil itself, having a much larger audience.

> I'm not the one doing the reinventing.

Except you are: there are at least 4 other existing implementations of symlinks 
for Windows, and you’ve just built a fifth.

Yes, I get your point, Microsoft invented 3 of those before you got there, and 
they all suck in some ways — *.lnk, MKLINK, and WSL — but fixing that just 
leads to the XKCD “Standards” problem:

   https://xkcd.com/927/

At least if you go with Cygwin, you’re just making use of an existing standard, 
which is widely recognized.

>> 1. Just copy files on checkout, and try to do the right thing with
>> changes to “linked” files on checkin.  (Is this not the current
>> behavior for native Windows builds?)
> 
> No, the current behavior for native Windows Fossil is to create ordinary
> files containing the name of their target (no trailing newline).

I see why people keep trying to fix the problem, then.

>> 2. Use Cygwin...https://cygwin.com/licensing.html
> 
> That licensing update is good to know, but as I said elsewhere in my
> email, the code is developed and deployed using Tcl Starpacks, and on
> Windows I prefer to use the standard builds thereof rather than make
> Cygwin versions.

Native Windows EXEs can call Cygwin EXEs, and vice versa.  If the Tcl code 
doesn’t need to follow Fossil-created symlinks, Tcl needn’t be built under 
Cygwin.

Though if you wanted, the Cygwin package repository should have a wide variety 
of Tcl stuff.

>> 4. Fake symlinks somehow, like Cygwin does in its default mode.
>> (Cygwin’s symlink handling is complex; thus #2.  See:
>> https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks)
>> Ranked still lower because it’s reinventing a perfectly good existing
>> wheel.
> 
> Faking symlinks is exactly what I did all along.

My point #4 is a broad category, but my choice to treat all of the solutions 
that fall into it as a single option doesn’t mean all options in the category 
are equal.  Using one of the existing options is better than inventing a new 
one, particularly if it’s widely recognized.

By that reckoning, I’d rank *.lnk above Cygwin symlinks in many regards.  Why 
wouldn’t that work?

>> Why is your way superior to all of these?
> 
> I'm simply refining option #4.

No, you’re adding a new thing to the #4 bag.  Not the same thing as selecting 
something already in the #4 bag.

>> My parents had a mechanical typewriter that didn’t even have a “1”
>> key: you were expected to use the “l” key.  I don’t remember if it
>> also lacked a 0 key.
> 
> Mine didn't have "!" (no "1" so where would they put it?) because it's
> easy enough to type period-backspace-apostrophe.

I found one on eBay: it has a 0 and no !.  :) 

>> There must be a better way to enable this: “2”, capital “L”, etc.
> 
> I think "s" is the best choice if it's not deemed important to use the
> same letter as the manifest file uses.

Doesn’t that scheme mean you can’t have normal manifests plus symlink 
manifests?  Maybe you should go with “2” so that “3” = 1 | 2, giving both files.
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to