Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge git-for-windows/git/wiki #4951

Open
wants to merge 594 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
594 commits
Select commit Hold shift + click to select a range
48c2ba6
robmen/gitsetup#1 is closed, add new link to msi related files.
KexyBiscuit Feb 22, 2019
0f6a1ea
Add Microsoft Docs reference about TFS.
KexyBiscuit Feb 25, 2019
34a8ab0
Cleaned up
SteveALee Mar 16, 2019
2f12cff
Tweak
SteveALee Mar 16, 2019
490412e
The pound signs are ugly and unnecessary.
MultiplyByZer01 Mar 30, 2019
e7f3aee
extra comment for second pass (use pull), and for local tests.
Apr 2, 2019
ee8c764
added extra checks for $BASE and suggested readers look at range-diff
Apr 4, 2019
ee55118
What I'm Learning Is - Hopefully this will bridge the gap for new 'de…
Apr 5, 2019
49fc2a2
added Merge-Conflicts---Resolving-and-Remembering-them
Apr 5, 2019
33c702a
annded link to 'Merge Conflicts Resolving and Remembering them'
Apr 5, 2019
b139431
Updated Rebasing Git for Windows (markdown)
Apr 5, 2019
fee04e8
and rerere.autoupdate true
Apr 5, 2019
2df998e
rerere-train
Apr 5, 2019
f4e3dec
more rerere-train'ing stuff
Apr 5, 2019
d9438cd
Added large file size issue
Apr 6, 2019
406c667
Updated Merge Conflicts Resolving and Remembering them (markdown)
Apr 6, 2019
a4d9640
Updated Merge Conflicts Resolving and Remembering them (markdown)
Apr 6, 2019
82ba760
Updated Merge Conflicts Resolving and Remembering them (markdown)
Apr 6, 2019
4cef1c4
cross link to CONTRIBUTING.md within the code
Apr 6, 2019
9b05187
discuss what needs remembering, and an alternate description of how t…
Apr 6, 2019
1a4f95c
more (~last of not many) git list references
Apr 6, 2019
b6ea546
commas,
Apr 6, 2019
dc65844
Created mortal (markdown)
HeartbliT Apr 14, 2019
9d08cb8
Revert "Created mortal (markdown)"
dscho Apr 14, 2019
50f5343
Touch up the "Starting the rebase" section, and add a "range-diff" one.
dscho Jun 4, 2019
fd7e5b0
minor typos/grammar (eg missing word: `be`)
SherylHohman Jul 23, 2019
1c80776
link to the anchor mentioned
SherylHohman Jul 23, 2019
0f2f5c9
Add a section on directory junctions
drizzd Jul 25, 2019
39c92f4
tyty
leandrovitor Aug 8, 2019
cfc5eea
Destroyed pagina (asciidoc)
dscho Aug 8, 2019
dad621a
Replaced link to version-specific raw version of document with link t…
assarbad Aug 27, 2019
8247c1b
Improve opening paragraph
inspector71 Sep 9, 2019
969aae5
Rephrase the sentence about versions that fixed bugs, to avoid confus…
dscho Sep 13, 2019
639d64e
Created Install or update inside Msys2, Cygwin or Git-for-windows its…
sinloss Nov 6, 2019
079969d
Updated Install or update inside Msys2, Cygwin or Git for windows its…
sinloss Nov 6, 2019
4742b1a
Updated Install or update inside Msys2, Cygwin or Git for windows its…
sinloss Nov 6, 2019
e82b64f
added new page index
PhilipOakley Nov 6, 2019
5a632e7
Use MSYS2 instead of Msys2
dscho Nov 6, 2019
bd1a763
Updated Install or update inside MSYS2, Cygwin or Git for windows its…
sinloss Nov 8, 2019
14ec52e
Fix factual mistakes, explain more some bits
elieux Nov 9, 2019
f9f05a9
Fix typo
elieux Nov 9, 2019
b222d3c
Fix capitalization
elieux Nov 9, 2019
4a1e09b
Fix idiom
elieux Nov 10, 2019
e86130b
Updated Install or update inside MSYS2, Cygwin or Git for windows its…
sinloss Nov 11, 2019
9ee359a
Use proper names, especially "Git for Windows"
elieux Nov 11, 2019
bc85d2d
Fix formatting
elieux Nov 11, 2019
0bd3d10
Rename a document so that it can be checked out on Windows
dscho Nov 29, 2019
3b9d0ac
As pointed out by @Osse, this use case is not supported by Git for Wi…
dscho Dec 3, 2019
4de6958
Initial draft for testing
PhilipOakley Dec 3, 2019
d816d5f
tweaks
PhilipOakley Dec 3, 2019
6735973
added extra page
PhilipOakley Dec 3, 2019
c124a2c
added Sourcetrail link
PhilipOakley Dec 3, 2019
83c2b5f
corrected c99 and corrected some of sequence
PhilipOakley Dec 3, 2019
b79c426
Recommend updating to v2.24.1(2)
dscho Dec 10, 2019
2edf0bd
FIX: Substitutes an idiomatic positive emphasis, rather than a contra…
BR-Nicholas-Prado Jan 13, 2020
6f8b453
Clarify first paragraph (pointed out by @elieux)
dscho Jan 29, 2020
1643bd5
Package management: Correct names
elieux Jan 29, 2020
0a68a03
Package management: Include bash in MSYS2 core upgrade instructions
elieux Jan 29, 2020
fc53b51
Package management: Fix MSYS2 wiki link
elieux Jan 29, 2020
e1ca8c0
Package management: Forget BinTray and manual package uploads
elieux Jan 29, 2020
e24a1f9
Add an introductory summary
dscho Jan 30, 2020
96bb563
Add some detail about the built-in commands and their `.exe` files
dscho Feb 23, 2020
c5b343a
Updated Updating your SDK (markdown)
PhilipOakley Mar 8, 2020
ffe90e6
Describe the `Cwd.dll` problem and workaround
dscho Mar 26, 2020
3c1c674
The latest vulnerabilities were fixed in v2.26.1
dscho Apr 15, 2020
1fa6b78
Fix formatting
elieux Apr 19, 2020
f437e15
Improve formatting and typography
elieux Apr 19, 2020
6f09d13
Fix typo
elieux Apr 19, 2020
1875221
Fix some little things
elieux Apr 19, 2020
fd4aace
Fix title
elieux Apr 19, 2020
2b5549a
Correct misconceptions
elieux Apr 19, 2020
342c2f9
Remove extraneous title
elieux Apr 19, 2020
f906bad
Recommend a MINGW shell for mingw-w64 packages
elieux Apr 20, 2020
aadcdeb
Updated Symbolic Links (markdown)
lubas569 Apr 28, 2020
e526747
use https
vszakats May 3, 2020
0e98afe
Expand and clarify the review of the updates when the batch file is run.
PhilipOakley May 12, 2020
6eb897b
extra notes on the .bat update process
PhilipOakley Jun 13, 2020
184f5f2
Updated Install inside MSYS2 proper (markdown)
suntong Jun 17, 2020
b358d13
Updated Install inside MSYS2 proper (markdown)
suntong Jun 17, 2020
cf67193
remove (this step may have to be repeated occasionally until https://…
suntong Jun 17, 2020
532d05b
Updated Install inside MSYS2 proper (markdown)
suntong Jun 17, 2020
b2f4a75
Use links referring to the default branch in a generic way
dscho Jun 17, 2020
999817d
Adjust for the currently-used main branch name
dscho Jun 17, 2020
40efc18
Replace pacboy commands with pacman
elieux Jun 19, 2020
b76ebd7
Changed `-Syu` to `-Syyu`; not sure if needed, but it one report sugg…
elieux Jun 21, 2020
ab6260a
Open a MINGW64 shell as a separate step
elieux Jun 21, 2020
a51f932
Change `-u` to `-uu` to enable downgrades
elieux Jun 21, 2020
7259685
Fix indentation of step 2
elieux Jun 21, 2020
4395438
Provide support for the installation steps
elieux Jun 21, 2020
89160be
At long last, taking some time to write all of this down
dscho Jun 30, 2020
1c3b090
Document Git for Windows' snapshots
dscho Jul 2, 2020
31525f7
Explain the role of the "Git wrapper"
dscho Jul 3, 2020
257aaab
Start documenting how Git for Windows' components are upgraded to new…
dscho Jul 6, 2020
95e1408
Document the main challenge with the `perl` package
dscho Jul 7, 2020
4a49184
Link the two new pages that go into further detail
dscho Jul 7, 2020
56a862f
Add the motivation for keeping Perl up to date
dscho Jul 7, 2020
c3ae3f1
Mention that the DLL file name has to be upgraded manually (don't ask…
dscho Jul 7, 2020
c975f2e
Explain how to deal with no-longer-applicable patches
dscho Jul 7, 2020
9f3b627
typo with link
derrickstolee Jul 7, 2020
59a2f28
Mention a work-around for broken git-add--interactive
elieux Sep 10, 2020
e118ff4
Updated Issue reporting guidelines (markdown)
Affaway Oct 14, 2020
71c4a99
add Building-new-package-versions
PhilipOakley Oct 19, 2020
5997f57
add exec()-semantics
PhilipOakley Oct 19, 2020
0bb5098
added Git-for-Windows' "snapshots"
PhilipOakley Oct 19, 2020
75c5030
added Technical-overview
PhilipOakley Oct 19, 2020
de84069
added The "Git-wrapper"
PhilipOakley Oct 19, 2020
47b7efd
added Upgrading the 'perl' component
PhilipOakley Oct 19, 2020
12b66f3
removed fork(), exec(), CreateProcess(): Windows vs Linux - Now simpl…
PhilipOakley Oct 19, 2020
714cb33
Mention that Git for Windows older than v2.29.2(2) is vulnerable (due…
dscho Nov 5, 2020
2aa80e2
Touch up the recent edits
dscho Nov 5, 2020
44e374d
Good commits: fix link to ablogaboutcode article
phil-blain Dec 3, 2020
34747f2
Mention that v2.29.2(3) also is one of those versions with critical s…
dscho Dec 8, 2020
39625d1
Describe Git for Windows' versioning scheme
dscho Dec 9, 2020
5b231f1
Rename the ``Git-for-Windows' "snapshots"´´ page
dscho Dec 18, 2020
9faaa4c
Rename the ``The "Git-wrapper"´´ page
dscho Dec 18, 2020
5714005
Releasing Git for Windows: explain how to integrate last-minute chang…
dscho Dec 19, 2020
ca955c8
Fix whitespace issues
dscho Dec 19, 2020
4c6aa47
Releasing Git for Windows: fix scriptlet
dscho Dec 19, 2020
c4cf775
Releasing Git for Windows: describe a convenient alias
dscho Dec 19, 2020
e650d70
How to recover from empty clone
danmoseley Dec 27, 2020
83ae4ef
Mention that 2.30.0(2) fixes a vulnerability
dscho Jan 14, 2021
6f34d18
192.168.1.2
VUTHANHTUNG512 Jan 19, 2021
3bdc09f
Destroyed https: www.example.com (rest)
rimrul Jan 28, 2021
47e94b9
Warn less strongly against using symlinks
dscho Feb 25, 2021
eae7324
in #7: git-extra doesn't seem to exist, probably git-extras was intended
xko Mar 3, 2021
0b80677
reverting previous edit, was based on wrong assumption. sorry..
xko Mar 3, 2021
b1b4bc3
Emacs Windows path should have forward slashes
dennisameling Mar 6, 2021
a06adc4
Updated FAQ (markdown)
Jokerok50 Mar 8, 2021
47ee459
v2.30.2 fixes CVE-2021-21300
dscho Mar 10, 2021
8a00e89
Updated Symbolic Links (markdown)
joblo2021 Mar 17, 2021
ac40418
'mail', like 'stuff' and 'traffic', doesn't get an 's' like countable…
bish0polis Mar 20, 2021
c2ece3c
Revert "'mail', like 'stuff' and 'traffic', doesn't get an 's' like c…
dscho Apr 8, 2021
1d282bf
Created _Sidebar (markdown)
DarkSnowBallz618 Apr 11, 2021
8edd79b
Updated introductory paragraph (1/2) to match the retirement of `vs/m…
PhilipOakley Apr 22, 2021
0cb55c7
Destroyed FAQ (markdown)
cc520743 Apr 23, 2021
26d9ae6
Created Domande frequenti (markdown)
ema367 Apr 29, 2021
331562d
Destroyed Domande frequenti (markdown)
ema367 Apr 29, 2021
c479b23
Destroyed _Sidebar (markdown)
rimrul Apr 30, 2021
ef07d88
Revert 8edd79bd30233ff21b7b783879f540d397bc1b67...0cb55c7bb422c0c42b8…
rimrul Apr 30, 2021
d909cdf
Updated _Footer (markdown)
NoLuvLost7687 Apr 30, 2021
010c5e6
Remove explicit mingw-w64-x86_64-curl installation, it's a dependency
elieux May 22, 2021
f5af33f
Streamline steps
elieux May 22, 2021
ec1aed1
Note that msys2-runtime can be kept
elieux May 22, 2021
0a7da4f
Run Git from outside the shells
elieux May 22, 2021
2ecf412
Explain downgraded packages better
elieux May 22, 2021
030ac2b
Let's talk about git-extra
elieux May 22, 2021
b503154
Updated Install inside MSYS2 proper (markdown)
elieux May 25, 2021
8d474ed
Add mention of the git-credential-manager package
Geoffrey-A Jun 18, 2021
8e48ccd
Add how to get `git help` work with man pages
Geoffrey-A Jun 18, 2021
dcf0577
Git Credential Manager for Windows is no longer being maintained. The…
okrc Jul 30, 2021
3f46361
Updated Building msys2 runtime (markdown)
TaleTN Aug 18, 2021
5aba120
Updated Building msys2 runtime (markdown)
TaleTN Aug 18, 2021
08ad440
add method to the update section
DavidBruchmann Aug 26, 2021
4449936
Updated Updating your SDK (markdown)
DavidBruchmann Aug 26, 2021
e2f09d8
Revert 5aba1208f2a900b5f539d3507df3d7a93a9475cb...4449936fb80b8ece0a0…
rimrul Aug 27, 2021
c6cf1ca
Destroyed FAQ (markdown)
Beltran1161 Aug 30, 2021
0574720
Revert e2f09d84c7e05bb849f37ea2b8c5e424d7afd9cc...c6cf1caed952197b505…
rimrul Sep 1, 2021
a0abaca
Created article. It provides a brief overview & explains how to confi…
Sophismata Oct 5, 2021
ca5efc0
Updated to provide more specific instructions and correct some wording.
Sophismata Oct 5, 2021
7d7be5f
Slight correction to wording
Sophismata Oct 5, 2021
c72a1ea
no more `git relink` since 9dec2c652f (Merge branch 'js/retire-relink…
carenas Oct 7, 2021
9922c53
Updated Install inside MSYS2 proper (markdown)
elieux Oct 16, 2021
88a05e2
Detail an 'in-place method for retaining existing git repos, while re…
PhilipOakley Nov 2, 2021
d7b265b
Update the MSYS2 documentation link.
BasixKOR Nov 4, 2021
7e5d974
Add back Git for Windows' take on Cygwin <-> MSYS2
dscho Nov 4, 2021
3352a84
Lead with the simplest way to build the installer
dscho Nov 17, 2021
3313feb
Destroyed MinGit (markdown)
elyan7946 Nov 18, 2021
6bc375d
Revert 3352a84f165cce69f8844327f85c7bbb97dc9dab...3313feb9f624aed52e0…
rimrul Nov 19, 2021
f78f47b
Updated Rebasing Git for Windows (markdown)
immki Nov 25, 2021
63110b9
Revert 6bc375d65c6983672ad577f16d309e20efe537f2...f78f47bf7d63af2da82…
rimrul Nov 25, 2021
1caccbe
We just switched from an Azure Pipeline synchronizing the git-sdk-* r…
dscho Dec 6, 2021
be134a6
Updated Install inside MSYS2 proper (markdown)
Dec 24, 2021
032d298
Put a letter uncapitalised
JoseDeFreitas Feb 4, 2022
450efb1
Updated Symbolic Links (markdown)
tobiasheilmannn Feb 12, 2022
1d98017
merge-conflicts: format "From the git List" links as a list
phil-blain Feb 14, 2022
3b61fe1
point mintty link to GitHub pages The link to mintty currently point…
dacodas Feb 17, 2022
a3b0396
Add info about `git update-git-for-windows` command
SamB Feb 18, 2022
d8d076c
Add a link
dscho Mar 15, 2022
37812b9
typo
dymil Mar 23, 2022
1b06a66
debugging-git: add note on Pygments for source code highlighting
phil-blain May 3, 2022
b639d70
Mention that Git for Windows v2.36.0 is required to stay safe, for now
dscho May 4, 2022
63a33b3
Updated File names, Branch names, Path quotation, Executable bit and …
PhilipOakley May 21, 2022
3b1c69b
I met an signature not trust error later without these patch. see htt…
shukebeta May 23, 2022
b2c3f2d
Updated Install inside MSYS2 proper (markdown)
shukebeta May 23, 2022
54a8ea9
Updated Install inside MSYS2 proper (markdown)
shukebeta May 23, 2022
ed71a04
Updated Install inside MSYS2 proper (markdown)
shukebeta May 23, 2022
60bd6dc
Releasing Git for Windows: We no longer use `git-sdk-*-extra-artifacts`
dscho Jun 17, 2022
86a41d5
Releasing Git for Windows: link to the "new git version" issue
dscho Jun 17, 2022
d892aa4
Releasing Git for Windows: note that Pacman takes a long time
dscho Jun 17, 2022
0454987
Releasing Git for Windows: we do push to `main` more quickly, nowadays
dscho Jun 17, 2022
6e16b01
There is not actually any "th" sound in "GitHub"
dscho Jul 12, 2022
d345460
Git for Windows v2.37.1 is the latest security bug fix release
dscho Jul 12, 2022
4c978c2
Updated FAQ (markdown)
rimrul Jul 27, 2022
e1ce019
Add a page explaining why Git for Windows does not work with Mandator…
dscho Jul 28, 2022
bbc5544
Rename the page to allow cloning on Windows (question marks are not p…
dscho Jul 28, 2022
13f3486
生的 责备
maiyazfc Aug 8, 2022
e97bfee
Revert "生的 责备"
dscho Aug 10, 2022
37363ba
Changes discussed in issue #4016
2bam Sep 21, 2022
cc4d914
Mention that Git for Windows v2.38.1 is required to stay safe, for now
dscho Oct 18, 2022
fbcfbf1
Document how to backport git.git patches
dscho Nov 14, 2022
2137746
Explain how to develop the installer's pages efficiently
dscho Nov 20, 2022
2ba8cbf
wiki: rename git-extra to mingw-w64-git-extra
dennisameling Dec 27, 2022
09742a6
Updated Home (markdown)
bakree25 Dec 29, 2022
8b48b28
Fix malformed repository links
ParkerM Jan 9, 2023
c3f0ffd
Mention that Git for Windows v2.39.1 is required to stay safe, for now
dscho Jan 23, 2023
c98e0d7
Replace `git-extra` with `mingw-w64-git-extra`
dscho Jan 24, 2023
7147a12
Updated FAQ (markdown)
derrickstolee Feb 14, 2023
849fba1
Merge remote-tracking branch 'origin/update-git-extra-docs'
dscho Feb 14, 2023
21bbbe4
Added more fat warnings.
DavyLandman Mar 14, 2023
f713029
Updated Install inside MSYS2 proper (markdown)
DavyLandman Mar 14, 2023
90f9837
Mention steps to fix DLL issues; merge all notes into one section as …
elieux Mar 15, 2023
6ad6704
Note that the guide should be read completely first
elieux Mar 15, 2023
6f5dd32
Add missing mingw64/
elieux Apr 3, 2023
61e96a4
Add recommendation to upgrade to security release v2.40.1
vdye Apr 25, 2023
af14829
file path limit consistent with https://github.com/git-for-windows/gi…
wangyoutian Jun 24, 2023
3caea0a
Make silent or unattended installation guide more comprehensive based…
Okeanos Oct 17, 2023
d45329e
Improve wording for saving options to file
Okeanos Oct 17, 2023
e65a12c
Code formatting added.
SetTrend Nov 3, 2023
f7b3363
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
a2a2e5b
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
e7ff259
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
62622ff
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
f81a44b
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
d736982
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
45170ba
Updated Silent or Unattended Installation (markdown)
SetTrend Nov 3, 2023
61d258c
Page created explaining the mapping between Git Installer GUI setting…
SetTrend Nov 3, 2023
dd0393e
Updated Mapping between Git Installer GUI Settings And Command Line A…
SetTrend Nov 3, 2023
c1e17b6
Updated Mapping between Git Installer GUI Settings And Command Line A…
SetTrend Nov 3, 2023
894b91a
Updated Mapping between Git Installer GUI Settings And Command Line A…
SetTrend Nov 3, 2023
fc7d946
Updated 0. Index (markdown)
SetTrend Nov 3, 2023
42388fa
Make 0.Index alphabetically sorted again
dscho Nov 3, 2023
f692f1c
Updated Mapping between Git Installer GUI Settings And Command Line A…
SetTrend Nov 6, 2023
aed1d9a
Add deprecation warning. It may help new people (like me) avoid looki…
domsleee Nov 11, 2023
0df6633
Redirect broken link to the correct one
Chand-ra Dec 16, 2023
5753fb6
Created Dibujante_de_autocad (markdown)
Multiservicios2023 Jan 10, 2024
e278ce4
Revert 0df663304bce986da6571cca48b34508d4823a11...5753fb6fab9899da20f…
rimrul Jan 11, 2024
e477c93
Fixed the link to getgit script
arisudesu Jan 15, 2024
0298fb6
Updated _Footer (markdown)
Chirriz Feb 1, 2024
3985d12
Revert ca955c8fd2837496fedc31d557ec0f983be99034...0298fb627f6054db3fd…
MarijnS95 Feb 1, 2024
9398d90
Adjust the documentation to how things are done now using the GitForW…
dscho Feb 10, 2024
8c33978
Whoops, forgot to adjust some parts the the new lay of the land.
dscho Feb 10, 2024
6ffc9b1
Bring the "Why, How, What" of the updates in continuity
goyalyashpal Feb 27, 2024
325fc9b
Destroyed FAQ (markdown)
SnoopdougyDoug May 11, 2024
38518ab
Revert 6ffc9b132e445d74bfeb9c286eacb2db1d94e81c...325fc9b01f16aac3fd3…
rimrul May 12, 2024
c30d2e4
Merge https://github.com/git-for-windows/git.wiki into Documentation/…
dscho May 12, 2024
b78c1dc
Remove the wiki footer
dscho May 12, 2024
3303759
Fix two incorrect links in the imported wiki
dscho May 12, 2024
4dff2ec
Change all links to the wiki
dscho May 12, 2024
22f4e6a
Mention the newest security bug-fix release
dscho May 15, 2024
43063ca
Merge branch https://github.com/git-for-windows/git.wiki
dscho May 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.md) 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.md).

## Building `git` on Windows with Visual Studio

Expand Down Expand Up @@ -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.md):

```
prove -j12 --state=failed,save ./t[0-9]*.sh
Expand Down
51 changes: 51 additions & 0 deletions Documentation/git-for-windows/0.-Index.md
Original file line number Diff line number Diff line change
@@ -0,0 +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/blob/HEAD/Documentation/git-for-windows/Home.md)
* [32 bit issues](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/32-bit-issues.md)
* [Adding regression tests](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Adding-regression-tests.md)
* [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.md)
* [Building Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-Git.md)
* [Building msys2 runtime](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-msys2-runtime.md)
* [Building new package versions](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Building-new-package-versions.md)
* [Compiling Git with Visual Studio](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Compiling-Git-with-Visual-Studio.md)
* [Contact](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Contact.md)
* [Continuous Integration (CI)](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Continuous-Integration-%28CI%29.md)
* [Debugging Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Debugging-Git.md)
* [Diagnosing performance issues](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Diagnosing-performance-issues.md)
* [exec() semantics](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Windows-vs-Linux-fork%28%29/exec%28%29-semantics.md)
* [FAQ](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/FAQ.md)
* [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.md)
* [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.md)
* [Git-for-Windows' "snapshots"](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Snapshot-builds.md)
* [Good commits](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Good-commits.md)
* [How to participate](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/How-to-participate.md)
* [Install inside MSYS2 proper](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Install-inside-MSYS2-proper.md)
* [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.md)
* [Issue reporting guidelines](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Issue-reporting-guidelines.md)
* [Making a portable Git](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Making-a-portable-Git.md)
* [Making an installer](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Making-an-installer.md)
* [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.md)
* [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.md)
* [MinGit is Git for Windows Applications](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/MinGit.md)
* [MSYS2 Notes](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/MSYS2-Notes.md)
* [OpenSSH Integration with Pageant](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/OpenSSH-Integration-with-Pageant.md)
* [Package management](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Package-management.md)
* [Performance profiling with Visual Studio](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Performance-profiling-with-Visual-Studio.md)
* [Rebasing Git for Windows](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Rebasing-Git-for-Windows.md)
* [Release Hashes](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Release-Hashes.md)
* [Running Git's regression tests](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Running-Git%27s-regression-tests.md)
* [Setting your Core.Editor (e.g. Notepad++)](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Setting-your-Core.Editor-%28e.g.-Notepad-Plus-Plus%29.md)
* [Silent or Unattended Installation](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Silent-or-Unattended-Installation.md)
* [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.md)
* [Symbolic Links](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Symbolic-Links.md)
* [Technical overview](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Technical-overview.md)
* [The "Git-wrapper"](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Git-wrapper.md)
* [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.md)
* [Updating your SDK](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Updating-your-SDK.md)
* [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.md)
* [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.md)
* [Vagrant](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Vagrant.md)
* [Visual Studio and MSVC compilation](https://github.com/git-for-windows/git/blob/HEAD/Documentation/git-for-windows/Visual-Studio-and-MSVC-compilation.md)
* [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.md)

-Fin-
87 changes: 87 additions & 0 deletions Documentation/git-for-windows/32-bit-issues.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# What is the problem with running Git for Windows in 32-bit mode?

Note that typically, there is no problem because the solution described [here](#adjusting-msys-20dlls-address-range-manually) is executed preventively upon installation of Git for Windows.

The problem only resurfaces if a `.dll` has been installed *after* Git for Windows' installation and only if that `.dll` [interferes with the address range hard-coded into the MSYS2 runtime](#background).

The simplest solution to fix that problem if it rears its ugly head at all is to switch to the 64-bit version of Git for Windows (the 64-bit address range is so large that MSYS2's runtime virtually never has any run-in with another `.dll`).

The second-simplest solution is to [reinstall Git for Windows](#reinstall-git-for-windows).

# Background

Git for Windows is not just a version of Git compiled and packaged for yet another Operating System. Many parts of Git are written in script languages (e.g. POSIX shell or Perl) and therefore Git for Windows has to bundle such script interpreters as well. In particular `bash.exe` (which is used by Git for Windows to execute POSIX shell scripts) expects a POSIX environment which is not available on Windows. The Git for Windows project uses [MSYS2](https://msys2.github.io/) (essentially a [portable](https://en.wikipedia.org/wiki/Portable_application) version of [Cygwin](https://cygwin.com/)) to provide the POSIX emulation layer.

## The problem with `fork()`

One of the most crucial POSIX calls expected by Bash is the `fork()` call. It starts a new process, inheriting the current process' memory contents, file descriptors and other resources. And it has no equivalent in the Win32 API (`fork()`'s closest Win32 relative is `CreateProcess()` which spawns a new process, inheriting nothing at all by default).

To make it possible to emulate `fork()`, Cygwin -- and therefore MSYS2 -- needs to make certain assumptions about its core ("runtime") library called `cygwin1.dll` -- or `msys-2.0.dll`. In particular, it needs to pin it to a known address range to detect in child processes that there is a parent process already, and to copy the relevant data from there.

That works very well. Until another `.dll` has been loaded into memory already, into a location that interferes with the hard-coded address range of the runtime. It is unfortunately not possible to catch that problem in a user-friendly way because there is no Win32 API call that can ask "has this address range been used by this and that `.dll`?".

## The symptom of an address range that needs adjusting

When there is already a `.dll` interfering with MSYS2's runtime's hard-coded address range, the user will be greeted by this error message when calling Bash :

```
> sh.exe
0 [main] sh.exe" 17588 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
865 [main] sh.exe" 17588 open_stackdumpfile: Dumping stack trace to sh.exe.stackdump
```

# Solutions

There are several ways how to get out of this problem:

## Upgrade to the 64-bit version of Git for Windows

The address range available in 64-bit Windows is so large as to virtually guarantee that the address range of the MSYS2 runtime never has to be adjusted. This is by far the easiest solution, now that Git for Windows 2.x offers a 64-bit version.

## Reinstall Git for Windows

If you cannot switch to 64-bit for any reason, reinstalling Git for Windows will typically fix the problem because it [adjusts the address range preemptively](#adjusting-msys-20dlls-address-range-manually).

## Adjusting `msys-2.0.dll`'s address range manually

To fix the problem of address range overlaps, MSYS2 offers a utility called `rebase.exe` (which confusingly has nothing at all to do with `git rebase`) to adjust the address range of a given set of `.dll` files.

Unfortunately the [symptom](#the-symptom-of-an-address-range-that-needs-adjusting) occurs not all that rarely, therefore there is even a script to make `rebase.exe` more convenient to use: `/usr/bin/rebaseall`. This script is meant to be executed via Dash instead of Bash, to avoid chicken-and-egg problems with Bash not being able to run properly unless the address range is already fixed. Typically it is unnecessary to run this script manually because it is run as part of Git for Windows' installation process. If the [symptom](#the-symptom-of-an-address-range-that-needs-adjusting) occurs at some stage long after Git for Windows was installed, reinstalling Git for Windows is the most convenient way to fix it.

If you still insist on fixing it manually, please understand that this is *not* recommended without knowledge of MSYS2 internals (read: if you get stuck, please do not open a ticket to learn more about MSYS2; use the recommended way instead: reinstall Git for Windows). The manual way goes like this:

1. close each and every `mintty` window
2. terminate each and every Bash
3. terminate even background processes that use the MSYS2 runtime, such as `ssh-agent`
4. open `cmd.exe`, change the directory to Git's top-level one and then run

```cmd
usr\bin\dash -c '/usr/bin/dash /usr/bin/rebaseall -p'
```

In the case that the MSYS2 runtime needs to be rebased, too, you will need to call something like this:

```cmd
copy usr\bin\msys-2.0.dll copy-msys-2.0.dll
usr\bin\rebase.exe -b 0x67000000 copy-msys-2.0.dll
copy copy-msys-2.0.dll usr\bin\msys-2.0.dll
usr\bin\dash.exe -c 'cd / && /usr/bin/dash.exe /usr/bin/rebaseall'
```

These commands need to be executed in the top-level directory, and the address (0x67000000) might need to be adjusted.

# What's with this `Cwd.dll` problem?

Under some circumstances, `/usr/bin/rebaseall` seems not to rebase the Perl `.dll` files "enough", and the symptom is something like this:

```
1 [main] perl 297 child_info_fork::abort: address space needed by 'Cwd.dll' (0x1D0000) is already occupied
```

A work-around that appears to help in most of those cases is to call

```sh
/usr/bin/rebase -b 0x63070000 /usr/lib/perl5/core_perl/auto/*/{*,*/*}.dll
```

Your mileage may vary: it might be necessary to play with the base address a bit.
44 changes: 44 additions & 0 deletions Documentation/git-for-windows/Adding-regression-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Git comes with an extensive regression test suite. It lives in the [`t/` subdirectory](https://github.com/git/git/tree/HEAD/t) of the source code repository and is organized into test scripts, e.g. `t8002-blame.sh`, which contain multiple test cases. The test scripts themselves are shell scripts.

The best documentation how to add tests is the test suite itself, by example.

# Adding test cases

You will want to add test cases either to demonstrate bugs, or to ensure that certain operations work as expected (e.g. when you just implemented such an operation or fixed a bug).

In the most common case, you will want to add your test case to an existing test script. Use the file name and `git grep`'s output as an indicator which script is the best one to which to add your test case.

Each test case is written in the form

```sh
test_expect_success 'title' '
# Here come the shell script statements
'
```

If you want to demonstrate a breakage, use `test_expect_failure` instead, and write the rest of the test case as if the bug was fixed, i.e. the way you want to see it succeed.

Inside the script part, you need to connect everything into an ‘&&’ chain, i.e.

```sh
test_commit this-will-write-a-file-and-commit &&
echo New file >new-file.txt &&
git status --porcelain --verbose --verbose >output &&
grep new-file.txt output
```

If you need to test anything Windows-specific, you can put `MINGW` before the case’s title, as a prerequisite. Likewise, you can use `!MINGW` to test only on non-Windows.

Every script creates a test repository with a test working tree in a new directory called `t/trash directory.<basename>`, e.g. `t/trash directory.t8002-blame/`.

Traditionally, the first “test case” is the setup, where you set up files and commits common to multiple test cases in the same script.

There are a bunch of really useful functions for use in test scripts, e.g. `test_commit`, which not only abbreviates the common “write a file, add it, commit it, tag the commit” stanza, but also increments the timestamp from a fixed first timestamp, so that the commits are reproducible (read: so you can reliably debug even if the bug depends on some side effect of some compression or some such). You will find a comprehensive list in [`t/README`](https://github.com/git/git/blob/HEAD/t/README) under the “Test harness library” heading.

There are also a bunch of useful test helpers in `t/helper/` (automatically added to the `PATH`) e.g. `test-chmtime`. If you need to test native functions, you can introduce a new test helper, or piggy-back onto an existing one.

As you will most likely add a test case to an existing script, you can use whatever the test repository’s current state is. To find out, just run the script with the `-d` option, which will leave the trash directory behind instead of removing it after a successful conclusion of the script: `cd t && sh t8002-blame.sh -d`.

In addition to `-d`, I found the options `-i` (stop upon first failing test case), `-x` (show the tests’ commands before they are executed) and `-v` (show the entire output instead of suppressing it) useful.

If you want to use `-x`, it is best to run through bash instead of sh, as some tests require a bash feature where the trace is printed to a different file descriptor than stderr, although in Git for Windows’ SDK, sh still refers to bash, so it is the same.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
If you want your passphrase to be 'remembered' for a session (or configurable timeout period) you will need to setup an ssh-agent process to handle this key.

Recent versions of git for windows 2.x come with an ssh agent startup script and the installer also checks if an ssh agent is currently running and asks you to kill this process.

Run the ssh agent:

start-ssh-agent.cmd

This should work both in a `cmd` and `bash` shell and can be included in `~/.profile` or `~/.bashrc`.

The [GitHub instructions](https://help.github.com/articles/working-with-ssh-key-passphrases/#auto-launching-ssh-agent-on-msysgit) are still valid but not needed anymore.

## Manually

To launch, put in `~/.profile` or `~/.bashrc`:

```bash
# ssh-agent auto-launch (0 = agent running with key; 1 = w/o key; 2 = not run.)
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ $agent_run_state = 2 ]; then
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
elif [ $agent_run_state = 1 ]; then
ssh-add ~/.ssh/id_rsa
fi
```

To close on shell exit, put in `~/.bash_logout`:

```bash
ssh-agent -k
```
Loading
Loading