fossil ui command on windows requires full path
(1.1) By James (james123) on 2024-07-22 23:24:20 edited from 1.0 [link] [source]
The fossil ui
command on windows 10, 64 bit (in cmd.exe) requires the user to specify the full path to the fossil file.
For example, observe the following commands:
c:\dev>fossil init test.fossil
project-id: 7b62b5bc581c98b3023e6be7bca6e50834481a1e
server-id: e0190e558ba87b75d1892f5419218d4e475163ca
admin-user: James (initial password is "8MRPiHedv4")
c:\dev>fossil ui test.fossil
Temporary files: C:\Users\James\AppData\Local\Temp\fossil\fossil_server_P8080*
Listening for HTTP requests on TCP port 8080
Launch webbrowser: start "" "http://localhost:8080/" &
Type Ctrl-C to stop the HTTP server
repository does not exist or is in an unreadable directory: test.fossil
repository does not exist or is in an unreadable directory: test.fossil
repository does not exist or is in an unreadable directory: test.fossil
repository does not exist or is in an unreadable directory: test.fossil
repository does not exist or is in an unreadable directory: test.fossil
repository does not exist or is in an unreadable directory: test.fossil
^C
c:\dev>dir test.fossil
Volume in drive C is Local Disk
Volume Serial Number is DAD9-FB3C
Directory of c:\dev
07/22/2024 05:01 PM 229,376 test.fossil
Whereas the following command (using the full path) works correctly.
c:\dev>fossil ui c:\dev\test.fossil
Temporary files: C:\Users\James\AppData\Local\Temp\fossil\fossil_server_P8080*
Listening for HTTP requests on TCP port 8080
Launch webbrowser: start "" "http://localhost:8080/" &
Type Ctrl-C to stop the HTTP server
^C
Any attempt to use shorthand abbreviations for the current directory (e.g. .test.fossil, ..devtest.fossil, etc.) also do not work.
Edited to add: Starting fossil ui
inside a checkout directory also doesn't work.
c:\dev>md fossil
c:\dev>cd fossil
c:\dev\fossil>fossil open c:\dev\test.fossil
project-name: <unnamed>
repository: c:\dev\test.fossil
local-root: c:/dev/fossil/
config-db: C:/Users/James/AppData/Local/_fossil
project-code: 7b62b5bc581c98b3023e6be7bca6e50834481a1e
checkout: ae5988e06c0cad0081de8d05b195561cde7a84f6 2024-07-22 23:01:21 UTC
tags: trunk
comment: initial empty check-in (user: James)
check-ins: 1
c:\dev\fossil>fossil ui
Temporary files: C:\Users\James\AppData\Local\Temp\fossil\fossil_server_P8080*
Listening for HTTP requests on TCP port 8080
Launch webbrowser: start "" "http://localhost:8080/timeline?c=current" &
Type Ctrl-C to stop the HTTP server
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
current directory is not within an open check-out
^C
(2) By Florian Balmer (florian.balmer) on 2024-07-23 05:40:27 in reply to 1.1 [link] [source]
I quickly tested this with the latest official Fossil version 2.24 (32-bit)1 on Windows 11 and Windows
XP, and everything works fine for me, i.e. I can specify absolute, relative or
no paths to fossil ui
.
- Does it work for you with the Fossil version indicated above?
- Are you using a Fossil build that relies on a custom C runtime library / environment, such as Cygwin?
- Is
C:\dev
a regular directory on a regular NTFS volume on a normal HDD? And not a directory junction or symlink to another directory on another volume, possibly with another file system? - You don't happen to use a Fossil wrapper that sets the
--chdir
option? (Don't know why you would, maybe from some testing. I used to have this on my webserver, so I could type Fossil commands from anywhere that worked on my repos all in one directory. Back in the days when I din't have shell access to my webserver, and it was handy for my custom-built CLI web UI.)
(4) By James (james123) on 2024-07-23 06:06:48 in reply to 2 [link] [source]
- Does it work for you with the Fossil version indicated above?
Here's what I'm using. I just downloaded it today so I assume it's the latest.
c:\dev>fossil version
This is fossil version 2.24 [8be0372c10] 2024-04-23 13:25:26 UTC
Note that I'm running 64 bit, not 32 bit and I'm on Windows 10, not 11. Significant differences there.
I'm also doing this in an "administrator" (elevated) command prompt (cmd.exe) NOT in windows powershell. Those, again, may make a huge difference.
- Are you using a Fossil build that relies on a custom C runtime library / environment, such as Cygwin?
I'm using the executable from fossil-w64-2.24.zip
pulled directly from the download page.
- Is C:\dev a regular directory on a regular NTFS volume on a normal HDD? And not a directory junction or symlink to another directory on another volume, possibly with another file system?
c:\dev is a normal directory off the root of the NTFS drive. It's a standard SSD on a vanilla Microsoft tablet.
- You don't happen to use a Fossil wrapper that sets the --chdir option? (Don't know why you would, maybe from some testing. I used to have this on my webserver, so I could type Fossil commands from anywhere that worked on my repos all in one directory. Back in the days when I din't have shell access to my webserver, and it was handy for my custom-built CLI web UI.)
Again, I'm just running the vanilla fossil.exe that I extracted from the zip archive listed above.
Tue 04/23/2024 07:27 AM 10,290,176 c:\public\fossil.exe
(7) By Florian Balmer (florian.balmer) on 2024-07-23 06:17:55 in reply to 4 [link] [source]
Note that I'm running 64 bit, not 32 bit and I'm on Windows 10, not 11. Significant differences there.
To me, Windows 10 and Windows 11 are "identical" regarding the OS core, and 32-bit programs are translated on the fly to 64-bit, so I don't see why there should be any differences in file system access.
But of course I may be wrong, and some Windows 10 / Windows 11 or some 32-bit / 64-bit difference may explain the problem. I'll see if I can test this on a Windows 10 VM, maybe tonight (UTC+01:00) if I can find the time.
(8.1) By James (james123) on 2024-07-23 06:43:05 edited from 8.0 in reply to 4 [link] [source]
I just pulled the 32 bit version of fossil and I have the identical behavior on my system.
I also tried running both 64 and 32 bit versions in non-elevated command prompt and in powershell. Exactly the same behavior as before on my system.
BUT - I FOUND THE PROBLEM
I'm using clink in my command prompts. It's set to "autorun" in each command prompt.
When I turn that off (clink autorun uninstall
) and launch a new command prompt then fossil ui test.fossil
works.
My guess is that fossil is starting some tasks in the background to run the UI portion via calls to cmd.exe and somehow what clink is doing messes that up. This would explain why it also fails in powershell even though clink isn't running in powershell.
Edited to add: Here's the link to the bug report on github for clink.
(9) By Florian Balmer (florian.balmer) on 2024-07-23 14:31:02 in reply to 8.1 [source]
Thanks for the follow-up!
Ah, yes, I forgot about that! When I was distributing a moderately well-known open source program and received a lot of error reports, my checklist had an item to ask about 3rd-party software.
The number of low-level tools installed on Windows computers 20-30 years ago was amazing, mostly to extend mouse functionality, or keyboard extensions for shortcut expansion and autocompletion (in GUI programs). And they interfered with everything!
Nowadays, many of these functions, which previously required extra tools, are built into Windows, such as scrolling inactive windows with the mouse wheel or touchpad, for example.
(10) By James (james123) on 2024-07-23 18:15:12 in reply to 9 [link] [source]
I found that there is a newer fork of the clink tool that does not have this issue.
https://github.com/chrisant996/clink
You can close this ticket
(3) By Florian Balmer (florian.balmer) on 2024-07-23 05:52:24 in reply to 1.1 [link] [source]
Another thing that may make "files and directories disappear" is UAC file system virtualization, but this is disabled in Fossil1. You'd have to work on an elevated ("Administrator") command prompt, and use a Fossil build with a custom executable manifest.
And, antivirus software can do a lot of things, so if there's a special setup in this regard, try disabling it temporarily.
Just collecting ideas.
(5) By James (james123) on 2024-07-23 06:08:10 in reply to 3 [link] [source]
I'm running in an "elevated / administrator" cmd.exe command prompt. There shouldn't be any UAC virtualization.
I don't have any odd anti-virus that should be interfering.
(6) By Florian Balmer (florian.balmer) on 2024-07-23 06:17:07 in reply to 3 [link] [source]
You'd have to work on an elevated ("Administrator") command prompt, and use a Fossil build with a custom executable manifest.
Not quite. Work on a normal command prompt with a Fossil build with a custom
executable manifest, and access to C:\dev
restricted for the current user.