@@ -95,122 +95,25 @@
95 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
96 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
On a Windows box, you might instead choose "`C:\Fossils`"
97 97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
and do without the subdirectory scheme, for example.
98 98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99 99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #### <a id="scw"></a> Single-Checkout Workflows
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- The most idiomatic way to use Fossil in the typical Git way — switching
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- between versions in a single check-out directory — is as follows:
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil clone https://example.com/repo /path/to/repo.fossil
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir work-dir
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd work-dir
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open /path/to/repo.fossil
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ...work on trunk...
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil update my-other-branch # like “git checkout”
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ...work on your other branch in the same directory...
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- In Fossil 2.12, we added a feature that allows you to get closer to
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Git’s single-step clone-and-open behavior:
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir work-dir
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd work-dir
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open https://example.com/repo
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Now you have “trunk” open in `work-dir`, with the repo file stored as
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- `repo.fossil` in that same directory.
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- The use of [`fossil open`][open] here instead of [`fossil clone`][clone]
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- likely surprises you as a Git user. When we were [discussing][caod]
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- this, we considered following the Git command style, but we decided
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- against it because it goes against this core Fossil design principle:
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- given that the Fossil repo is separate from the check-out, why would you
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- expect asking for a repo clone to also create a check-out directory for
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- you? We view commingled repository + check-out as a design error in
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Git, so why would we repeat the error?
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- To see why we see this behavior is error-prone, consider that
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- `git clean` must have an exception to avoid nuking the `.git` directory.
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- We had to add that complication to `fossil clean` when we added the
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- `fossil open URI` feature: it won’t nuke the repo DB file.
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- This feature didn’t placate many Git fans, though, so with Fossil 2.14 —
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- currently unreleased — we now allow this:
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil clone https://fossil-scm.org/fossil
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- This results in a `fossil.fossil` repo DB file and a `fossil/` working
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- directory.
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Note that our `clone URI` behavior does not commingle the repo and
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- check-out, solving our major problem with the Git design, though we
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- still believe it to be confusing to have “clone” be part of “open,” and
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- still more confusing to have “open” part of “clone.” We prefer keeping
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- these operations entirely separate, either as at the [top of this
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- section](#scw) or [as in the next one](#mcw). Still, please yourself.
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- If you want the repo to be named something else, adjust the URL:
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil clone https://fossil-scm.org/fossil/fsl
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- That gets you `fsl.fossil` checked out into `fsl/`.
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- For sites where the repo isn’t served from a subdirectory like this, you
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- might need another form of the URL. For example, you might have your
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- repo served from `dev.example.com` and want it cloned as `my-project`:
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil clone https://dev.example.com/repo/my-project
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- The `/repo` addition is the key: whatever comes after is used as the
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- repository name. [See the docs][clone] for more details.
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- [caod]: https://fossil-scm.org/forum/forumpost/3f143cec74
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #### <a id="mcw"></a> Multiple-Checkout Workflows
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Because Fossil cleanly separates the repository from the check-out, it
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- is routine to have multiple check-outs from the same repository:
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir -p ~/src/my-project/trunk
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd ~/src/my-project/trunk
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open /path/to/repo.fossil # implicitly opens “trunk”
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir ../my-other-branch
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd ../my-other-branch
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open /path/to/repo.fossil my-other-branch
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir ../release
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd ../release
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open /path/to/repo.fossil release
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir ../scratch
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd ../scratch
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open /path/to/repo.fossil abcd1234
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mkdir ../test
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cd ../test
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil open /path/to/repo.fossil 2019-04-01
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Now you have five separate check-out directories: one each for trunk, an
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- alternate branch you’re working on, the latest tagged public release, a
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- “scratch” directory for experiments or brief bits of work you don’t want
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- to do in the other check-out directories, and a directory for testing a
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- user report of a bug in the trunk version as of last April Fool’s Day.
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Each check-out operates independently of the others.
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- This multiple-checkouts working style is especially useful when Fossil stores source code in programming languages
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- where there is a “build” step that transforms source files into files
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- you actually run or distribute. With Git’s typical switch-in-place workflow,
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- you have to rebuild all outputs from the source files
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- that differ between those versions whenever you switch versions. In the above Fossil working model,
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- you switch versions with a “`cd`” command instead, so that you only have
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- to rebuild outputs from files you yourself change.
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- This style is also useful when a check-out directory may be tied up with
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- some long-running process, as with the “test” example above, where you
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- might need to run an hours-long brute-force replication script to tickle
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- a [Heisenbug][hb], forcing it to show itself. While that runs, you can
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- open a new terminal tab, “`cd ../trunk`”, and get back
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- to work.
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #### <a id="cwork" name="scw"></a> Checkout Workflows
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ This is a complicated topic, so we [cover it elsewhere][cw].
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The main Git-specific thing to add to that document is that this:
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ git checkout some-branch
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ …is spelled:
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil update some-branch
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ …in Fossil.
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ [cw]: ./ckout-workflows.md
212 115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
213 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
214 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#### <a id="close" name="dotfile"></a> Closing A Check-Out
215 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
216 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
The `fossil close` command dissaociates a check-out directory from the
@@ -287,11 +190,10 @@
287 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
288 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
289 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[clone]: /help?cmd=clone
290 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[close]: /help?cmd=close
291 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[gloss]: ./whyusefossil.wiki#definitions
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- [hb]: https://en.wikipedia.org/wiki/Heisenbug
293 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[open]: /help?cmd=open
294 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[set]: /help?cmd=setting
295 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[server]: /help?cmd=server
296 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[stash]: /help?cmd=stash
297 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[undo]: /help?cmd=undo
298 200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!