Ticket UUID: | 1b340a484994db1829fc2224ac61ff95f4cfbe28 | ||
Title: | fossil writes to my home directory or fails if $HOME is unset | ||
Status: | Open | Type: | Feature_Request |
Severity: | Priority: | Low | |
Subsystem: | Resolution: | Open | |
Last Modified: | 2011-06-02 02:46:51 | ||
Version Found In: | e5e6ca4659 | ||
Description & Comments: | |||
Various, perhaps all, commands operating on a fossil repository fail if
$HOME is unset in the environment. I regularly clear my environment
except for PATH=/bin:/usr/bin:/usr/local/fossil/20110531/bin in order
to get reproducible behaviour out of programs, but fossil fails. It is
not obvious why fossil cares about $HOME at all.
I was very unpleasantly surprised to learn not only that fossil cares that $HOME be set, but also that fossil writes to my home directory when I didn't ask it to, which is absolutely unacceptable behaviour. I can't fathom why fossil would ever write to any file outside a repository that I asked it to write: this is extremely counterintuitive behaviour for a source code revision control system. I tried `mkdir ~/.fossil' to force fossil to give up writing to my home directory, which works to stymie many programs that misbehave similarly, but fossil refused to proceed after failure to open ~/.fossil as an sqlite database. anonymous claiming to be mgagnon added on 2011-05-31 21:13:32 UTC: Fossil Store the list of repository you have on your system (which use the "fossil all" command) and global settings. e.g. if you want to use meld as diff program, you can set it globally, so you will not have to set this on every repository. regards. anonymous added on 2011-05-31 23:18:50 UTC: This is unacceptable because by writing to my home directory the program is performing destructive functions I did not ask it to perform. These destructive functions do not fit into my mental model of what the program is supposed to be doing, which makes using the program very confusing and unpleasantly surprising. It would be acceptable for a program to edit update my home directory when that is the particular function I request of it. It is not acceptable for a program to change the state of my disk, or to fail on a read-only file system, when its purpose is only to show me some information about a repository. Example: `git config --global' is supposed to write to ~/.gitconfig because that's the purpose of the command. But `git log' doesn't write to my home directory, or anywhere at all but to stdout, because its purpose is only to be a nondestructive operation to reproducibly tell me about the state of the repository. Example: Darcs can be instructed to store a patch cache in ~/.darcs/cache, if you request it, but Darcs will not write there if you don't request it. anonymous claiming to be mgagnon added on 2011-06-01 11:28:34 UTC: However, it's may be a bit excessive to fail if this ~/.fossil file cannot be found or open for a command like "fossil timeline" which would be able to do the work without it. anonymous added on 2011-06-02 02:46:51 UTC: Changing the state of my home directory destroys the previous state. |