diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ca9770df8c4808..d95d244418160f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,8 +39,8 @@ When running `make`, you can use `-j$(nproc)` to automatically use the number of on your machine as the number of concurrent build processes. You can go deeper on the Windows-specific build process by reading the -[technical overview](https://github.com/git-for-windows/git/wiki/Technical-overview) or the -[guide to compiling Git with Visual Studio](https://github.com/git-for-windows/git/wiki/Compiling-Git-with-Visual-Studio). +[technical overview](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Technical-overview) or the +[guide to compiling Git with Visual Studio](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio). ## Building `git` on Windows with Visual Studio @@ -120,7 +120,7 @@ you want to extend the functional tests to be sure no one breaks your feature in ### Functional Tests Navigate to the `t/` directory and type `make` to run all tests or use `prove` as -[described in the Git for Windows wiki](https://github.com/git-for-windows/git/wiki/Building-Git): +[described in the Git for Windows wiki](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-Git): ``` prove -j12 --state=failed,save ./t[0-9]*.sh diff --git a/Documentation/git-for-windows/0.-Index.md b/Documentation/git-for-windows/0.-Index.md index 498ba6aa5f2d8b..d8fb14ee6791d4 100644 --- a/Documentation/git-for-windows/0.-Index.md +++ b/Documentation/git-for-windows/0.-Index.md @@ -1,51 +1,51 @@ This is for the poor souls in corporate IE environments who can't expand the page list. -* [Home](https://github.com/git-for-windows/git/wiki) -* [32 bit issues](https://github.com/git-for-windows/git/wiki/32-bit-issues) -* [Adding regression tests](https://github.com/git-for-windows/git/wiki/Adding-regression-tests) -* [Auto launching ssh agent when git starts](https://github.com/git-for-windows/git/wiki/Auto-launching-ssh-agent-when-git-starts) -* [Building Git](https://github.com/git-for-windows/git/wiki/Building-Git) -* [Building msys2 runtime](https://github.com/git-for-windows/git/wiki/Building-msys2-runtime) -* [Building new package versions](https://github.com/git-for-windows/git/wiki/Building-new-package-versions) -* [Compiling Git with Visual Studio](https://github.com/git-for-windows/git/wiki/Compiling-Git-with-Visual-Studio) -* [Contact](https://github.com/git-for-windows/git/wiki/Contact) -* [Continuous Integration (CI)](https://github.com/git-for-windows/git/wiki/Continuous-Integration-(CI)) -* [Debugging Git](https://github.com/git-for-windows/git/wiki/Debugging-Git) -* [Diagnosing performance issues](https://github.com/git-for-windows/git/wiki/Diagnosing-performance-issues) -* [exec() semantics](https://github.com/git-for-windows/git/wiki/exec()-semantics) -* [FAQ](https://github.com/git-for-windows/git/wiki/FAQ) -* [File names, Branch names, Path quotation, Executable bit and file modes, core.FileMode](https://github.com/git-for-windows/git/wiki/File-names,-Branch-names,-Path-quotation,-Executable-bit-and-file-modes,-core.FileMode) -* [Git cannot create a file or directory with a long path](https://github.com/git-for-windows/git/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) -* [Git-for-Windows' "snapshots"](https://github.com/git-for-windows/git/wiki/Snapshot-builds) -* [Good commits](https://github.com/git-for-windows/git/wiki/Good-commits) -* [How to participate](https://github.com/git-for-windows/git/wiki/How-to-participate) -* [Install inside MSYS2 proper](https://github.com/git-for-windows/git/wiki/Install-inside-MSYS2-proper) -* [Install or update inside MSYS2, Cygwin or Git-for-windows itself](https://github.com/git-for-windows/git/wiki/Install-or-update-inside-MSYS2,-Cygwin-or-Git-for-windows-itself) -* [Issue reporting guidelines](https://github.com/git-for-windows/git/wiki/Issue-reporting-guidelines) -* [Making a portable Git](https://github.com/git-for-windows/git/wiki/Making-a-portable-Git) -* [Making an installer](https://github.com/git-for-windows/git/wiki/Making-an-installer) -* [Mapping between Git Installer GUI Settings And Command Line Arguments](https://github.com/git-for-windows/git/wiki/Mapping-between-Git-Installer-GUI-Settings-And-Command-Line-Arguments) -* [Merge Conflicts Resolving and Remembering them](https://github.com/git-for-windows/git/wiki/Merge-Conflicts---Resolving-and-Remembering-them) -* [MinGit is Git for Windows Applications](https://github.com/git-for-windows/git/wiki/MinGit) -* [MSYS2 Notes](https://github.com/git-for-windows/git/wiki/MSYS2-Notes) -* [OpenSSH Integration with Pageant](https://github.com/git-for-windows/git/wiki/OpenSSH-Integration-with-Pageant) -* [Package management](https://github.com/git-for-windows/git/wiki/Package-management) -* [Performance profiling with Visual Studio](https://github.com/git-for-windows/git/wiki/Performance-profiling-with-Visual-Studio) -* [Rebasing Git for Windows](https://github.com/git-for-windows/git/wiki/Rebasing-Git-for-Windows) -* [Release Hashes](https://github.com/git-for-windows/git/wiki/Release-Hashes) -* [Running Git's regression tests](https://github.com/git-for-windows/git/wiki/Running-Git's-regression-tests) -* [Setting your Core.Editor ( e.g. Notepad )](https://github.com/git-for-windows/git/wiki/Setting-your-Core.Editor-(-e.g.-Notepad-)) -* [Silent or Unattended Installation](https://github.com/git-for-windows/git/wiki/Silent-or-Unattended-Installation) -* [Sourcetrail code viewer and linkage to Visual Studio, for Git](https://github.com/git-for-windows/git/wiki/Sourcetrail-code-viewer-and-linkage-to-Visual-Studio,-for-Git) -* [Symbolic Links](https://github.com/git-for-windows/git/wiki/Symbolic-Links) -* [Technical overview](https://github.com/git-for-windows/git/wiki/Technical-overview) -* [The "Git-wrapper"](https://github.com/git-for-windows/git/wiki/Git-wrapper) -* [The difference between MINGW and MSYS2](https://github.com/git-for-windows/git/wiki/The-difference-between-MINGW-and-MSYS2) -* [Updating your SDK](https://github.com/git-for-windows/git/wiki/Updating-your-SDK) -* [Upgrading the 'perl' component to a new version](https://github.com/git-for-windows/git/wiki/Upgrading-the-%60perl%60-component-to-a-new-version) -* [Using sshd to host a git server](https://github.com/git-for-windows/git/wiki/Using-sshd-to-host-a-git-server) -* [Vagrant](https://github.com/git-for-windows/git/wiki/Vagrant) -* [Visual Studio and MSVC compilation](https://github.com/git-for-windows/git/wiki/Visual-Studio-and-MSVC-compilation) -* [Zip Archives extracting the released archives](https://github.com/git-for-windows/git/wiki/Zip-Archives---extracting-the-released-archives) +* [Home](https://github.com/ ree/HEAD/Documentation/git-for-windows) +* [32 bit issues](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/32-bit-issues) +* [Adding regression tests](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Adding-regression-tests) +* [Auto launching ssh agent when git starts](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Auto-launching-ssh-agent-when-git-starts) +* [Building Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-Git) +* [Building msys2 runtime](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-msys2-runtime) +* [Building new package versions](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-new-package-versions) +* [Compiling Git with Visual Studio](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio) +* [Contact](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Contact) +* [Continuous Integration (CI)](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Continuous-Integration-(CI)) +* [Debugging Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Debugging-Git) +* [Diagnosing performance issues](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Diagnosing-performance-issues) +* [exec() semantics](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/exec()-semantics) +* [FAQ](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/FAQ) +* [File names, Branch names, Path quotation, Executable bit and file modes, core.FileMode](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/File-names,-Branch-names,-Path-quotation,-Executable-bit-and-file-modes,-core.FileMode) +* [Git cannot create a file or directory with a long path](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Git-cannot-create-a-file-or-directory-with-a-long-path) +* [Git-for-Windows' "snapshots"](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Snapshot-builds) +* [Good commits](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Good-commits) +* [How to participate](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/How-to-participate) +* [Install inside MSYS2 proper](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Install-inside-MSYS2-proper) +* [Install or update inside MSYS2, Cygwin or Git-for-windows itself](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Install-or-update-inside-MSYS2,-Cygwin-or-Git-for-windows-itself) +* [Issue reporting guidelines](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Issue-reporting-guidelines) +* [Making a portable Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Making-a-portable-Git) +* [Making an installer](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Making-an-installer) +* [Mapping between Git Installer GUI Settings And Command Line Arguments](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Mapping-between-Git-Installer-GUI-Settings-And-Command-Line-Arguments) +* [Merge Conflicts Resolving and Remembering them](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Merge-Conflicts---Resolving-and-Remembering-them) +* [MinGit is Git for Windows Applications](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/MinGit) +* [MSYS2 Notes](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/MSYS2-Notes) +* [OpenSSH Integration with Pageant](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/OpenSSH-Integration-with-Pageant) +* [Package management](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management) +* [Performance profiling with Visual Studio](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Performance-profiling-with-Visual-Studio) +* [Rebasing Git for Windows](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Rebasing-Git-for-Windows) +* [Release Hashes](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Release-Hashes) +* [Running Git's regression tests](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Running-Git's-regression-tests) +* [Setting your Core.Editor ( e.g. Notepad )](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Setting-your-Core.Editor-(-e.g.-Notepad-)) +* [Silent or Unattended Installation](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Silent-or-Unattended-Installation) +* [Sourcetrail code viewer and linkage to Visual Studio, for Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Sourcetrail-code-viewer-and-linkage-to-Visual-Studio,-for-Git) +* [Symbolic Links](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Symbolic-Links) +* [Technical overview](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Technical-overview) +* [The "Git-wrapper"](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Git-wrapper) +* [The difference between MINGW and MSYS2](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2) +* [Updating your SDK](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Updating-your-SDK) +* [Upgrading the 'perl' component to a new version](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Upgrading-the-%60perl%60-component-to-a-new-version) +* [Using sshd to host a git server](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Using-sshd-to-host-a-git-server) +* [Vagrant](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Vagrant) +* [Visual Studio and MSVC compilation](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Visual-Studio-and-MSVC-compilation) +* [Zip Archives extracting the released archives](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Zip-Archives---extracting-the-released-archives) -Fin- diff --git a/Documentation/git-for-windows/Building-Git.md b/Documentation/git-for-windows/Building-Git.md index 44c7874a742657..6d6965d9d3e2b9 100644 --- a/Documentation/git-for-windows/Building-Git.md +++ b/Documentation/git-for-windows/Building-Git.md @@ -26,7 +26,7 @@ Once the SDK built Git, it is *very* easy to build another revision of Git, such 1. if you want to test a Pull Request, call `git fetch origin refs/pull//head`, where `` is the number of the Pull Request (e.g. if you want to test Pull Request #606, you would call `git fetch origin refs/pull/606/head`), 2. if you want to test a custom branch, call `git fetch ` instead, where `` is the URL of the repository and `` is the name of the branch to test (e.g. if you wanted to test @dscho's `cool-new-feature` branch, you would call `git fetch https://github.com/dscho/git cool-new-feature`), 4. check out the revision that was just fetched: `git checkout FETCH_HEAD`, -5. continue as [above](https://github.com/git-for-windows/git/wiki/Building-Git#build-git) either by `make install` or `make test`. +5. continue as [above](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-Git#build-git) either by `make install` or `make test`. # Updating to the newest Git for Windows version @@ -48,7 +48,7 @@ cd /usr/src/git/t ## See also Regression Testing Single tests, block of tests, or the whole test suite can be run, as detailed in -[Running Git's regression-tests](https://github.com/git-for-windows/git/wiki/Running-Git's-regression-tests) +[Running Git's regression-tests](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Running-Git's-regression-tests) --- diff --git a/Documentation/git-for-windows/Building-new-package-versions.md b/Documentation/git-for-windows/Building-new-package-versions.md index 83641c6d36762b..cbe514cb55eab1 100644 --- a/Documentation/git-for-windows/Building-new-package-versions.md +++ b/Documentation/git-for-windows/Building-new-package-versions.md @@ -37,4 +37,4 @@ The strategy that worked best for the Git for Windows maintainer goes like this: 9. test (`cd ../.. && sdk build`) 10. commit, push (and open a PR unless pushing directly to `main`) -Caveat: this strategy needs manual adjustments if the archive in question contains files with DOS line endings (I am looking at you, [Perl](https://github.com/git-for-windows/git/wiki/Upgrading-the-%60perl%60-component-to-a-new-version) _shakes fist_): `import-tars.perl` will happily import those verbatim, but the `bsdtar` used by `makepkg` to unpack the archive will convert them to Unix line endings, and if the patches expect DOS line endings, they won't apply. \ No newline at end of file +Caveat: this strategy needs manual adjustments if the archive in question contains files with DOS line endings (I am looking at you, [Perl](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Upgrading-the-%60perl%60-component-to-a-new-version) _shakes fist_): `import-tars.perl` will happily import those verbatim, but the `bsdtar` used by `makepkg` to unpack the archive will convert them to Unix line endings, and if the patches expect DOS line endings, they won't apply. \ No newline at end of file diff --git a/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio.md b/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio.md index 6445f734b8f6d8..164aeefed5fad4 100644 --- a/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio.md +++ b/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio.md @@ -5,7 +5,7 @@ Please note: this page describes how to compile Git's source code in Visual Stud > [!WARNING] > The `vs/main` branch and `git.sln` is deprecated. The current approach is to open the `git` folder in VS directly, refer to the [README of the `vs/main` branch](https://github.com/git-for-windows/git/tree/vs/main). -Git's source code (and hence also Git for Windows' source code) is [usually built using GNU C and GNU Make in a Git for Windows SDK](https://github.com/git-for-windows/git/wiki/Building-Git). +Git's source code (and hence also Git for Windows' source code) is [usually built using GNU C and GNU Make in a Git for Windows SDK](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-Git). However, as of Git for Windows v2.11.0, a much more convenient way is available: by cloning https://github.com/git-for-windows/git and checking out the `vs/main` branch, you will automatically have project definitions ready to go with Visual Studio. @@ -40,4 +40,4 @@ prove --timer --jobs 15 ./t[0-9]*.sh # Browsing the code -You can also use the Sourcetrail code browser (now open source) in conjunction with Visual Studio, see [Sourcetrail code viewer](https://github.com/git-for-windows/git/wiki/Sourcetrail-code-viewer-and-linkage-to-Visual-Studio,-for-Git) page. \ No newline at end of file +You can also use the Sourcetrail code browser (now open source) in conjunction with Visual Studio, see [Sourcetrail code viewer](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Sourcetrail-code-viewer-and-linkage-to-Visual-Studio,-for-Git) page. \ No newline at end of file diff --git a/Documentation/git-for-windows/Contact.md b/Documentation/git-for-windows/Contact.md index 3c0123b7fe580d..73c5cde148d17a 100644 --- a/Documentation/git-for-windows/Contact.md +++ b/Documentation/git-for-windows/Contact.md @@ -2,7 +2,7 @@ Please state the nature of your medical emergency. # I found a bug! -Please follow [our guide lines](https://github.com/git-for-windows/git/wiki/Issue-reporting-guidelines) on reporting bugs. +Please follow [our guide lines](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Issue-reporting-guidelines) on reporting bugs. # I have a question! diff --git a/Documentation/git-for-windows/Diagnosing-performance-issues.md b/Documentation/git-for-windows/Diagnosing-performance-issues.md index 3f8681a54f9761..865f65b3c0514c 100644 --- a/Documentation/git-for-windows/Diagnosing-performance-issues.md +++ b/Documentation/git-for-windows/Diagnosing-performance-issues.md @@ -6,7 +6,7 @@ If the problem lies with a specific Git command, the most straight-forward way t The canonical profiling tool in GCC's tool set is [`gprof`](https://sourceware.org/binutils/docs/gprof/). However, the MINGW version of the GCC tools offered by MSYS2 has been known to produce empty output on occasion. -An more convenient alternative is to use [Visual Studio's Performance Profiler](https://github.com/git-for-windows/git/wiki/Performance-profiling-with-Visual-Studio) (which is available in the free-of-cost Community version) which offers a powerful graphical user interface. +An more convenient alternative is to use [Visual Studio's Performance Profiler](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Performance-profiling-with-Visual-Studio) (which is available in the free-of-cost Community version) which offers a powerful graphical user interface. # Trace executions in the Bash startup diff --git a/Documentation/git-for-windows/FAQ.md b/Documentation/git-for-windows/FAQ.md index 6097d3f0d6e7de..8f62e4995deafe 100644 --- a/Documentation/git-for-windows/FAQ.md +++ b/Documentation/git-for-windows/FAQ.md @@ -47,7 +47,7 @@ For hashes see https://github.com/git-for-windows/git/releases For (G4W) release notes see the [build-extra repo](https://github.com/git-for-windows/build-extra/blob/HEAD/ReleaseNotes.md), or the top level of your installation (e.g. [C:\Program Files\Git\ReleaseNotes.html](https://www.example.com/Program%20Files/Git/ReleaseNotes.html) - via manual browsing). -For extracting 7z/zip archives see [page](https://github.com/git-for-windows/git/wiki/Zip-Archives---extracting-the-released-archives). +For extracting 7z/zip archives see [page](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Zip-Archives---extracting-the-released-archives). ## Are there 'Nightly' builds of the latest and greatest @@ -68,7 +68,7 @@ Finally, Git for Windows is sometimes released in "out-of-band" versions, when c ## What is the relationship between *Git for Windows* and *msysGit*? -*Git for Windows* used to be developed using the development environment called "msysGit", but roughly coinciding with Git 2.1, msysGit was superseded by a new development environment: the [Git for Windows SDK](https://github.com/git-for-windows/build-extra/releases). See [here](https://github.com/git-for-windows/git/wiki/Updating-your-SDK) to get a copy. +*Git for Windows* used to be developed using the development environment called "msysGit", but roughly coinciding with Git 2.1, msysGit was superseded by a new development environment: the [Git for Windows SDK](https://github.com/git-for-windows/build-extra/releases). See [here](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Updating-your-SDK) to get a copy. ## Some native console programs don't work when run from Git Bash. How to fix it? @@ -84,7 +84,7 @@ There are several methods for working around these problems: * Install and use [ConEmu](https://conemu.github.io/). ## I get errors trying to check out files with long path names. -Windows file paths are by default limited to 260 characters. Some repositories may have committed files which contain paths longer than the limit. By default, *Git for Windows* does not support long paths, and will print errors when trying to perform any operation on a long file name. Set the configuration property `core.longpaths` to true to allow certain Git operations to properly handle these files. See [this wiki page](https://github.com/git-for-windows/git/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) for more information. +Windows file paths are by default limited to 260 characters. Some repositories may have committed files which contain paths longer than the limit. By default, *Git for Windows* does not support long paths, and will print errors when trying to perform any operation on a long file name. Set the configuration property `core.longpaths` to true to allow certain Git operations to properly handle these files. See [this wiki page](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Git-cannot-create-a-file-or-directory-with-a-long-path) for more information. ## The installed files are duplicated and look massive - Why? All the apparent copies are simply hard links - see Issue 1997 [Use symbolic links for libexec](https://github.com/git-for-windows/git/issues/1997) for more details. diff --git a/Documentation/git-for-windows/Git-wrapper.md b/Documentation/git-for-windows/Git-wrapper.md index 172f518a7469b1..d4f1fd09ae0ae0 100644 --- a/Documentation/git-for-windows/Git-wrapper.md +++ b/Documentation/git-for-windows/Git-wrapper.md @@ -18,7 +18,7 @@ The actual programs, e.g. `bash.exe` or `git.exe`, live in `\usr\bin` and ` - **`MSYSTEM`** - To accommodate Git's expectations where it assumes e.g. a Unix shell to be present on the `PATH`, Git for Windows ships with a subset of [MSYS2](https://msys2.github.io/) (find out about more historical context [here](https://github.com/git-for-windows/git/wiki#about)). MSYS2 can be run in two flavors, [MINGW and MSYS](https://github.com/git-for-windows/git/wiki/The-difference-between-MINGW-and-MSYS2) and the flavor Git for Windows needs is MINGW. This is specified via the `MSYSTEM` variable. + To accommodate Git's expectations where it assumes e.g. a Unix shell to be present on the `PATH`, Git for Windows ships with a subset of [MSYS2](https://msys2.github.io/) (find out about more historical context [here](https://github.com/ ree/HEAD/Documentation/git-for-windows#about)). MSYS2 can be run in two flavors, [MINGW and MSYS](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2) and the flavor Git for Windows needs is MINGW. This is specified via the `MSYSTEM` variable. - **`PLINK_PROTOCOL`** diff --git a/Documentation/git-for-windows/Home.md b/Documentation/git-for-windows/Home.md index ad4d98b4111da2..4345bf4b86d826 100644 --- a/Documentation/git-for-windows/Home.md +++ b/Documentation/git-for-windows/Home.md @@ -1,5 +1,5 @@ # Introduction -The _Git for Windows_ wiki. It looks more technical than [our home page](https://gitforwindows.org/) because it is the place where *you* [can contribute](https://github.com/git-for-windows/git/wiki/How-to-participate) to the documentation about _Git for Windows_. +The _Git for Windows_ wiki. It looks more technical than [our home page](https://gitforwindows.org/) because it is the place where *you* [can contribute](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/How-to-participate) to the documentation about _Git for Windows_. ## About _Git for Windows_ is very different from _Git_ in one very important respect: As Windows does not provide the *POSIX* infrastructure Git expects, Git for Windows always had to ship with much more than any other Git distribution: provide a `bash`, a `perl`, many *POSIX* tools such as `sed`, `awk`, `tr`, etc. @@ -18,7 +18,7 @@ And yes, the idea is still the same as the original one: Update the _MSYS2_ setu Now, keep in mind that _MSYS2_ and Linux (The original target for _Git_'s distribution) are very different beasts. Their distributions might include packages that are built from the same source code (i.e. the `binutils`, `gcc` or `bash` package), but the runtime is very, very different: _MSYS2_'s runtime is a stripped-down, slightly modified _Cygwin_ runtime running on top of the Windows kernel, while Linux' runtime is the Linux kernel, running as a separate OS altogether. -So if you are missing some packages - feel free to start making one. This is Open Source, after all, so everybody interested and capable enough can contribute whatever they need to address their needs. And that includes you: you could imitate e.g. [a simple `PKGBUILD` file](https://github.com/msys2/MINGW-packages/blob/HEAD/mingw-w64-assimp/PKGBUILD) to build a new package e.g. `msmtp`, the component that _Git for Windows_ 1.x uses to support `sendemail`. Then open a Pull Request so that _Git for Windows_ can ship it. Our documentation will be helpful in that endeavor: [package-management](https://github.com/git-for-windows/git/wiki/Package-management), in particular [package-management#rebuild-packages](https://github.com/git-for-windows/git/wiki/Package-management#rebuild-packages). +So if you are missing some packages - feel free to start making one. This is Open Source, after all, so everybody interested and capable enough can contribute whatever they need to address their needs. And that includes you: you could imitate e.g. [a simple `PKGBUILD` file](https://github.com/msys2/MINGW-packages/blob/HEAD/mingw-w64-assimp/PKGBUILD) to build a new package e.g. `msmtp`, the component that _Git for Windows_ 1.x uses to support `sendemail`. Then open a Pull Request so that _Git for Windows_ can ship it. Our documentation will be helpful in that endeavor: [package-management](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management), in particular [package-management#rebuild-packages](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management#rebuild-packages). # Start documenting If you need inspiration what you could write about: document your common work flows. Write a tutorial how to start coding _Git for Windows_, how to run the test suite. Write a tutorial how to debug a failing test. Write about something you would have wished you had known about Git for Windows a long time ago. diff --git a/Documentation/git-for-windows/How-to-participate.md b/Documentation/git-for-windows/How-to-participate.md index 18136d74b349cf..310c563a38bd94 100644 --- a/Documentation/git-for-windows/How-to-participate.md +++ b/Documentation/git-for-windows/How-to-participate.md @@ -6,14 +6,14 @@ On [the mailing list](http://groups.google.com/group/git-for-windows) or on [the # Add documentation -A lot of documentation wants to be written, still. A good place is [the Git for Windows wiki](https://github.com/git-for-windows/git/wiki). Tutorials, step by step instructions and general background information, etc. Even just keep the links up to date and reporting inconsistencies is helpful. +A lot of documentation wants to be written, still. A good place is [the Git for Windows wiki](https://github.com/ ree/HEAD/Documentation/git-for-windows). Tutorials, step by step instructions and general background information, etc. Even just keep the links up to date and reporting inconsistencies is helpful. # Fix bugs or add features in the Git code itself Download [the SDK](https://gitforwindows.org/#download-sdk) and build Git. See the [CONTRIBUTING.md](https://github.com/git-for-windows/git/blob/HEAD/CONTRIBUTING.md) page/file -Also have a look at [this page](https://github.com/git-for-windows/git/wiki/Building-Git) for tips and tricks revolving around building and debugging Git. +Also have a look at [this page](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-Git) for tips and tricks revolving around building and debugging Git. Please also sign off your work, as [asked by the Git project](https://git-scm.com/docs/SubmittingPatches#sign-off) diff --git a/Documentation/git-for-windows/Install-or-update-inside-MSYS2,-Cygwin-or-Git-for-windows-itself.md b/Documentation/git-for-windows/Install-or-update-inside-MSYS2,-Cygwin-or-Git-for-windows-itself.md index 5c132923b198fb..200aab13130226 100644 --- a/Documentation/git-for-windows/Install-or-update-inside-MSYS2,-Cygwin-or-Git-for-windows-itself.md +++ b/Documentation/git-for-windows/Install-or-update-inside-MSYS2,-Cygwin-or-Git-for-windows-itself.md @@ -1,4 +1,4 @@ -## It's different from [Install inside MSYS2 proper](https://github.com/git-for-windows/git/wiki/Install-inside-MSYS2-proper) +## It's different from [Install inside MSYS2 proper](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Install-inside-MSYS2-proper) Instead of configuring and installing Git for Windows using `pacman`, this guide introduces another approach to properly install or update Git for Windows inside MSYS2, Cygwin or even Git for Windows itself. The only thing you need is a `bash` interpreter on Windows and a `curl`. diff --git a/Documentation/git-for-windows/Making-a-portable-Git.md b/Documentation/git-for-windows/Making-a-portable-Git.md index e8431f0be8d711..3dc541d2de6732 100644 --- a/Documentation/git-for-windows/Making-a-portable-Git.md +++ b/Documentation/git-for-windows/Making-a-portable-Git.md @@ -1,4 +1,4 @@ -As the portable Git is made by putting together files from the Git SDK, it is advisable to update those files first. To update the packages, call `pacman -Syu` ([caveats apply](https://github.com/git-for-windows/git/wiki/Package-management#updating-msys2-runtime-pacman-and-bash)). If you want to test Git changes or make an portable Git from your own Git fork, you need to call `cd /usr/src/git && make install` (for documentation changes, `make install-html` and *afterwards* `prefix=/mingw64 make -C contrib/subtree install-html` - without the second `make` you get a error message about a missing `git-subtree.html` file). +As the portable Git is made by putting together files from the Git SDK, it is advisable to update those files first. To update the packages, call `pacman -Syu` ([caveats apply](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management#updating-msys2-runtime-pacman-and-bash)). If you want to test Git changes or make an portable Git from your own Git fork, you need to call `cd /usr/src/git && make install` (for documentation changes, `make install-html` and *afterwards* `prefix=/mingw64 make -C contrib/subtree install-html` - without the second `make` you get a error message about a missing `git-subtree.html` file). To package the portable Git, install the [SDK](https://gitforwindows.org/#download-sdk), run it and then issue the following commands: diff --git a/Documentation/git-for-windows/Making-an-installer.md b/Documentation/git-for-windows/Making-an-installer.md index 9941c8acc30a14..0fd67e02ae8c65 100644 --- a/Documentation/git-for-windows/Making-an-installer.md +++ b/Documentation/git-for-windows/Making-an-installer.md @@ -15,7 +15,7 @@ sdk cd installer # Detailed overview -As the installer is made by putting together files from the Git SDK, it is advisable to update those files first. To update the packages, call `pacman -Syu` ([caveats apply](https://github.com/git-for-windows/git/wiki/Package-management#updating-msys2-runtime-pacman-and-bash)). +As the installer is made by putting together files from the Git SDK, it is advisable to update those files first. To update the packages, call `pacman -Syu` ([caveats apply](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management#updating-msys2-runtime-pacman-and-bash)). If you want to test Git changes or make an installer from your own Git fork, you need to call diff --git a/Documentation/git-for-windows/Mapping-between-Git-Installer-GUI-Settings-And-Command-Line-Arguments.md b/Documentation/git-for-windows/Mapping-between-Git-Installer-GUI-Settings-And-Command-Line-Arguments.md index c239635381feba..6963408fcc2da8 100644 --- a/Documentation/git-for-windows/Mapping-between-Git-Installer-GUI-Settings-And-Command-Line-Arguments.md +++ b/Documentation/git-for-windows/Mapping-between-Git-Installer-GUI-Settings-And-Command-Line-Arguments.md @@ -17,4 +17,4 @@ The following table maps Git GUI Installation settings to corresponding Git Comm
-For a comprehensive list of Git for Windows Installer command line arguments [see here](https://github.com/git-for-windows/git/wiki/Silent-or-Unattended-Installation). \ No newline at end of file +For a comprehensive list of Git for Windows Installer command line arguments [see here](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Silent-or-Unattended-Installation). \ No newline at end of file diff --git a/Documentation/git-for-windows/Merge-Conflicts---Resolving-and-Remembering-them.md b/Documentation/git-for-windows/Merge-Conflicts---Resolving-and-Remembering-them.md index bab4f42a7e8e07..88bf7a9064cf71 100644 --- a/Documentation/git-for-windows/Merge-Conflicts---Resolving-and-Remembering-them.md +++ b/Documentation/git-for-windows/Merge-Conflicts---Resolving-and-Remembering-them.md @@ -2,7 +2,7 @@ Work in Progress as I try and work out how to do this (06-04-2019).. When building a new release for Git-for-Windows, the full range of Windows patches the maintainer applies need to be moved ([`rebase`](https://git-scm.com/docs/git-rebase)d) from being on top of the old upstream Git, to being on top of the new upstream release. -There is a [process](https://github.com/git-for-windows/git/wiki/Rebasing-Git-for-Windows), a script and the support of the merging-rebase code, but still there maybe conflicts, old and new, especially if some of the Windows code has been adopted upstream in a different form. +There is a [process](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Rebasing-Git-for-Windows), a script and the support of the merging-rebase code, but still there maybe conflicts, old and new, especially if some of the Windows code has been adopted upstream in a different form. This note looks at how to remember those resolutions, reuse them, and to learn from previous Git-for-Windows rebases. The magic is in the [REuse REcorded REsolution (rerere)](https://git-scm.com/docs/git-rerere) command and it's underlying database. diff --git a/Documentation/git-for-windows/Rebasing-Git-for-Windows.md b/Documentation/git-for-windows/Rebasing-Git-for-Windows.md index 3380ffb928f076..9ec8720b9b8513 100644 --- a/Documentation/git-for-windows/Rebasing-Git-for-Windows.md +++ b/Documentation/git-for-windows/Rebasing-Git-for-Windows.md @@ -25,7 +25,7 @@ Run the `shears.sh` script to build up the actual *rebase* script. Note: `v2.3.4` is a `tag` in the remote `git`. See the script if you are testing changes initiated in a local branch of the git upstream. -The *rebase* should start automatically and occasionally stop if it hits any merge conflicts. Resolve those conflicts (see also [Merge Conflicts Resolving and Remembering them](https://github.com/git-for-windows/git/wiki/Merge-Conflicts---Resolving-and-Remembering-them)) and then continue the rebase. +The *rebase* should start automatically and occasionally stop if it hits any merge conflicts. Resolve those conflicts (see also [Merge Conflicts Resolving and Remembering them](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Merge-Conflicts---Resolving-and-Remembering-them)) and then continue the rebase. `git rebase --continue` Note: the `merging-rebase` argument is a special placeholder that is interpreted by the `shears.sh` script to find the commit that started the previous merging-rebase. You can find the commit yourself like this: diff --git a/Documentation/git-for-windows/Technical-overview.md b/Documentation/git-for-windows/Technical-overview.md index ea47f3e2de7708..6157f793997c3e 100644 --- a/Documentation/git-for-windows/Technical-overview.md +++ b/Documentation/git-for-windows/Technical-overview.md @@ -12,7 +12,7 @@ Download the [SDK](https://gitforwindows.org/#download-sdk) and run it (using "R You can open the `Git for Windows SDK` shell by double clicking `git-bash.exe` in the install folder. -As the installer is made by putting together files from the Git for Windows SDK, it is advisable to update those files first. To update the packages, call `pacman -Syu` ([caveats apply](https://github.com/git-for-windows/git/wiki/Package-management#updating-msys2-runtime-pacman-and-bash)). +As the installer is made by putting together files from the Git for Windows SDK, it is advisable to update those files first. To update the packages, call `pacman -Syu` ([caveats apply](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management#updating-msys2-runtime-pacman-and-bash)). # Hacking on git @@ -30,7 +30,7 @@ In some cases, the change you want to make is not in git itself, but in the addi You can build both a normal setup installer and a portable one. -The installers are basically created by collecting files from the `Git for Windows SDK` Msys environment, not from any checked out source code! It's therefore important to make any changed files available to the installer (the `make` calls in the "[Hacking on git](https://github.com/git-for-windows/git/wiki/Technical-overview#hacking-on-git)" step)! +The installers are basically created by collecting files from the `Git for Windows SDK` Msys environment, not from any checked out source code! It's therefore important to make any changed files available to the installer (the `make` calls in the "[Hacking on git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Technical-overview#hacking-on-git)" step)! As a one time step, you need to prepare the extra files which contain the helper scripts: @@ -60,5 +60,5 @@ See also: * [Debugging git](Debugging-Git) with gdb * Running Git's [regression tests](Running-Git's-regression-tests) * MSYS/MINGW [package management](Package-management#technical-details) -* [Updating the SDK](https://github.com/git-for-windows/git/wiki/Updating-your-SDK) +* [Updating the SDK](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Updating-your-SDK) * [MSYS2](https://msys2.github.io/) diff --git a/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2.md b/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2.md index c4c8cb699941cf..eaadbea0bfcd45 100644 --- a/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2.md +++ b/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2.md @@ -36,7 +36,7 @@ Now, to understand the packages' names better, we need to understand how MSYS2 p MSYS2's runtime is `\usr\bin\msys-2.0.dll`. It is an implicit dependency of all MSYS2 executables (most of which live in \usr\bin). This runtime provides emulation for all POSIX functionality enjoyed e.g. by Linux software. This means that it is *a lot* easier to port Linux projects to MSYS2 than it is to straight Windows. So when porting Bash or OpenSSH, it is much, much easier to port them to an MSYS2 package. So why don't we just make all packages MSYS2 ones? The POSIX emulation is *slow*. Like, really, really noticeably slow. -So it is much preferred to port Linux software to pure Win32 calls, without going the POSIX emulation route. Of course, this is a ton more work *per project*. That is the reason why this is not done for all packages. You may want to read [this article](https://github.com/git-for-windows/git/wiki/Windows-vs-Linux-fork()/exec()-semantics) for getting an acquaintance of just a part of underlying problems. +So it is much preferred to port Linux software to pure Win32 calls, without going the POSIX emulation route. Of course, this is a ton more work *per project*. That is the reason why this is not done for all packages. You may want to read [this article](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Windows-vs-Linux-fork()/exec()-semantics) for getting an acquaintance of just a part of underlying problems. Normally, we use Visual C++ compiler on Windows. When building Windows software using GCC, it is necessary to have all the support headers and libraries. They are not provided by Microsoft, but by a separate project called MINGW ("Minimal GNU on Windows"). MSYS2 uses these MINGW libraries (and MINGW GCC compiler) to build pure Win32 packages, and those are called MINGW packages. diff --git a/Documentation/git-for-windows/Updating-your-SDK.md b/Documentation/git-for-windows/Updating-your-SDK.md index c1ec86331c9c08..7ac2a875cdba8f 100644 --- a/Documentation/git-for-windows/Updating-your-SDK.md +++ b/Documentation/git-for-windows/Updating-your-SDK.md @@ -63,7 +63,7 @@ One option is a re-install, having saved your working repositories. ### See Also: -* [G4W Package Management](https://github.com/git-for-windows/git/wiki/Package-management) +* [G4W Package Management](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management) * [pacman man page](https://www.archlinux.org/pacman/pacman.8.html) * [PKGBuild man page](https://www.archlinux.org/pacman/PKGBUILD.5.html) * [makepkg man page](https://www.archlinux.org/pacman/makepkg.8.html) diff --git a/Documentation/git-for-windows/Upgrading-the-`perl`-component-to-a-new-version.md b/Documentation/git-for-windows/Upgrading-the-`perl`-component-to-a-new-version.md index 74838dd6787c7e..a8954e0920bb5e 100644 --- a/Documentation/git-for-windows/Upgrading-the-`perl`-component-to-a-new-version.md +++ b/Documentation/git-for-windows/Upgrading-the-`perl`-component-to-a-new-version.md @@ -4,7 +4,7 @@ Upgrading to a new Perl version is unfortunately a bit more involved than only f # Making sure that the DLL has the correct version in its file name -This is important, and it is a manual step required on top of [the usual adjustments to the patches](https://github.com/git-for-windows/git/wiki/Building-new-package-versions#adjusting-patches-when-they-no-longer-apply-to-new-versions): In the [`PKGBUILD`](https://github.com/msys2/MSYS2-packages/blob/HEAD/perl/PKGBUILD) file, the line `-Dlibperl=msys-perl5_.dll` needs to be adjusted. +This is important, and it is a manual step required on top of [the usual adjustments to the patches](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-new-package-versions#adjusting-patches-when-they-no-longer-apply-to-new-versions): In the [`PKGBUILD`](https://github.com/msys2/MSYS2-packages/blob/HEAD/perl/PKGBUILD) file, the line `-Dlibperl=msys-perl5_.dll` needs to be adjusted. # Rebuilding dependencees diff --git a/Documentation/git-for-windows/Visual-Studio-and-MSVC-compilation.md b/Documentation/git-for-windows/Visual-Studio-and-MSVC-compilation.md index 856dc8a69c2215..a3fe2a209f1b14 100644 --- a/Documentation/git-for-windows/Visual-Studio-and-MSVC-compilation.md +++ b/Documentation/git-for-windows/Visual-Studio-and-MSVC-compilation.md @@ -29,7 +29,7 @@ This is the environment variable used to indicate that this is not a CYGWIN comp see https://blogs.msdn.microsoft.com/oldnewthing/20091130-00/?p=15863 This controls what additional libraries windows will import, particularly winsock which would otherwise be multiply defined. ### MSYS2 -part of the (typically needed) operating stack for getting *nix / POSIX code working. see [The-difference-between-MINGW-and-MSYS2](https://github.com/git-for-windows/git/wiki/The-difference-between-MINGW-and-MSYS2) +part of the (typically needed) operating stack for getting *nix / POSIX code working. see [The-difference-between-MINGW-and-MSYS2](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2) ### MinGW -part of the (typically needed) operating stack for getting *nix / POSIX code working. see [The-difference-between-MINGW-and-MSYS2](https://github.com/git-for-windows/git/wiki/The-difference-between-MINGW-and-MSYS2) +part of the (typically needed) operating stack for getting *nix / POSIX code working. see [The-difference-between-MINGW-and-MSYS2](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2) diff --git a/Documentation/git-for-windows/Windows-vs-Linux-fork()/exec()-semantics.md b/Documentation/git-for-windows/Windows-vs-Linux-fork()/exec()-semantics.md index e14449719ca007..4fa7dc3f788871 100644 --- a/Documentation/git-for-windows/Windows-vs-Linux-fork()/exec()-semantics.md +++ b/Documentation/git-for-windows/Windows-vs-Linux-fork()/exec()-semantics.md @@ -9,7 +9,7 @@ Note that there's a newer, single call method on Linux ([`posix_spawn()`](http:/ All information about Linux is a brief retelling of Robert Love's book: [Linux Kernel Development](https://doc.lagout.org/operating%20system%20/linux/Linux%20Kernel%20Development%2C%203rd%20Edition.pdf). I definitely recommend you to read this book by yourself, especially if this article wasn't enough for you. I will oversimplify, otherwise I'd need to put the whole book here. -`fork()` on Windows is emulated by *MSYS*, while there is no `fork()` in *MINGW*. That is partially what makes [MSYS much slower than MINGW](https://github.com/git-for-windows/git/wiki/The-difference-between-MINGW-and-MSYS2). +`fork()` on Windows is emulated by *MSYS*, while there is no `fork()` in *MINGW*. That is partially what makes [MSYS much slower than MINGW](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/The-difference-between-MINGW-and-MSYS2). # Copy-on-write @@ -23,4 +23,4 @@ Since this scenario is so common on Linux, the system is optimized to execute `f # Windows internals: why fork() does not work as native -Windows doesn't officially have a good substitute of neither `fork()` nor `exec()`, so some smart people made a replacement that works pretty well, but can't be optimized well because it doesn't work at the system level. The replacement works like this: By calling `fork()`, the original process creates a process from the same executable, but it's like brand new at this point, as if it had no connection to the original one. Then the new process realizes it is supposed to be a fork and copies the entire address accessible memory space of the original process. It tries as best as it can to open the original file descriptors and sockets. It reinstates the current working directory (even if it does not exist anymore) and more. It spends a whole lot of time making sure the fork is as perfect as it can be [and may even fail completely when it can't due to DLL preloading](https://github.com/git-for-windows/git/wiki/32-bit-issues). Then the new process calls `exec()`, throws out all this and finally creates a new process with the correct executable. +Windows doesn't officially have a good substitute of neither `fork()` nor `exec()`, so some smart people made a replacement that works pretty well, but can't be optimized well because it doesn't work at the system level. The replacement works like this: By calling `fork()`, the original process creates a process from the same executable, but it's like brand new at this point, as if it had no connection to the original one. Then the new process realizes it is supposed to be a fork and copies the entire address accessible memory space of the original process. It tries as best as it can to open the original file descriptors and sockets. It reinstates the current working directory (even if it does not exist anymore) and more. It spends a whole lot of time making sure the fork is as perfect as it can be [and may even fail completely when it can't due to DLL preloading](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/32-bit-issues). Then the new process calls `exec()`, throws out all this and finally creates a new process with the correct executable. diff --git a/README.md b/README.md index 4eabce53d89e1f..eaf563b398e34a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ encounter problems, you can report them as [GitHub issues](https://github.com/git-for-windows/git/issues), discuss them on Git for Windows' [Google Group](http://groups.google.com/group/git-for-windows), and [contribute bug -fixes](https://github.com/git-for-windows/git/wiki/How-to-participate). +fixes](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/How-to-participate). To build Git for Windows, please either install [Git for Windows' SDK](https://gitforwindows.org/#download-sdk), start its `git-bash.exe`, `cd` diff --git a/SECURITY.md b/SECURITY.md index 328351684298a4..932b1008a9dedc 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -32,7 +32,7 @@ Git for Windows is a "friendly fork" of [Git](https://git-scm.com/), i.e. change While Git maintains several release trains (when v2.19.1 was released, there were updates to v2.14.x-v2.18.x, too, for example), Git for Windows follows only the latest Git release. For example, there is no Git for Windows release corresponding to Git v2.16.5 (which was released after v2.19.0). -One exception is [MinGit for Windows](https://github.com/git-for-windows/git/wiki/MinGit) (a minimal subset of Git for Windows, intended for bundling with third-party applications that do not need any interactive commands nor support for `git svn`): critical security fixes are backported to the v2.11.x, v2.14.x, v2.19.x, v2.21.x and v2.23.x release trains. +One exception is [MinGit for Windows](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/MinGit) (a minimal subset of Git for Windows, intended for bundling with third-party applications that do not need any interactive commands nor support for `git svn`): critical security fixes are backported to the v2.11.x, v2.14.x, v2.19.x, v2.21.x and v2.23.x release trains. ## Version number scheme