Fossil SCM
For Git conversions, mention that the newer PowerShell versions are able to pipe byte streams between native commands.
Commit
c07468c20725ccc65da9046f73d760413da883ea4e181f845edaa3e176454f6f
Parent
a3843d419d3c101…
1 file changed
+9
-8
+9
-8
| --- www/inout.wiki | ||
| +++ www/inout.wiki | ||
| @@ -40,18 +40,19 @@ | ||
| 40 | 40 | The above commands work best on proper POSIX systems like Linux, macOS, |
| 41 | 41 | and the BSDs, where everything <tt>git</tt> sends is consumed by |
| 42 | 42 | <tt>fossil</tt> as soon as it can manage, with both programs working |
| 43 | 43 | concurrently. |
| 44 | 44 | |
| 45 | -For some reason, the current version of PowerShell included with Windows | |
| 46 | -chokes on the conversion when the in-flight repository size exceeds | |
| 47 | -available memory. We do not know why it buffers the entire stream | |
| 48 | -emitted by "<tt>git fast-export</tt>" before sending it along to Fossil, | |
| 49 | -but we've seen the problem recur on multiple machines. | |
| 50 | - | |
| 51 | -While one workaround is to fall back to <tt>cmd.exe</tt> — which doesn't | |
| 52 | -seem to be affected by this problem — we instead recommend using | |
| 45 | +Historically, PowerShell indiscriminately sent objects — as opposed to raw | |
| 46 | +bytes — through its pipes, and buffered standard input for external processes. | |
| 47 | +This made it choke on the conversion when the in-flight repository size | |
| 48 | +exceeded available memory. Starting with version 7.4 (2023-11-16), PowerShell | |
| 49 | +supports byte stream piping between native commands and file redirection. | |
| 50 | + | |
| 51 | +If you are stuck with an older version, one workaround is to fall back to | |
| 52 | +<tt>cmd.exe</tt> — which doesn't seem to be affected by this problem. | |
| 53 | +Nevertheless, we instead recommend using | |
| 53 | 54 | Microsoft's own [https://learn.microsoft.com/en-us/windows/wsl/ | Windows |
| 54 | 55 | Subsystem for Linux] or either of the two popular "Git for Windows" |
| 55 | 56 | distributions based on MSYS2. They handle pipes the POSIX way, avoiding |
| 56 | 57 | any dependency on the amount of data involved. |
| 57 | 58 | |
| 58 | 59 |
| --- www/inout.wiki | |
| +++ www/inout.wiki | |
| @@ -40,18 +40,19 @@ | |
| 40 | The above commands work best on proper POSIX systems like Linux, macOS, |
| 41 | and the BSDs, where everything <tt>git</tt> sends is consumed by |
| 42 | <tt>fossil</tt> as soon as it can manage, with both programs working |
| 43 | concurrently. |
| 44 | |
| 45 | For some reason, the current version of PowerShell included with Windows |
| 46 | chokes on the conversion when the in-flight repository size exceeds |
| 47 | available memory. We do not know why it buffers the entire stream |
| 48 | emitted by "<tt>git fast-export</tt>" before sending it along to Fossil, |
| 49 | but we've seen the problem recur on multiple machines. |
| 50 | |
| 51 | While one workaround is to fall back to <tt>cmd.exe</tt> — which doesn't |
| 52 | seem to be affected by this problem — we instead recommend using |
| 53 | Microsoft's own [https://learn.microsoft.com/en-us/windows/wsl/ | Windows |
| 54 | Subsystem for Linux] or either of the two popular "Git for Windows" |
| 55 | distributions based on MSYS2. They handle pipes the POSIX way, avoiding |
| 56 | any dependency on the amount of data involved. |
| 57 | |
| 58 |
| --- www/inout.wiki | |
| +++ www/inout.wiki | |
| @@ -40,18 +40,19 @@ | |
| 40 | The above commands work best on proper POSIX systems like Linux, macOS, |
| 41 | and the BSDs, where everything <tt>git</tt> sends is consumed by |
| 42 | <tt>fossil</tt> as soon as it can manage, with both programs working |
| 43 | concurrently. |
| 44 | |
| 45 | Historically, PowerShell indiscriminately sent objects — as opposed to raw |
| 46 | bytes — through its pipes, and buffered standard input for external processes. |
| 47 | This made it choke on the conversion when the in-flight repository size |
| 48 | exceeded available memory. Starting with version 7.4 (2023-11-16), PowerShell |
| 49 | supports byte stream piping between native commands and file redirection. |
| 50 | |
| 51 | If you are stuck with an older version, one workaround is to fall back to |
| 52 | <tt>cmd.exe</tt> — which doesn't seem to be affected by this problem. |
| 53 | Nevertheless, we instead recommend using |
| 54 | Microsoft's own [https://learn.microsoft.com/en-us/windows/wsl/ | Windows |
| 55 | Subsystem for Linux] or either of the two popular "Git for Windows" |
| 56 | distributions based on MSYS2. They handle pipes the POSIX way, avoiding |
| 57 | any dependency on the amount of data involved. |
| 58 | |
| 59 |