Fossil SCM
Remove control characters from rse-notes.txt.
Commit
9a482dd7011db01220b6889573f6646ead5db593
Parent
e8c4f69c50ecbe4…
1 file changed
+138
-138
+138
-138
| --- rse-notes.txt | ||
| +++ rse-notes.txt | ||
| @@ -8,191 +8,191 @@ | ||
| 8 | 8 | While I looked around and tested it, I stumbled over some issues I want |
| 9 | 9 | to share with you: |
| 10 | 10 | |
| 11 | 11 | o No tarball |
| 12 | 12 | |
| 13 | - You currently still do not provide any tarballs of the Fossil sources. | |
| 14 | - Sure, you are still hacking wild on the code and one can on-the-fly | |
| 15 | - fetch a ZIP archive, but that's a manual process. For packagers (like | |
| 16 | - me in the OpenPKG project) this is very nasty and just means that | |
| 17 | - Fossil will usually still not be packaged. As a result it will be not | |
| 18 | - spreaded as much as possible and this way you still do not get as much | |
| 19 | - as possible feedback. Hence, I recommend that you let daily snapshot | |
| 20 | - tarballs (or ZIP files) be rolled. This would be great. | |
| 13 | + You currently still do not provide any tarballs of the Fossil sources. | |
| 14 | + Sure, you are still hacking wild on the code and one can on-the-fly | |
| 15 | + fetch a ZIP archive, but that's a manual process. For packagers (like | |
| 16 | + me in the OpenPKG project) this is very nasty and just means that | |
| 17 | + Fossil will usually still not be packaged. As a result it will be not | |
| 18 | + spreaded as much as possible and this way you still do not get as much | |
| 19 | + as possible feedback. Hence, I recommend that you let daily snapshot | |
| 20 | + tarballs (or ZIP files) be rolled. This would be great. | |
| 21 | 21 | |
| 22 | 22 | o UUID |
| 23 | 23 | |
| 24 | - Under http://www.fossil-scm.org/index.html/doc/tip/www/concepts.wiki | |
| 25 | - you describe the concepts and you clearly name the artifact ID a | |
| 26 | - "UUID" and even say that this is a "Universally Unique Identifier". | |
| 27 | - Unfortunately, a UUID is a 128-bit entity standardized by the ISO | |
| 28 | - (under ISO/IEC 11578:1996) and IETF (under RFC-4122) and hence it is | |
| 29 | - *VERY MUCH* confusing and unclean that your 160-bit SHA1-based ID is | |
| 30 | - called "UUID" in Fossil. | |
| 31 | - | |
| 32 | - I *STRONGLY* recommend you to either use real UUIDs (128-bit | |
| 33 | - entities, where a UUID of version 5 even is SHA1-based!) or you name | |
| 34 | - your 160-bit SHA1 entities differently (perhaps AID for "Artifact | |
| 35 | - Identifier"?). | |
| 24 | + Under http://www.fossil-scm.org/index.html/doc/tip/www/concepts.wiki | |
| 25 | + you describe the concepts and you clearly name the artifact ID a | |
| 26 | + "UUID" and even say that this is a "Universally Unique Identifier". | |
| 27 | + Unfortunately, a UUID is a 128-bit entity standardized by the ISO | |
| 28 | + (under ISO/IEC 11578:1996) and IETF (under RFC-4122) and hence it is | |
| 29 | + *VERY MUCH* confusing and unclean that your 160-bit SHA1-based ID is | |
| 30 | + called "UUID" in Fossil. | |
| 31 | + | |
| 32 | + I *STRONGLY* recommend you to either use real UUIDs (128-bit | |
| 33 | + entities, where a UUID of version 5 even is SHA1-based!) or you name | |
| 34 | + your 160-bit SHA1 entities differently (perhaps AID for "Artifact | |
| 35 | + Identifier"?). | |
| 36 | 36 | |
| 37 | 37 | o "fossil cgi <script>" |
| 38 | 38 | |
| 39 | - Currently we have only "fossil cgi <script>" where <script> contains | |
| 40 | - "repository: <file>". This is a neat idea and should be kept. But | |
| 41 | - this way one cannot easily host multiple repositories over this | |
| 42 | - CGI interface without creating such a script for every individual | |
| 43 | - repository. | |
| 44 | - | |
| 45 | - Perhaps a "fossil cgi --repository <file>" would help here, as this | |
| 46 | - way one can use a generic CGI script which first figures out the | |
| 47 | - name <name> of the individual project and then runs "fossil cgi | |
| 48 | - --repository /path/to/repositories/<name>.db". But perhaps I'm just | |
| 49 | - overlooking something and this is already possible... | |
| 39 | + Currently we have only "fossil cgi <script>" where <script> contains | |
| 40 | + "repository: <file>". This is a neat idea and should be kept. But | |
| 41 | + this way one cannot easily host multiple repositories over this | |
| 42 | + CGI interface without creating such a script for every individual | |
| 43 | + repository. | |
| 44 | + | |
| 45 | + Perhaps a "fossil cgi --repository <file>" would help here, as this | |
| 46 | + way one can use a generic CGI script which first figures out the | |
| 47 | + name <name> of the individual project and then runs "fossil cgi | |
| 48 | + --repository /path/to/repositories/<name>.db". But perhaps I'm just | |
| 49 | + overlooking something and this is already possible... | |
| 50 | 50 | |
| 51 | 51 | o "fossil db <operation>" |
| 52 | 52 | |
| 53 | - In Monotone DVCS we have a "mtn db" command for the low-level SQLite | |
| 54 | - database manipulations. For instance a "mtn --db=<monotone-repository> | |
| 55 | - db dump" is more or less equal to a "sqlite3 <monotone-repository> | |
| 56 | - .dump". A "mtn --db=<monotone-repository> db exec '<SQL>'" is equal | |
| 57 | - "echo '<SQL>' | sqlite3 <monotone-repository>", etc. The point is | |
| 58 | - that the DVCS user usually has no SQLite CLI at hand but as the DVCS | |
| 59 | - already contains more or less the complete SQLite it is very useful to | |
| 60 | - also include the SQLite CLI functionality and wire it into the DVCS | |
| 61 | - CLI via a "db" command. | |
| 53 | + In Monotone DVCS we have a "mtn db" command for the low-level SQLite | |
| 54 | + database manipulations. For instance a "mtn --db=<monotone-repository> | |
| 55 | + db dump" is more or less equal to a "sqlite3 <monotone-repository> | |
| 56 | + .dump". A "mtn --db=<monotone-repository> db exec '<SQL>'" is equal | |
| 57 | + "echo '<SQL>' | sqlite3 <monotone-repository>", etc. The point is | |
| 58 | + that the DVCS user usually has no SQLite CLI at hand but as the DVCS | |
| 59 | + already contains more or less the complete SQLite it is very useful to | |
| 60 | + also include the SQLite CLI functionality and wire it into the DVCS | |
| 61 | + CLI via a "db" command. | |
| 62 | 62 | |
| 63 | 63 | o "fossil version" |
| 64 | 64 | |
| 65 | - Mostly all VCS I know if either support a command "version" or a | |
| 66 | - command-line option "--version" or most of the time even both. Please | |
| 67 | - output the "This is fossil version [9e80dc66cf] 2008-10-18 13:03:36" | |
| 68 | - there (at least additionally) instead of at the end of "fossil help". | |
| 65 | + Mostly all VCS I know if either support a command "version" or a | |
| 66 | + command-line option "--version" or most of the time even both. Please | |
| 67 | + output the "This is fossil version [9e80dc66cf] 2008-10-18 13:03:36" | |
| 68 | + there (at least additionally) instead of at the end of "fossil help". | |
| 69 | 69 | |
| 70 | 70 | o "--port" vs. "-port" |
| 71 | 71 | |
| 72 | - In the "fossil help server" there is "--port" while under | |
| 73 | - http://www.fossil-scm.org/index.html/doc/tip/www/quickstart.wiki there | |
| 74 | - is "-port". I personally like GNU-long-style options "--xxxx" more | |
| 75 | - than the CC-style options "-xxx". But anyway, independent which one is | |
| 76 | - correct (well, perhaps both even work) only one should be documented | |
| 77 | - to avoid confusion. | |
| 72 | + In the "fossil help server" there is "--port" while under | |
| 73 | + http://www.fossil-scm.org/index.html/doc/tip/www/quickstart.wiki there | |
| 74 | + is "-port". I personally like GNU-long-style options "--xxxx" more | |
| 75 | + than the CC-style options "-xxx". But anyway, independent which one is | |
| 76 | + correct (well, perhaps both even work) only one should be documented | |
| 77 | + to avoid confusion. | |
| 78 | 78 | |
| 79 | 79 | o User creation on the CLI |
| 80 | 80 | |
| 81 | - There is "fossil user new ?USERNAME?" which interactively prompts | |
| 82 | - for the capabilities and the password -- even from the TTY and not | |
| 83 | - from STDIN. One needs "fossil user new ?USERNAME? ?CAPABILITIES? | |
| 84 | - ?PASSWORD?" to be able to create a repository in batch without having | |
| 85 | - to hack the user into the "user" table via the SQLite CLI. Similar: | |
| 86 | - the "fossil user password USERNAME" should be actually "fossil user | |
| 87 | - password USERNAME ?PASSWORD?", please. | |
| 81 | + There is "fossil user new ?USERNAME?" which interactively prompts | |
| 82 | + for the capabilities and the password -- even from the TTY and not | |
| 83 | + from STDIN. One needs "fossil user new ?USERNAME? ?CAPABILITIES? | |
| 84 | + ?PASSWORD?" to be able to create a repository in batch without having | |
| 85 | + to hack the user into the "user" table via the SQLite CLI. Similar: | |
| 86 | + the "fossil user password USERNAME" should be actually "fossil user | |
| 87 | + password USERNAME ?PASSWORD?", please. | |
| 88 | 88 | |
| 89 | 89 | o "-R <repository" |
| 90 | 90 | |
| 91 | - There is the "-R" option for specifiying the repository. But it is | |
| 92 | - a sub-command option and not a global option. And on "fossil ui" or | |
| 93 | - "fossil server" it even is an argument and not an option. This is | |
| 94 | - confusing. Every time one has to figure out how to set the repository | |
| 95 | - on the CLI. Monotone simply uses a *global* option "--db" and that's | |
| 96 | - it. So, I recommend that Fossil also uses a single global option | |
| 97 | - "--repository"/"-R" instead of a command-specific option. Sure, not | |
| 98 | - all commands might require a repository, but IMHO it is better to | |
| 99 | - ignore the global option there than having to figure out every time | |
| 100 | - how the repository has to be specified. | |
| 91 | + There is the "-R" option for specifiying the repository. But it is | |
| 92 | + a sub-command option and not a global option. And on "fossil ui" or | |
| 93 | + "fossil server" it even is an argument and not an option. This is | |
| 94 | + confusing. Every time one has to figure out how to set the repository | |
| 95 | + on the CLI. Monotone simply uses a *global* option "--db" and that's | |
| 96 | + it. So, I recommend that Fossil also uses a single global option | |
| 97 | + "--repository"/"-R" instead of a command-specific option. Sure, not | |
| 98 | + all commands might require a repository, but IMHO it is better to | |
| 99 | + ignore the global option there than having to figure out every time | |
| 100 | + how the repository has to be specified. | |
| 101 | 101 | |
| 102 | 102 | o Setup pages |
| 103 | 103 | |
| 104 | - When hitting "Apply changes" on any setup page, one keeps staying on | |
| 105 | - this page. Sure, that's what an "apply" button usually is about. But | |
| 106 | - I at least would have liked to see a button (either instead of the | |
| 107 | - "apply changes" or at least in addition) which applies the changes and | |
| 108 | - goes back to the setup main page (from where one usually come). | |
| 104 | + When hitting "Apply changes" on any setup page, one keeps staying on | |
| 105 | + this page. Sure, that's what an "apply" button usually is about. But | |
| 106 | + I at least would have liked to see a button (either instead of the | |
| 107 | + "apply changes" or at least in addition) which applies the changes and | |
| 108 | + goes back to the setup main page (from where one usually come). | |
| 109 | 109 | |
| 110 | 110 | o _FOSSIL_ |
| 111 | 111 | |
| 112 | - Very nice idea to use another SQLite database for the _FOSSIL_ | |
| 113 | - control file. BUT: Why "_FOSSIL_"? CVS's "CVS" directory was ugly for | |
| 114 | - decades. Today we have ".svn", ".git", ".hg" and "_MTN"/".mtn" to get | |
| 115 | - rid of those ugly control files or directories of the DVCS! Sure, | |
| 116 | - dot-files are disliked by Windows people. But that's no problem, one | |
| 117 | - can accept "_XXX" in addition to ".XXX" easily, of course. | |
| 118 | - | |
| 119 | - So, I really would like to see the file "_FOSSIL_" to be renamed | |
| 120 | - to ".fossil" under Unix and "_fossil" under Windows or (if the | |
| 121 | - upper-case is important to you) ".FOSSIL" and "_FOSSIL". But to see | |
| 122 | - an ugly "_FOSSIL_" at the top of every source tree is really rather | |
| 123 | - boring for Unix people! | |
| 112 | + Very nice idea to use another SQLite database for the _FOSSIL_ | |
| 113 | + control file. BUT: Why "_FOSSIL_"? CVS's "CVS" directory was ugly for | |
| 114 | + decades. Today we have ".svn", ".git", ".hg" and "_MTN"/".mtn" to get | |
| 115 | + rid of those ugly control files or directories of the DVCS! Sure, | |
| 116 | + dot-files are disliked by Windows people. But that's no problem, one | |
| 117 | + can accept "_XXX" in addition to ".XXX" easily, of course. | |
| 118 | + | |
| 119 | + So, I really would like to see the file "_FOSSIL_" to be renamed | |
| 120 | + to ".fossil" under Unix and "_fossil" under Windows or (if the | |
| 121 | + upper-case is important to you) ".FOSSIL" and "_FOSSIL". But to see | |
| 122 | + an ugly "_FOSSIL_" at the top of every source tree is really rather | |
| 123 | + boring for Unix people! | |
| 124 | 124 | |
| 125 | 125 | o "fossil open", "fossil checkout", "fossil update". |
| 126 | 126 | |
| 127 | - I'm personally confused that "fossil open" is what "checkout" does in | |
| 128 | - other DVCS and that "checkout" is just a variant of "update". Hmmm... | |
| 129 | - for me it looks at least one should be eleminated to reduce confusion. | |
| 130 | - The difference between checkout and update could become an option of | |
| 131 | - a single option. And the remaining to perhaps better should be either | |
| 132 | - "open" + "update" or "checkout" + "update". Well, perhaps I'm still | |
| 133 | - not understanding Fossil enough. But I can only tell that I got rather | |
| 134 | - confused. | |
| 127 | + I'm personally confused that "fossil open" is what "checkout" does in | |
| 128 | + other DVCS and that "checkout" is just a variant of "update". Hmmm... | |
| 129 | + for me it looks at least one should be eleminated to reduce confusion. | |
| 130 | + The difference between checkout and update could become an option of | |
| 131 | + a single option. And the remaining to perhaps better should be either | |
| 132 | + "open" + "update" or "checkout" + "update". Well, perhaps I'm still | |
| 133 | + not understanding Fossil enough. But I can only tell that I got rather | |
| 134 | + confused. | |
| 135 | 135 | |
| 136 | 136 | o "fossil commit" |
| 137 | 137 | |
| 138 | - There is "fossil commit" but no short-hand "fossil ci". But there | |
| 139 | - is "fossil status" and even just "fossil st" which clearly shows | |
| 140 | - that Fossil allows abbreviations or at least prefix-matching on the | |
| 141 | - commands. Sure, "ci" is not a prefix of "commit" but mostly all VCS | |
| 142 | - support the good old RCS/CVS "ci" and similar aliases. So I recommend | |
| 143 | - that Fossil does not only alias matching, but also provides aliases: | |
| 144 | - "ci" for "commit", "co" for "checkout", "log" for "timeline", etc. | |
| 145 | - Sorry, having to type the long "fossil commit" every time is too long | |
| 146 | - for us Unix hackers ;-) | |
| 147 | - | |
| 148 | - Additionally, Fossil seems to use GnuPG when installed and --nosign is | |
| 149 | - not specified. Hmm... two questions arise here for me: 1. should the | |
| 150 | - use of a cryptographically strong signature really be just _optional_ | |
| 151 | - (Monotone for instance RSA signs every commit) and 2. is GnuPG here | |
| 152 | - really the right tool (Monotone does a plain RSA signing and is even | |
| 153 | - able to leverage a running SSH agent for the operation -- something | |
| 154 | - which is very cool both under Unix with "ssh-agent" and under Windows | |
| 155 | - with "pagent"). OTOH, GnuPG 2.x supports a gpg-agent, so this might be | |
| 156 | - no longer a big issue. But Fossil should document this a little bit | |
| 157 | - futher: how to create the necessary GnuPG key, how to setup gpg-agent, | |
| 158 | - etc. | |
| 138 | + There is "fossil commit" but no short-hand "fossil ci". But there | |
| 139 | + is "fossil status" and even just "fossil st" which clearly shows | |
| 140 | + that Fossil allows abbreviations or at least prefix-matching on the | |
| 141 | + commands. Sure, "ci" is not a prefix of "commit" but mostly all VCS | |
| 142 | + support the good old RCS/CVS "ci" and similar aliases. So I recommend | |
| 143 | + that Fossil does not only alias matching, but also provides aliases: | |
| 144 | + "ci" for "commit", "co" for "checkout", "log" for "timeline", etc. | |
| 145 | + Sorry, having to type the long "fossil commit" every time is too long | |
| 146 | + for us Unix hackers ;-) | |
| 147 | + | |
| 148 | + Additionally, Fossil seems to use GnuPG when installed and --nosign is | |
| 149 | + not specified. Hmm... two questions arise here for me: 1. should the | |
| 150 | + use of a cryptographically strong signature really be just _optional_ | |
| 151 | + (Monotone for instance RSA signs every commit) and 2. is GnuPG here | |
| 152 | + really the right tool (Monotone does a plain RSA signing and is even | |
| 153 | + able to leverage a running SSH agent for the operation -- something | |
| 154 | + which is very cool both under Unix with "ssh-agent" and under Windows | |
| 155 | + with "pagent"). OTOH, GnuPG 2.x supports a gpg-agent, so this might be | |
| 156 | + no longer a big issue. But Fossil should document this a little bit | |
| 157 | + futher: how to create the necessary GnuPG key, how to setup gpg-agent, | |
| 158 | + etc. | |
| 159 | 159 | |
| 160 | 160 | o "fossil diff" |
| 161 | 161 | |
| 162 | - There is "Usage: fossil diff|gdiff ?-i? ?-r REVISION? FILE...". Two | |
| 163 | - questions arise: Why do I have to specify a "FILE"? I would expect | |
| 164 | - that a simple "fossil diff" recursively shows a "diff" of all changed | |
| 165 | - files in the source tree. Additionally, how does one do a diff between | |
| 166 | - two particular revisions (one seems to be not able to specifiy "-r" | |
| 167 | - twice). | |
| 162 | + There is "Usage: fossil diff|gdiff ?-i? ?-r REVISION? FILE...". Two | |
| 163 | + questions arise: Why do I have to specify a "FILE"? I would expect | |
| 164 | + that a simple "fossil diff" recursively shows a "diff" of all changed | |
| 165 | + files in the source tree. Additionally, how does one do a diff between | |
| 166 | + two particular revisions (one seems to be not able to specifiy "-r" | |
| 167 | + twice). | |
| 168 | 168 | |
| 169 | 169 | o "manifest" / "manifest.uuid" |
| 170 | 170 | |
| 171 | - Above I was already bothered by the _FOSSIL_ file, but now that I | |
| 172 | - played with Fossil I see that "manifest" and "manifest.uuid" files | |
| 173 | - showed up in my source tree. Why is this not implicitly in the | |
| 174 | - database and instead externally represented in the source tree. | |
| 175 | - Hmmm... then I recommend that you use a .fossil *DIRECTORY*, place | |
| 176 | - the control file into .fossil/control (or whatever) and the manifest | |
| 177 | - stuff into .fossil/manifest and .fossil/manifest.uuid. But please do | |
| 178 | - not clutter the top-level of the source three with control data of the | |
| 179 | - DVCS. | |
| 171 | + Above I was already bothered by the _FOSSIL_ file, but now that I | |
| 172 | + played with Fossil I see that "manifest" and "manifest.uuid" files | |
| 173 | + showed up in my source tree. Why is this not implicitly in the | |
| 174 | + database and instead externally represented in the source tree. | |
| 175 | + Hmmm... then I recommend that you use a .fossil *DIRECTORY*, place | |
| 176 | + the control file into .fossil/control (or whatever) and the manifest | |
| 177 | + stuff into .fossil/manifest and .fossil/manifest.uuid. But please do | |
| 178 | + not clutter the top-level of the source three with control data of the | |
| 179 | + DVCS. | |
| 180 | 180 | |
| 181 | 181 | o "fossil mv" |
| 182 | 182 | |
| 183 | - There is "fossil add" and "fossil rm", but no "fossil mv". Hopefully | |
| 184 | - this doesn't mean a file move is an "add" and a "remove" bundle, as | |
| 185 | - this way Fossil would have trouble to know that the file was renamed | |
| 186 | - and hence the full history tracking of a file seems to be broken. | |
| 183 | + There is "fossil add" and "fossil rm", but no "fossil mv". Hopefully | |
| 184 | + this doesn't mean a file move is an "add" and a "remove" bundle, as | |
| 185 | + this way Fossil would have trouble to know that the file was renamed | |
| 186 | + and hence the full history tracking of a file seems to be broken. | |
| 187 | 187 | |
| 188 | 188 | o "fossil changes" vs. "fossil status" |
| 189 | 189 | |
| 190 | - Finally, I got confused by the "fossil changes" and "fossil status" | |
| 191 | - commands. "fossil status" seems to be a super-set of "fossil changes". | |
| 192 | - Looks a little bit less orthogonal than necessary. I would remove | |
| 193 | - "fossil changes" or at least do not show the file details on "fossil | |
| 194 | - status". | |
| 190 | + Finally, I got confused by the "fossil changes" and "fossil status" | |
| 191 | + commands. "fossil status" seems to be a super-set of "fossil changes". | |
| 192 | + Looks a little bit less orthogonal than necessary. I would remove | |
| 193 | + "fossil changes" or at least do not show the file details on "fossil | |
| 194 | + status". | |
| 195 | 195 | |
| 196 | 196 | Yours, |
| 197 | - Ralf S. Engelschall | |
| 197 | + Ralf S. Engelschall | |
| 198 | 198 | |
| 199 | 199 |
| --- rse-notes.txt | |
| +++ rse-notes.txt | |
| @@ -8,191 +8,191 @@ | |
| 8 | While I looked around and tested it, I stumbled over some issues I want |
| 9 | to share with you: |
| 10 | |
| 11 | o No tarball |
| 12 | |
| 13 | You currently still do not provide any tarballs of the Fossil sources. |
| 14 | Sure, you are still hacking wild on the code and one can on-the-fly |
| 15 | fetch a ZIP archive, but that's a manual process. For packagers (like |
| 16 | me in the OpenPKG project) this is very nasty and just means that |
| 17 | Fossil will usually still not be packaged. As a result it will be not |
| 18 | spreaded as much as possible and this way you still do not get as much |
| 19 | as possible feedback. Hence, I recommend that you let daily snapshot |
| 20 | tarballs (or ZIP files) be rolled. This would be great. |
| 21 | |
| 22 | o UUID |
| 23 | |
| 24 | Under http://www.fossil-scm.org/index.html/doc/tip/www/concepts.wiki |
| 25 | you describe the concepts and you clearly name the artifact ID a |
| 26 | "UUID" and even say that this is a "Universally Unique Identifier". |
| 27 | Unfortunately, a UUID is a 128-bit entity standardized by the ISO |
| 28 | (under ISO/IEC 11578:1996) and IETF (under RFC-4122) and hence it is |
| 29 | *VERY MUCH* confusing and unclean that your 160-bit SHA1-based ID is |
| 30 | called "UUID" in Fossil. |
| 31 | |
| 32 | I *STRONGLY* recommend you to either use real UUIDs (128-bit |
| 33 | entities, where a UUID of version 5 even is SHA1-based!) or you name |
| 34 | your 160-bit SHA1 entities differently (perhaps AID for "Artifact |
| 35 | Identifier"?). |
| 36 | |
| 37 | o "fossil cgi <script>" |
| 38 | |
| 39 | Currently we have only "fossil cgi <script>" where <script> contains |
| 40 | "repository: <file>". This is a neat idea and should be kept. But |
| 41 | this way one cannot easily host multiple repositories over this |
| 42 | CGI interface without creating such a script for every individual |
| 43 | repository. |
| 44 | |
| 45 | Perhaps a "fossil cgi --repository <file>" would help here, as this |
| 46 | way one can use a generic CGI script which first figures out the |
| 47 | name <name> of the individual project and then runs "fossil cgi |
| 48 | --repository /path/to/repositories/<name>.db". But perhaps I'm just |
| 49 | overlooking something and this is already possible... |
| 50 | |
| 51 | o "fossil db <operation>" |
| 52 | |
| 53 | In Monotone DVCS we have a "mtn db" command for the low-level SQLite |
| 54 | database manipulations. For instance a "mtn --db=<monotone-repository> |
| 55 | db dump" is more or less equal to a "sqlite3 <monotone-repository> |
| 56 | .dump". A "mtn --db=<monotone-repository> db exec '<SQL>'" is equal |
| 57 | "echo '<SQL>' | sqlite3 <monotone-repository>", etc. The point is |
| 58 | that the DVCS user usually has no SQLite CLI at hand but as the DVCS |
| 59 | already contains more or less the complete SQLite it is very useful to |
| 60 | also include the SQLite CLI functionality and wire it into the DVCS |
| 61 | CLI via a "db" command. |
| 62 | |
| 63 | o "fossil version" |
| 64 | |
| 65 | Mostly all VCS I know if either support a command "version" or a |
| 66 | command-line option "--version" or most of the time even both. Please |
| 67 | output the "This is fossil version [9e80dc66cf] 2008-10-18 13:03:36" |
| 68 | there (at least additionally) instead of at the end of "fossil help". |
| 69 | |
| 70 | o "--port" vs. "-port" |
| 71 | |
| 72 | In the "fossil help server" there is "--port" while under |
| 73 | http://www.fossil-scm.org/index.html/doc/tip/www/quickstart.wiki there |
| 74 | is "-port". I personally like GNU-long-style options "--xxxx" more |
| 75 | than the CC-style options "-xxx". But anyway, independent which one is |
| 76 | correct (well, perhaps both even work) only one should be documented |
| 77 | to avoid confusion. |
| 78 | |
| 79 | o User creation on the CLI |
| 80 | |
| 81 | There is "fossil user new ?USERNAME?" which interactively prompts |
| 82 | for the capabilities and the password -- even from the TTY and not |
| 83 | from STDIN. One needs "fossil user new ?USERNAME? ?CAPABILITIES? |
| 84 | ?PASSWORD?" to be able to create a repository in batch without having |
| 85 | to hack the user into the "user" table via the SQLite CLI. Similar: |
| 86 | the "fossil user password USERNAME" should be actually "fossil user |
| 87 | password USERNAME ?PASSWORD?", please. |
| 88 | |
| 89 | o "-R <repository" |
| 90 | |
| 91 | There is the "-R" option for specifiying the repository. But it is |
| 92 | a sub-command option and not a global option. And on "fossil ui" or |
| 93 | "fossil server" it even is an argument and not an option. This is |
| 94 | confusing. Every time one has to figure out how to set the repository |
| 95 | on the CLI. Monotone simply uses a *global* option "--db" and that's |
| 96 | it. So, I recommend that Fossil also uses a single global option |
| 97 | "--repository"/"-R" instead of a command-specific option. Sure, not |
| 98 | all commands might require a repository, but IMHO it is better to |
| 99 | ignore the global option there than having to figure out every time |
| 100 | how the repository has to be specified. |
| 101 | |
| 102 | o Setup pages |
| 103 | |
| 104 | When hitting "Apply changes" on any setup page, one keeps staying on |
| 105 | this page. Sure, that's what an "apply" button usually is about. But |
| 106 | I at least would have liked to see a button (either instead of the |
| 107 | "apply changes" or at least in addition) which applies the changes and |
| 108 | goes back to the setup main page (from where one usually come). |
| 109 | |
| 110 | o _FOSSIL_ |
| 111 | |
| 112 | Very nice idea to use another SQLite database for the _FOSSIL_ |
| 113 | control file. BUT: Why "_FOSSIL_"? CVS's "CVS" directory was ugly for |
| 114 | decades. Today we have ".svn", ".git", ".hg" and "_MTN"/".mtn" to get |
| 115 | rid of those ugly control files or directories of the DVCS! Sure, |
| 116 | dot-files are disliked by Windows people. But that's no problem, one |
| 117 | can accept "_XXX" in addition to ".XXX" easily, of course. |
| 118 | |
| 119 | So, I really would like to see the file "_FOSSIL_" to be renamed |
| 120 | to ".fossil" under Unix and "_fossil" under Windows or (if the |
| 121 | upper-case is important to you) ".FOSSIL" and "_FOSSIL". But to see |
| 122 | an ugly "_FOSSIL_" at the top of every source tree is really rather |
| 123 | boring for Unix people! |
| 124 | |
| 125 | o "fossil open", "fossil checkout", "fossil update". |
| 126 | |
| 127 | I'm personally confused that "fossil open" is what "checkout" does in |
| 128 | other DVCS and that "checkout" is just a variant of "update". Hmmm... |
| 129 | for me it looks at least one should be eleminated to reduce confusion. |
| 130 | The difference between checkout and update could become an option of |
| 131 | a single option. And the remaining to perhaps better should be either |
| 132 | "open" + "update" or "checkout" + "update". Well, perhaps I'm still |
| 133 | not understanding Fossil enough. But I can only tell that I got rather |
| 134 | confused. |
| 135 | |
| 136 | o "fossil commit" |
| 137 | |
| 138 | There is "fossil commit" but no short-hand "fossil ci". But there |
| 139 | is "fossil status" and even just "fossil st" which clearly shows |
| 140 | that Fossil allows abbreviations or at least prefix-matching on the |
| 141 | commands. Sure, "ci" is not a prefix of "commit" but mostly all VCS |
| 142 | support the good old RCS/CVS "ci" and similar aliases. So I recommend |
| 143 | that Fossil does not only alias matching, but also provides aliases: |
| 144 | "ci" for "commit", "co" for "checkout", "log" for "timeline", etc. |
| 145 | Sorry, having to type the long "fossil commit" every time is too long |
| 146 | for us Unix hackers ;-) |
| 147 | |
| 148 | Additionally, Fossil seems to use GnuPG when installed and --nosign is |
| 149 | not specified. Hmm... two questions arise here for me: 1. should the |
| 150 | use of a cryptographically strong signature really be just _optional_ |
| 151 | (Monotone for instance RSA signs every commit) and 2. is GnuPG here |
| 152 | really the right tool (Monotone does a plain RSA signing and is even |
| 153 | able to leverage a running SSH agent for the operation -- something |
| 154 | which is very cool both under Unix with "ssh-agent" and under Windows |
| 155 | with "pagent"). OTOH, GnuPG 2.x supports a gpg-agent, so this might be |
| 156 | no longer a big issue. But Fossil should document this a little bit |
| 157 | futher: how to create the necessary GnuPG key, how to setup gpg-agent, |
| 158 | etc. |
| 159 | |
| 160 | o "fossil diff" |
| 161 | |
| 162 | There is "Usage: fossil diff|gdiff ?-i? ?-r REVISION? FILE...". Two |
| 163 | questions arise: Why do I have to specify a "FILE"? I would expect |
| 164 | that a simple "fossil diff" recursively shows a "diff" of all changed |
| 165 | files in the source tree. Additionally, how does one do a diff between |
| 166 | two particular revisions (one seems to be not able to specifiy "-r" |
| 167 | twice). |
| 168 | |
| 169 | o "manifest" / "manifest.uuid" |
| 170 | |
| 171 | Above I was already bothered by the _FOSSIL_ file, but now that I |
| 172 | played with Fossil I see that "manifest" and "manifest.uuid" files |
| 173 | showed up in my source tree. Why is this not implicitly in the |
| 174 | database and instead externally represented in the source tree. |
| 175 | Hmmm... then I recommend that you use a .fossil *DIRECTORY*, place |
| 176 | the control file into .fossil/control (or whatever) and the manifest |
| 177 | stuff into .fossil/manifest and .fossil/manifest.uuid. But please do |
| 178 | not clutter the top-level of the source three with control data of the |
| 179 | DVCS. |
| 180 | |
| 181 | o "fossil mv" |
| 182 | |
| 183 | There is "fossil add" and "fossil rm", but no "fossil mv". Hopefully |
| 184 | this doesn't mean a file move is an "add" and a "remove" bundle, as |
| 185 | this way Fossil would have trouble to know that the file was renamed |
| 186 | and hence the full history tracking of a file seems to be broken. |
| 187 | |
| 188 | o "fossil changes" vs. "fossil status" |
| 189 | |
| 190 | Finally, I got confused by the "fossil changes" and "fossil status" |
| 191 | commands. "fossil status" seems to be a super-set of "fossil changes". |
| 192 | Looks a little bit less orthogonal than necessary. I would remove |
| 193 | "fossil changes" or at least do not show the file details on "fossil |
| 194 | status". |
| 195 | |
| 196 | Yours, |
| 197 | Ralf S. Engelschall |
| 198 | |
| 199 |
| --- rse-notes.txt | |
| +++ rse-notes.txt | |
| @@ -8,191 +8,191 @@ | |
| 8 | While I looked around and tested it, I stumbled over some issues I want |
| 9 | to share with you: |
| 10 | |
| 11 | o No tarball |
| 12 | |
| 13 | You currently still do not provide any tarballs of the Fossil sources. |
| 14 | Sure, you are still hacking wild on the code and one can on-the-fly |
| 15 | fetch a ZIP archive, but that's a manual process. For packagers (like |
| 16 | me in the OpenPKG project) this is very nasty and just means that |
| 17 | Fossil will usually still not be packaged. As a result it will be not |
| 18 | spreaded as much as possible and this way you still do not get as much |
| 19 | as possible feedback. Hence, I recommend that you let daily snapshot |
| 20 | tarballs (or ZIP files) be rolled. This would be great. |
| 21 | |
| 22 | o UUID |
| 23 | |
| 24 | Under http://www.fossil-scm.org/index.html/doc/tip/www/concepts.wiki |
| 25 | you describe the concepts and you clearly name the artifact ID a |
| 26 | "UUID" and even say that this is a "Universally Unique Identifier". |
| 27 | Unfortunately, a UUID is a 128-bit entity standardized by the ISO |
| 28 | (under ISO/IEC 11578:1996) and IETF (under RFC-4122) and hence it is |
| 29 | *VERY MUCH* confusing and unclean that your 160-bit SHA1-based ID is |
| 30 | called "UUID" in Fossil. |
| 31 | |
| 32 | I *STRONGLY* recommend you to either use real UUIDs (128-bit |
| 33 | entities, where a UUID of version 5 even is SHA1-based!) or you name |
| 34 | your 160-bit SHA1 entities differently (perhaps AID for "Artifact |
| 35 | Identifier"?). |
| 36 | |
| 37 | o "fossil cgi <script>" |
| 38 | |
| 39 | Currently we have only "fossil cgi <script>" where <script> contains |
| 40 | "repository: <file>". This is a neat idea and should be kept. But |
| 41 | this way one cannot easily host multiple repositories over this |
| 42 | CGI interface without creating such a script for every individual |
| 43 | repository. |
| 44 | |
| 45 | Perhaps a "fossil cgi --repository <file>" would help here, as this |
| 46 | way one can use a generic CGI script which first figures out the |
| 47 | name <name> of the individual project and then runs "fossil cgi |
| 48 | --repository /path/to/repositories/<name>.db". But perhaps I'm just |
| 49 | overlooking something and this is already possible... |
| 50 | |
| 51 | o "fossil db <operation>" |
| 52 | |
| 53 | In Monotone DVCS we have a "mtn db" command for the low-level SQLite |
| 54 | database manipulations. For instance a "mtn --db=<monotone-repository> |
| 55 | db dump" is more or less equal to a "sqlite3 <monotone-repository> |
| 56 | .dump". A "mtn --db=<monotone-repository> db exec '<SQL>'" is equal |
| 57 | "echo '<SQL>' | sqlite3 <monotone-repository>", etc. The point is |
| 58 | that the DVCS user usually has no SQLite CLI at hand but as the DVCS |
| 59 | already contains more or less the complete SQLite it is very useful to |
| 60 | also include the SQLite CLI functionality and wire it into the DVCS |
| 61 | CLI via a "db" command. |
| 62 | |
| 63 | o "fossil version" |
| 64 | |
| 65 | Mostly all VCS I know if either support a command "version" or a |
| 66 | command-line option "--version" or most of the time even both. Please |
| 67 | output the "This is fossil version [9e80dc66cf] 2008-10-18 13:03:36" |
| 68 | there (at least additionally) instead of at the end of "fossil help". |
| 69 | |
| 70 | o "--port" vs. "-port" |
| 71 | |
| 72 | In the "fossil help server" there is "--port" while under |
| 73 | http://www.fossil-scm.org/index.html/doc/tip/www/quickstart.wiki there |
| 74 | is "-port". I personally like GNU-long-style options "--xxxx" more |
| 75 | than the CC-style options "-xxx". But anyway, independent which one is |
| 76 | correct (well, perhaps both even work) only one should be documented |
| 77 | to avoid confusion. |
| 78 | |
| 79 | o User creation on the CLI |
| 80 | |
| 81 | There is "fossil user new ?USERNAME?" which interactively prompts |
| 82 | for the capabilities and the password -- even from the TTY and not |
| 83 | from STDIN. One needs "fossil user new ?USERNAME? ?CAPABILITIES? |
| 84 | ?PASSWORD?" to be able to create a repository in batch without having |
| 85 | to hack the user into the "user" table via the SQLite CLI. Similar: |
| 86 | the "fossil user password USERNAME" should be actually "fossil user |
| 87 | password USERNAME ?PASSWORD?", please. |
| 88 | |
| 89 | o "-R <repository" |
| 90 | |
| 91 | There is the "-R" option for specifiying the repository. But it is |
| 92 | a sub-command option and not a global option. And on "fossil ui" or |
| 93 | "fossil server" it even is an argument and not an option. This is |
| 94 | confusing. Every time one has to figure out how to set the repository |
| 95 | on the CLI. Monotone simply uses a *global* option "--db" and that's |
| 96 | it. So, I recommend that Fossil also uses a single global option |
| 97 | "--repository"/"-R" instead of a command-specific option. Sure, not |
| 98 | all commands might require a repository, but IMHO it is better to |
| 99 | ignore the global option there than having to figure out every time |
| 100 | how the repository has to be specified. |
| 101 | |
| 102 | o Setup pages |
| 103 | |
| 104 | When hitting "Apply changes" on any setup page, one keeps staying on |
| 105 | this page. Sure, that's what an "apply" button usually is about. But |
| 106 | I at least would have liked to see a button (either instead of the |
| 107 | "apply changes" or at least in addition) which applies the changes and |
| 108 | goes back to the setup main page (from where one usually come). |
| 109 | |
| 110 | o _FOSSIL_ |
| 111 | |
| 112 | Very nice idea to use another SQLite database for the _FOSSIL_ |
| 113 | control file. BUT: Why "_FOSSIL_"? CVS's "CVS" directory was ugly for |
| 114 | decades. Today we have ".svn", ".git", ".hg" and "_MTN"/".mtn" to get |
| 115 | rid of those ugly control files or directories of the DVCS! Sure, |
| 116 | dot-files are disliked by Windows people. But that's no problem, one |
| 117 | can accept "_XXX" in addition to ".XXX" easily, of course. |
| 118 | |
| 119 | So, I really would like to see the file "_FOSSIL_" to be renamed |
| 120 | to ".fossil" under Unix and "_fossil" under Windows or (if the |
| 121 | upper-case is important to you) ".FOSSIL" and "_FOSSIL". But to see |
| 122 | an ugly "_FOSSIL_" at the top of every source tree is really rather |
| 123 | boring for Unix people! |
| 124 | |
| 125 | o "fossil open", "fossil checkout", "fossil update". |
| 126 | |
| 127 | I'm personally confused that "fossil open" is what "checkout" does in |
| 128 | other DVCS and that "checkout" is just a variant of "update". Hmmm... |
| 129 | for me it looks at least one should be eleminated to reduce confusion. |
| 130 | The difference between checkout and update could become an option of |
| 131 | a single option. And the remaining to perhaps better should be either |
| 132 | "open" + "update" or "checkout" + "update". Well, perhaps I'm still |
| 133 | not understanding Fossil enough. But I can only tell that I got rather |
| 134 | confused. |
| 135 | |
| 136 | o "fossil commit" |
| 137 | |
| 138 | There is "fossil commit" but no short-hand "fossil ci". But there |
| 139 | is "fossil status" and even just "fossil st" which clearly shows |
| 140 | that Fossil allows abbreviations or at least prefix-matching on the |
| 141 | commands. Sure, "ci" is not a prefix of "commit" but mostly all VCS |
| 142 | support the good old RCS/CVS "ci" and similar aliases. So I recommend |
| 143 | that Fossil does not only alias matching, but also provides aliases: |
| 144 | "ci" for "commit", "co" for "checkout", "log" for "timeline", etc. |
| 145 | Sorry, having to type the long "fossil commit" every time is too long |
| 146 | for us Unix hackers ;-) |
| 147 | |
| 148 | Additionally, Fossil seems to use GnuPG when installed and --nosign is |
| 149 | not specified. Hmm... two questions arise here for me: 1. should the |
| 150 | use of a cryptographically strong signature really be just _optional_ |
| 151 | (Monotone for instance RSA signs every commit) and 2. is GnuPG here |
| 152 | really the right tool (Monotone does a plain RSA signing and is even |
| 153 | able to leverage a running SSH agent for the operation -- something |
| 154 | which is very cool both under Unix with "ssh-agent" and under Windows |
| 155 | with "pagent"). OTOH, GnuPG 2.x supports a gpg-agent, so this might be |
| 156 | no longer a big issue. But Fossil should document this a little bit |
| 157 | futher: how to create the necessary GnuPG key, how to setup gpg-agent, |
| 158 | etc. |
| 159 | |
| 160 | o "fossil diff" |
| 161 | |
| 162 | There is "Usage: fossil diff|gdiff ?-i? ?-r REVISION? FILE...". Two |
| 163 | questions arise: Why do I have to specify a "FILE"? I would expect |
| 164 | that a simple "fossil diff" recursively shows a "diff" of all changed |
| 165 | files in the source tree. Additionally, how does one do a diff between |
| 166 | two particular revisions (one seems to be not able to specifiy "-r" |
| 167 | twice). |
| 168 | |
| 169 | o "manifest" / "manifest.uuid" |
| 170 | |
| 171 | Above I was already bothered by the _FOSSIL_ file, but now that I |
| 172 | played with Fossil I see that "manifest" and "manifest.uuid" files |
| 173 | showed up in my source tree. Why is this not implicitly in the |
| 174 | database and instead externally represented in the source tree. |
| 175 | Hmmm... then I recommend that you use a .fossil *DIRECTORY*, place |
| 176 | the control file into .fossil/control (or whatever) and the manifest |
| 177 | stuff into .fossil/manifest and .fossil/manifest.uuid. But please do |
| 178 | not clutter the top-level of the source three with control data of the |
| 179 | DVCS. |
| 180 | |
| 181 | o "fossil mv" |
| 182 | |
| 183 | There is "fossil add" and "fossil rm", but no "fossil mv". Hopefully |
| 184 | this doesn't mean a file move is an "add" and a "remove" bundle, as |
| 185 | this way Fossil would have trouble to know that the file was renamed |
| 186 | and hence the full history tracking of a file seems to be broken. |
| 187 | |
| 188 | o "fossil changes" vs. "fossil status" |
| 189 | |
| 190 | Finally, I got confused by the "fossil changes" and "fossil status" |
| 191 | commands. "fossil status" seems to be a super-set of "fossil changes". |
| 192 | Looks a little bit less orthogonal than necessary. I would remove |
| 193 | "fossil changes" or at least do not show the file details on "fossil |
| 194 | status". |
| 195 | |
| 196 | Yours, |
| 197 | Ralf S. Engelschall |
| 198 | |
| 199 |