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

Rebase to v2.48.1 #725

Merged
merged 250 commits into from
Feb 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
250 commits
Select commit Hold shift + click to select a range
84ba3bb
survey: calculate more stats on refs
jeffhostetler Apr 29, 2024
132ad6a
sparse-index.c: fix use of index hashes in expand_index
vdye Sep 20, 2023
6309b70
t5300: confirm failure of git index-pack when non-idx suffix requested
jeffhostetler Aug 25, 2023
3bd3d96
survey: show some commits/trees/blobs histograms
jeffhostetler Apr 29, 2024
2c03380
t: remove advice from some tests
derrickstolee Jul 16, 2024
6a53749
t1092: add test for untracked files and directories
vdye Sep 20, 2023
2a08f0a
index-pack: disable rev-index if index file has non .idx suffix
jeffhostetler Aug 25, 2023
be2f825
trace2: prefetch value of GIT_TRACE2_DST_DEBUG at startup
jeffhostetler Jun 26, 2024
a6bdfa4
survey: add vector of largest objects for various scaling dimensions
jeffhostetler May 1, 2024
32189b9
survey: add pathname of blob or tree to large_item_vec
jeffhostetler May 15, 2024
9399a12
survey: add commit-oid to large_item detail
jeffhostetler May 15, 2024
c8be55d
survey: add commit name-rev lookup to each large_item
jeffhostetler May 20, 2024
f36fb84
survey: add --no-name-rev option
jeffhostetler Jun 4, 2024
5d11a62
survey: started TODO list at bottom of source file
jeffhostetler Jun 17, 2024
0c02488
survey: expanded TODO list at the bottom of the source file
jeffhostetler Jun 28, 2024
7758c74
survey: expanded TODO with more notes
jeffhostetler Jul 1, 2024
26214f4
Merge branch 'jh/experimental-survey'
dscho Jul 1, 2024
e537289
Merge branch 'backport-sparse-index-advice'
dscho Jul 17, 2024
ebc48c4
Fix `sparse-checkout set` crashes (#607)
vdye Sep 20, 2023
75a12c9
Fix rev index in 2.42.0 series (#600)
jeffhostetler Aug 29, 2023
2785521
reset --stdin: trim carriage return from the paths
Apr 5, 2017
8434111
trace2: prefetch value of GIT_TRACE2_DST_DEBUG at startup (#663)
dscho Jun 26, 2024
82a9afa
Identify microsoft/git via a distinct version suffix
dscho Apr 23, 2024
2d2d322
Add the experimental git survey command to analyze (large) local repo…
dscho Jul 2, 2024
9d182fd
gvfs: ensure that the version is based on a GVFS tag
dscho Apr 4, 2017
33a8988
gvfs: add a GVFS-specific header file
Jan 24, 2017
e781a50
gvfs: add the core.gvfs config setting
Jan 24, 2017
22583f7
gvfs: add the feature to skip writing the index' SHA-1
Jan 24, 2017
eca6d35
gvfs: add the feature that blobs may be missing
Jan 24, 2017
ad33b6a
gvfs: prevent files to be deleted outside the sparse checkout
May 18, 2016
dc7f44e
gvfs: optionally skip reachability checks/upload pack during fetch
May 30, 2016
d13ff90
gvfs: ensure all filters and EOL conversions are blocked
Jun 15, 2016
767a6ba
gvfs: allow "virtualizing" objects
Jan 10, 2017
bf15ebc
gvfs: add global command pre and post hook procs
May 24, 2016
f3b6bd1
t0400: verify that the hook is called correctly from a subdirectory
dscho Mar 16, 2017
506300a
Pass PID of git process to hooks.
alepauly Apr 10, 2017
b5e57ab
pre-command: always respect core.hooksPath
dscho Aug 7, 2017
aacfa5b
sparse-checkout: update files with a modify/delete conflict
Feb 22, 2017
51da332
sparse-checkout: avoid writing entries with the skip-worktree bit
Mar 1, 2017
5357567
Do not remove files outside the sparse-checkout
Apr 5, 2017
d0f04ac
Hydrate missing loose objects in check_and_freshen()
Mar 15, 2017
60e7946
send-pack: do not check for sha1 file when GVFS_MISSING_OK set
Nov 16, 2018
d5b9f91
sha1_file: when writing objects, skip the read_object_hook
dscho Sep 8, 2017
bf32c09
cache-tree: remove use of strbuf_addf in update_one
Jul 3, 2017
d66a1dc
gvfs: block unsupported commands when running in a GVFS repo
benpeart Dec 6, 2018
c918116
worktree: allow in Scalar repositories
derrickstolee Sep 30, 2022
b62a93d
gvfs: allow overriding core.gvfs
derrickstolee Apr 15, 2020
225a9aa
Add virtual file system settings and hook proc
benpeart Jan 11, 2018
4bde6ad
BRANCHES.md: Add explanation of branches and using forks
Jul 27, 2018
dafd0c9
virtualfilesystem: don't run the virtual file system hook if the inde…
benpeart Aug 1, 2018
6d18e4d
status: add status serialization mechanism
jeffhostetler Aug 22, 2017
c127664
virtualfilesystem: check if directory is included
Oct 9, 2018
049317d
Teach ahead-behind and serialized status to play nicely together
jamill Jan 10, 2018
caddbc7
backwards-compatibility: support the post-indexchanged hook
dscho May 28, 2019
dce73bd
status: serialize to path
jeffhostetler Feb 2, 2018
bd95866
gvfs: verify that the built-in FSMonitor is disabled
dscho Jun 18, 2021
d621a28
status: reject deserialize in V2 and conflicts
jeffhostetler Feb 7, 2018
e47db22
wt-status: add trace2 data for sparse-checkout percentage
jeffhostetler Jun 21, 2024
a55ed71
serialize-status: serialize global and repo-local exclude file metadata
jeffhostetler Jul 20, 2018
7ee6b9c
wt-status: add VFS hydration percentage to normal `git status` output
jeffhostetler Jun 24, 2024
602ba37
status: deserialization wait
jeffhostetler Jul 25, 2018
4d09641
merge-recursive: avoid confusing logic in was_dirty()
dscho May 21, 2019
d1af813
merge-recursive: add some defensive coding to was_dirty()
dscho May 21, 2019
6ca188e
merge-recursive: teach was_dirty() about the virtualfilesystem
dscho May 21, 2019
e4da5b0
status: deserialize with -uno does not print correct hint
jeffhostetler Jun 25, 2019
39943b3
fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate
kewillford Nov 21, 2019
5398a74
fsmonitor: add script for debugging and update script for tests
kewillford Nov 21, 2019
3e1eb2b
status: disable deserialize when verbose output requested.
jeffhostetler Apr 11, 2020
207b578
gvfs:trace2:data: add trace2 tracing around read_object_process
jeffhostetler Sep 26, 2018
05b0721
t7524: add test for verbose status deserialzation
jeffhostetler Apr 11, 2020
6ce1dc2
gvfs:trace2:data: status deserialization information
jeffhostetler Sep 26, 2018
665e1b4
deserialize-status: silently fallback if we cannot read cache file
jeffhostetler May 13, 2020
875d110
gvfs:trace2:data: status serialization
jeffhostetler Jan 7, 2019
450ff3e
gvfs:trace2:data: add vfs stats
jeffhostetler Nov 19, 2018
2854a6d
trace2: refactor setting process starting time
jeffhostetler Apr 15, 2019
1736ae9
trace2:gvfs:experiment: clear_ce_flags_1
jeffhostetler Apr 30, 2019
e425e7b
trace2:gvfs:experiment: report_tracking
jeffhostetler Apr 30, 2019
7e0b32f
trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache
jeffhostetler Jun 14, 2019
c5285f0
trace2:gvfs:experiment: read-cache: time read/write of cache-tree ext…
jeffhostetler Jul 9, 2019
0ed8665
trace2:gvfs:experiment: add region to apply_virtualfilesystem()
jeffhostetler Jul 16, 2019
b8fef43
trace2:gvfs:experiment: add region around unpack_trees()
jeffhostetler Jul 16, 2019
b31529b
trace2:gvfs:experiment: add region to cache_tree_fully_valid()
jeffhostetler Jul 16, 2019
aff9def
trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() …
jeffhostetler Jul 16, 2019
a5e0b36
trace2:gvfs:experiment: increase default event depth for unpack-tree …
jeffhostetler Jul 25, 2019
3ccceea
trace2:gvfs:experiment: add data for check_updates() in unpack_trees()
jeffhostetler Jul 25, 2019
2be5e4d
Trace2:gvfs:experiment: capture more 'tracking' details
jeffhostetler Jul 26, 2019
c50cb77
credential: set trace2_child_class for credential manager children
jeffhostetler Oct 3, 2019
dcf71fa
sub-process: do not borrow cmd pointer from caller
jeffhostetler Sep 18, 2019
166067a
sub-process: add subprocess_start_argv()
jeffhostetler Sep 18, 2019
2f3b474
sha1-file: add function to update existing loose object cache
jeffhostetler Sep 24, 2019
345431b
packfile: add install_packed_git_and_mru()
jeffhostetler Sep 25, 2019
0a0f5f0
index-pack: avoid immediate object fetch while parsing packfile
jeffhostetler Sep 24, 2019
317d0a7
gvfs-helper: create tool to fetch objects using the GVFS Protocol
jeffhostetler Aug 13, 2019
f046226
sha1-file: create shared-cache directory if it doesn't exist
jeffhostetler Oct 7, 2019
a90d8ca
gvfs-helper: better handling of network errors
jeffhostetler Oct 8, 2019
c3d896a
gvfs-helper-client: properly update loose cache with fetched OID
jeffhostetler Oct 8, 2019
55b1c71
gvfs-helper: V2 robust retry and throttling
jeffhostetler Oct 10, 2019
a22ab61
gvfs-helper: expose gvfs/objects GET and POST semantics
jeffhostetler Oct 21, 2019
7a54bac
gvfs-helper: dramatically reduce progress noise
derrickstolee Oct 24, 2019
50ca17c
gvfs-helper-client.h: define struct object_id
derrickstolee Nov 4, 2019
f394fd7
gvfs-helper: handle pack-file after single POST request
derrickstolee Nov 11, 2019
d3a0365
test-gvfs-prococol, t5799: tests for gvfs-helper
jeffhostetler Oct 25, 2019
2f81d39
gvfs-helper: move result-list construction into install functions
jeffhostetler Nov 13, 2019
ecb818e
gvfs-helper: add prefetch support
jeffhostetler Nov 11, 2019
21e7f37
t5799: add support for POST to return either a loose object or packfile
jeffhostetler Nov 13, 2019
1909ee1
gvfs-helper: add prefetch .keep file for last packfile
jeffhostetler Nov 26, 2019
d87f0c7
t5799: cleanup wc-l and grep-c lines
jeffhostetler Nov 13, 2019
e92cd75
gvfs-helper: do one read in my_copy_fd_len_tail()
derrickstolee Dec 16, 2019
45e6315
gvfs-helper: verify loose objects after write
derrickstolee Sep 18, 2020
afdd8ea
gvfs-helper: move content-type warning for prefetch packs
derrickstolee Dec 16, 2019
24a1c1d
t7599: create corrupt blob test
jeffhostetler Sep 18, 2020
41e4d0c
fetch: use gvfs-helper prefetch under config
derrickstolee Dec 17, 2019
9bb58b4
gvfs-helper: better support for concurrent packfile fetches
jeffhostetler Dec 18, 2019
c5a4a8f
remote-curl: do not call fetch-pack when using gvfs-helper
derrickstolee Feb 3, 2020
90b1c78
t5799: explicitly test gvfs-helper --fallback and --no-fallback
jeffhostetler Jun 28, 2024
8d2fdbb
fetch: reprepare packs before checking connectivity
derrickstolee Mar 12, 2020
d1efc18
gvfs-helper: add --max-retries to prefetch verb
jeffhostetler Apr 12, 2023
c70e49f
gvfs-helper: don't fallback with new config
derrickstolee Jun 27, 2024
7c8e98a
gvfs-helper: retry when creating temp files
derrickstolee Dec 26, 2019
8aa590a
t5799: add tests to detect corrupt pack/idx files in prefetch
jeffhostetler Apr 13, 2023
07e0f90
test-gvfs-protocol: add cache_http_503 to mayhem
jeffhostetler Jun 28, 2024
a0c0c62
sparse: avoid warnings about known cURL issues in gvfs-helper.c
derrickstolee Aug 3, 2021
e64962e
gvfs-helper: ignore .idx files in prefetch multi-part responses
jeffhostetler Apr 13, 2023
0598e5f
t5799: add unit tests for new `gvfs.fallback` config setting
jeffhostetler Jun 28, 2024
920d3f7
maintenance: care about gvfs.sharedCache config
derrickstolee Dec 15, 2020
b6749e0
unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags
neerajsi-msft2 Feb 6, 2021
716a315
release: create initial Windows installer build workflow
vdye Jul 16, 2021
43b4d91
help: special-case HOST_CPU `universal`
jeffhostetler Oct 17, 2023
7592c76
homebrew: add GitHub workflow to release Cask
mjcheetham Jul 24, 2020
34700f6
Disable the `monitor-components` workflow in msft-git
dscho May 13, 2022
a9af4ad
release: add Mac OSX installer build
vdye Jul 16, 2021
7e56c23
Adding winget workflows
Apr 29, 2021
bc62204
.github: enable windows builds on microsoft fork
derrickstolee Mar 8, 2023
f6400e6
release: build unsigned Ubuntu .deb package
vdye Jul 16, 2021
4ebc418
release: add signing step for .deb package
vdye Jul 16, 2021
1f99600
release: create draft GitHub release with packages & installers
vdye Jul 16, 2021
4e30bb0
dist: archive HEAD instead of HEAD^{tree}
vdye Dec 2, 2021
07f6052
build-git-installers: publish gpg public key
ldennington Oct 24, 2023
8a24a5f
release: include GIT_BUILT_FROM_COMMIT in MacOS build
vdye Dec 2, 2021
8c886c0
release: continue pestering until user upgrades
derrickstolee Oct 6, 2021
7363256
release: add installer validation
ldennington Aug 17, 2022
bea6180
update-microsoft-git: create barebones builtin
derrickstolee Apr 29, 2021
512dfbd
.github: update ISSUE_TEMPLATE.md for microsoft/git
derrickstolee Mar 16, 2022
c567faa
update-microsoft-git: Windows implementation
derrickstolee Apr 29, 2021
6a8250f
.github: update PULL_REQUEST_TEMPLATE.md
derrickstolee Mar 16, 2022
13f763c
update-microsoft-git: use brew on macOS
derrickstolee Apr 29, 2021
676c07e
Adjust README.md for microsoft/git
May 4, 2021
1526f65
git_config_set_multivar_in_file_gently(): add a lock timeout
dscho May 18, 2021
469b549
scalar: set the config write-lock timeout to 150ms
dscho May 18, 2021
4a81210
scalar: add docs from microsoft/scalar
derrickstolee Jun 16, 2021
55c0cef
Merge branch 'scalar-gentler-config-locking'
dscho May 19, 2021
6ec5a0d
Merge branch 'scalar-extra-docs'
dscho Nov 16, 2021
298b29b
scalar (Windows): use forward slashes as directory separators
dscho May 10, 2022
9ad768c
scalar: add retry logic to run_git()
derrickstolee Jun 17, 2021
4a09510
scalar: support the `config` command for backwards compatibility
dscho May 27, 2021
f20b0a4
Merge branch 'microsoft/vfs-2.35.0'
dscho Oct 7, 2021
5a5e189
scalar: implement a minimal JSON parser
dscho Apr 26, 2021
2e80737
scalar clone: support GVFS-enabled remote repositories
dscho Aug 24, 2021
49102f6
test-gvfs-protocol: also serve smart protocol
dscho Apr 16, 2021
1fa4f46
gvfs-helper: add the `endpoint` command
dscho Apr 26, 2021
a8a4485
dir_inside_of(): handle directory separators correctly
dscho May 14, 2021
0f4bc44
scalar: disable authentication in unattended mode
dscho May 6, 2021
c270115
scalar: do initialize `gvfs.sharedCache`
dscho May 3, 2021
b636dc0
scalar diagnose: include shared cache info
dscho Jun 1, 2021
91ffe1a
scalar: only try GVFS protocol on https:// URLs
dscho Apr 28, 2021
df4f0a6
scalar: verify that we can use a GVFS-enabled repository
dscho Apr 16, 2021
1db87ec
scalar: add the `cache-server` command
dscho Apr 23, 2021
63dfa6e
Merge branch 'scalar'
dscho Aug 24, 2021
380bb89
scalar: add a test toggle to skip accessing the vsts/info endpoint
dscho May 12, 2021
54783df
scalar: adjust documentation to the microsoft/git fork
dscho Jan 25, 2022
22e1322
scalar: enable untracked cache unconditionally
derrickstolee Jun 21, 2021
8116d20
scalar: parse `clone --no-fetch-commits-and-trees` for backwards comp…
dscho Aug 24, 2021
becf22c
scalar diagnose: accommodate Scalar's Functional Tests
dscho May 9, 2022
21fa0fd
scalar: make GVFS Protocol a forced choice
derrickstolee May 1, 2024
efd5b8f
ci: run Scalar's Functional Tests
dscho Jun 8, 2021
aae1e8f
scalar: upgrade to newest FSMonitor config setting
vdye Apr 5, 2022
93b7999
Merge branch 'scalar-with-gvfs'
dscho May 3, 2021
eb80bf4
Merge branch 'run-scalar-functional-tests'
dscho Nov 16, 2021
aa3fed6
abspath: make strip_last_path_component() global
derrickstolee Oct 4, 2022
19134cb
scalar: configure maintenance during 'reconfigure'
derrickstolee Aug 21, 2023
e4deb5b
Merge branch 'scalar-reconfigure'
dscho Jun 1, 2021
b47a29c
scalar: .scalarCache should live above enlistment
derrickstolee Sep 30, 2022
6b8f6c9
Merge branch 'scalar-and-non-interactive-authentication-in-maintenance'
dscho Jul 18, 2024
5f1b33c
Merge pull request #536: Allow --no-src during clones and git worktre…
dscho Oct 4, 2022
a133894
sparse-checkout: add config to disable deleting dirs
derrickstolee Aug 22, 2021
4250d6d
add/rm: allow adding sparse entries when virtual
derrickstolee Jun 29, 2021
f053ba3
diff: ignore sparse paths in diffstat
derrickstolee Jul 26, 2021
73b88a1
Merge pull request #392: add: allow adding sparse entries when virtual
derrickstolee Jul 1, 2021
6e6b8fc
repo-settings: enable sparse index by default
derrickstolee Jun 15, 2021
c44ea83
Merge pull request #410: Sparse Index: latest integrations
derrickstolee Aug 24, 2021
4081322
Merge pull request #414: Make sparse index the default
derrickstolee Aug 26, 2021
8fff938
diff(sparse-index): verify with partially-sparse
ldennington Sep 10, 2021
d6f8f4c
stash: expand testing for `git stash -u`
vdye Sep 22, 2021
22bca7b
Merge pull request #419 from ldennington/sparse-index-diff
ldennington Sep 12, 2021
1df7b6f
sequencer: avoid progress when stderr is redirected
derrickstolee Sep 23, 2021
2278619
Merge pull request #430 from vdye/sparse-index/clean
vdye Sep 23, 2021
4198780
Merge pull request #432: sequencer: avoid progress when stderr is red…
derrickstolee Sep 23, 2021
8b4a143
reset: fix mixed reset when using virtual filesystem
Mar 15, 2017
528521c
sparse: add vfs-specific precautions
derrickstolee Oct 31, 2021
15b2ab7
Merge pull request #494: reset: fix mixed reset when using virtual fi…
derrickstolee Apr 4, 2022
6259631
Merge core VFS features
dscho Jun 11, 2018
fbc2654
Merge advanced VFS-specific features
dscho Jun 11, 2018
58b90d9
Merge virtualfilesystem hook
dscho Jun 11, 2018
ff2be29
Merge updates to serialized status
dscho Jun 11, 2018
a25cba0
Merge trace2 experimental regions
jeffhostetler Apr 23, 2019
bcaafd5
Merge first wave of gvfs-helper feature
jeffhostetler Nov 14, 2019
9198c57
Merge gvfs-helper prefetch feature
derrickstolee Dec 17, 2019
e762b95
Harden gvfs-helper to validate the packfiles in a multipart prefetch …
jeffhostetler Apr 17, 2023
dc7e291
gvfs-helper: add gvfs.fallback and unit tests (#665)
dscho Jul 1, 2024
c186248
Merge pull request #301: Update 'git maintenance' to match upstream
derrickstolee Dec 15, 2020
942a819
Merge pull request #315: unpack-trees:virtualfilesystem: Improve effi…
derrickstolee Feb 16, 2021
8a6c649
Merge branch 'add-workflows'
derrickstolee Apr 30, 2021
7b9bec2
Merge branch 'adjust-g4w-workflows'
dscho May 13, 2022
070cffc
Merge pull request #399 from vdye/feature/build-installers
vdye Jul 29, 2021
4e29e60
Merge pull request #472 from vdye/ms/macos-build-options
vdye Dec 6, 2021
e338839
Merge pull request #329: Add `git update-microsoft-git`
derrickstolee Apr 30, 2021
59c47e1
Merge pull request #333: update microsoft/git README
derrickstolee May 17, 2021
6c4bdc1
Merge pull request #371 from dscho/run-scalar-functional-tests-and-fi…
dscho Jun 9, 2021
1991d52
sparse-index: add ensure_full_index_with_reason()
derrickstolee Sep 30, 2024
8f6e9ca
Merge branch 'sparse-index-stuff'
dscho Jun 17, 2022
7a919dc
treewide: add reasons for expanding index
derrickstolee Sep 30, 2024
74f0e1c
treewide: custom reasons for expanding index
derrickstolee Sep 30, 2024
d89823c
sparse-index: add macro for unaudited expansions
derrickstolee Sep 30, 2024
82f663a
Docs: update sparse index plan with logging
derrickstolee Sep 30, 2024
d4f8e8c
stash: use -f in checkout-index child process
derrickstolee Sep 30, 2024
d86e967
sparse-index: log failure to clear skip-worktree
derrickstolee Sep 30, 2024
05dca1b
sparse-index: do not copy hashtables during expansion
derrickstolee Sep 27, 2024
9311bde
Sparse Index: log why the index is being expanded (#691)
dscho Oct 9, 2024
501634b
t5616: mark tests as bogus with --path-walk
derrickstolee Oct 22, 2024
2e31da5
path-walk: add new 'edge_aggressive' option
derrickstolee Oct 22, 2024
71e11fb
sub-process: avoid leaking `cmd`
dscho Dec 18, 2024
4a7f1dd
pack-objects: allow --shallow and --path-walk
derrickstolee Oct 22, 2024
78daa0b
remote-curl: release filter options before re-setting them
dscho Dec 18, 2024
19094f4
t5538: add test to confirm deltas in shallow pushes
derrickstolee Oct 22, 2024
51f47a6
Fix rare segfault in sparse-index (#690)
dscho Oct 9, 2024
4d43345
transport: release object filter options
dscho Dec 18, 2024
6eb3258
pack-objects: allow --path-walk with --shallow (#699)
dscho Oct 22, 2024
dea383c
Merge branch 'leak-fixes'
dscho Dec 18, 2024
9551455
mingw: special-case administrators even more
dscho Dec 6, 2024
be80005
test-tool path-utils: support debugging "dubious ownership" issues
dscho Dec 6, 2024
c775ce5
push: don't reuse deltas with path walk
derrickstolee Nov 16, 2024
39b94fd
mingw: special-case administrators even more (#712)
dscho Dec 19, 2024
134fb83
release-winget.yml: update command to include ARM installers
mjcheetham Jan 17, 2025
e67bc8e
pack-objects: don't reuse deltas with path walk (#707)
dscho Dec 19, 2024
63d80ba
t7900-maintenance.sh: reset config between tests
mjcheetham Jan 22, 2025
e4074b2
Fix WinGet release workflow to account for new installation matrix (#…
mjcheetham Jan 20, 2025
7c53544
maintenance: add cache-local-objects maintenance task
mjcheetham Jan 14, 2025
d0967a3
scalar.c: add cache-local-objects task
mjcheetham Jan 23, 2025
21e22b9
maintenance: add new `cache-local-objects` maintenance task (#720)
mjcheetham Jan 31, 2025
bda3f91
fixup! update-microsoft-git: create barebones builtin
dscho Feb 10, 2025
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
34 changes: 19 additions & 15 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
- [ ] I was not able to find an [open](https://github.com/git-for-windows/git/issues?q=is%3Aopen) or [closed](https://github.com/git-for-windows/git/issues?q=is%3Aclosed) issue matching what I'm seeing
- [ ] I was not able to find an [open](https://github.com/microsoft/git/issues?q=is%3Aopen)
or [closed](https://github.com/microsoft/git/issues?q=is%3Aclosed) issue matching
what I'm seeing, including in [the `git-for-windows/git` tracker](https://github.com/git-for-windows/git/issues).

### Setup

- Which version of Git for Windows are you using? Is it 32-bit or 64-bit?
- Which version of `microsoft/git` are you using? Is it 32-bit or 64-bit?

```
$ git --version --build-options

** insert your machine's response here **
```

- Which version of Windows are you running? Vista, 7, 8, 10? Is it 32-bit or 64-bit?
Are you using Scalar or VFS for Git?

** insert your answer here **

If VFS for Git, then what version?

```
$ cmd.exe /c ver
$ gvfs version

** insert your machine's response here **
```

- What options did you set as part of the installation? Or did you choose the
defaults?
- Which version of Windows are you running? Vista, 7, 8, 10? Is it 32-bit or 64-bit?

```
# One of the following:
> type "C:\Program Files\Git\etc\install-options.txt"
> type "C:\Program Files (x86)\Git\etc\install-options.txt"
> type "%USERPROFILE%\AppData\Local\Programs\Git\etc\install-options.txt"
> type "$env:USERPROFILE\AppData\Local\Programs\Git\etc\install-options.txt"
$ cat /etc/install-options.txt
$ cmd.exe /c ver

** insert your machine's response here **
```
Expand Down Expand Up @@ -58,7 +58,11 @@ $ cat /etc/install-options.txt

** insert here **

- If the problem was occurring with a specific repository, can you provide the
URL to that repository to help us with testing?
- If the problem was occurring with a specific repository, can you specify
the repository?

** insert URL here **
* [ ] Public repo: **insert URL here**
* [ ] Windows monorepo
* [ ] Office monorepo
* [ ] Other Microsoft-internal repo: **insert name here**
* [ ] Other internal repo.
28 changes: 8 additions & 20 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,10 @@
Thanks for taking the time to contribute to Git!

Those seeking to contribute to the Git for Windows fork should see
http://gitforwindows.org/#contribute on how to contribute Windows specific
enhancements.

If your contribution is for the core Git functions and documentation
please be aware that the Git community does not use the github.com issues
or pull request mechanism for their contributions.

Instead, we use the Git mailing list ([email protected]) for code and
documentation submissions, code reviews, and bug reports. The
mailing list is plain text only (anything with HTML is sent directly
to the spam folder).

Nevertheless, you can use GitGitGadget (https://gitgitgadget.github.io/)
to conveniently send your Pull Requests commits to our mailing list.

For a single-commit pull request, please *leave the pull request description
empty*: your commit message itself should describe your changes.

Please read the "guidelines for contributing" linked above!
This fork contains changes specific to monorepo scenarios. If you are an
external contributor, then please detail your reason for submitting to
this fork:

* [ ] This is an early version of work already under review upstream.
* [ ] This change only applies to interactions with Azure DevOps and the
GVFS Protocol.
* [ ] This change only applies to the virtualization hook and VFS for Git.
157 changes: 157 additions & 0 deletions .github/macos-installer/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
SHELL := /bin/bash
SUDO := sudo
C_INCLUDE_PATH := /usr/include
CPLUS_INCLUDE_PATH := /usr/include
LD_LIBRARY_PATH := /usr/lib

OSX_VERSION := $(shell sw_vers -productVersion)
TARGET_FLAGS := -mmacosx-version-min=$(OSX_VERSION) -DMACOSX_DEPLOYMENT_TARGET=$(OSX_VERSION)

uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')

ARCH_UNIV := universal
ARCH_FLAGS := -arch x86_64 -arch arm64

CFLAGS := $(TARGET_FLAGS) $(ARCH_FLAGS)
LDFLAGS := $(TARGET_FLAGS) $(ARCH_FLAGS)

PREFIX := /usr/local
GIT_PREFIX := $(PREFIX)/git

BUILD_DIR := $(GITHUB_WORKSPACE)/payload
DESTDIR := $(PWD)/stage/git-$(ARCH_UNIV)-$(VERSION)
ARTIFACTDIR := build-artifacts
SUBMAKE := $(MAKE) C_INCLUDE_PATH="$(C_INCLUDE_PATH)" CPLUS_INCLUDE_PATH="$(CPLUS_INCLUDE_PATH)" LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" TARGET_FLAGS="$(TARGET_FLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" NO_GETTEXT=1 NO_DARWIN_PORTS=1 prefix=$(GIT_PREFIX) GIT_BUILT_FROM_COMMIT="$(GIT_BUILT_FROM_COMMIT)" DESTDIR=$(DESTDIR)
CORES := $(shell bash -c "sysctl hw.ncpu | awk '{print \$$2}'")

# Guard against environment variables
APPLE_APP_IDENTITY =
APPLE_INSTALLER_IDENTITY =
APPLE_KEYCHAIN_PROFILE =

.PHONY: image pkg payload codesign notarize

.SECONDARY:

$(DESTDIR)$(GIT_PREFIX)/VERSION-$(VERSION)-$(ARCH_UNIV):
rm -f $(BUILD_DIR)/git-$(VERSION)/osx-installed*
mkdir -p $(DESTDIR)$(GIT_PREFIX)
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-built-keychain:
cd $(BUILD_DIR)/git-$(VERSION)/contrib/credential/osxkeychain; $(SUBMAKE) CFLAGS="$(CFLAGS) -g -O2 -Wall"
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-built:
[ -d $(DESTDIR)$(GIT_PREFIX) ] && $(SUDO) rm -rf $(DESTDIR) || echo ok
cd $(BUILD_DIR)/git-$(VERSION); $(SUBMAKE) -j $(CORES) all strip
echo "================"
echo "Dumping Linkage"
cd $(BUILD_DIR)/git-$(VERSION); ./git version
echo "===="
cd $(BUILD_DIR)/git-$(VERSION); /usr/bin/otool -L ./git
echo "===="
cd $(BUILD_DIR)/git-$(VERSION); /usr/bin/otool -L ./git-http-fetch
echo "===="
cd $(BUILD_DIR)/git-$(VERSION); /usr/bin/otool -L ./git-http-push
echo "===="
cd $(BUILD_DIR)/git-$(VERSION); /usr/bin/otool -L ./git-remote-http
echo "===="
cd $(BUILD_DIR)/git-$(VERSION); /usr/bin/otool -L ./git-gvfs-helper
echo "================"
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-installed-bin: $(BUILD_DIR)/git-$(VERSION)/osx-built $(BUILD_DIR)/git-$(VERSION)/osx-built-keychain
cd $(BUILD_DIR)/git-$(VERSION); $(SUBMAKE) install
cp $(BUILD_DIR)/git-$(VERSION)/contrib/credential/osxkeychain/git-credential-osxkeychain $(DESTDIR)$(GIT_PREFIX)/bin/git-credential-osxkeychain
mkdir -p $(DESTDIR)$(GIT_PREFIX)/contrib/completion
cp $(BUILD_DIR)/git-$(VERSION)/contrib/completion/git-completion.bash $(DESTDIR)$(GIT_PREFIX)/contrib/completion/
cp $(BUILD_DIR)/git-$(VERSION)/contrib/completion/git-completion.zsh $(DESTDIR)$(GIT_PREFIX)/contrib/completion/
cp $(BUILD_DIR)/git-$(VERSION)/contrib/completion/git-prompt.sh $(DESTDIR)$(GIT_PREFIX)/contrib/completion/
# This is needed for Git-Gui, GitK
mkdir -p $(DESTDIR)$(GIT_PREFIX)/lib/perl5/site_perl
[ ! -f $(DESTDIR)$(GIT_PREFIX)/lib/perl5/site_perl/Error.pm ] && cp $(BUILD_DIR)/git-$(VERSION)/perl/private-Error.pm $(DESTDIR)$(GIT_PREFIX)/lib/perl5/site_perl/Error.pm || echo done
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-installed-man: $(BUILD_DIR)/git-$(VERSION)/osx-installed-bin
mkdir -p $(DESTDIR)$(GIT_PREFIX)/share/man
cp -R $(GITHUB_WORKSPACE)/manpages/ $(DESTDIR)$(GIT_PREFIX)/share/man
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-built-subtree:
cd $(BUILD_DIR)/git-$(VERSION)/contrib/subtree; $(SUBMAKE) XML_CATALOG_FILES="$(XML_CATALOG_FILES)" all git-subtree.1
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-installed-subtree: $(BUILD_DIR)/git-$(VERSION)/osx-built-subtree
mkdir -p $(DESTDIR)
cd $(BUILD_DIR)/git-$(VERSION)/contrib/subtree; $(SUBMAKE) XML_CATALOG_FILES="$(XML_CATALOG_FILES)" install install-man
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-installed-assets: $(BUILD_DIR)/git-$(VERSION)/osx-installed-bin
mkdir -p $(DESTDIR)$(GIT_PREFIX)/etc
cat assets/etc/gitconfig.osxkeychain >> $(DESTDIR)$(GIT_PREFIX)/etc/gitconfig
cp assets/uninstall.sh $(DESTDIR)$(GIT_PREFIX)/uninstall.sh
sh -c "echo .DS_Store >> $(DESTDIR)$(GIT_PREFIX)/share/git-core/templates/info/exclude"

symlinks:
mkdir -p $(ARTIFACTDIR)$(PREFIX)/bin
cd $(ARTIFACTDIR)$(PREFIX)/bin; find ../git/bin -type f -exec ln -sf {} \;
for man in man1 man3 man5 man7; do mkdir -p $(ARTIFACTDIR)$(PREFIX)/share/man/$$man; (cd $(ARTIFACTDIR)$(PREFIX)/share/man/$$man; ln -sf ../../../git/share/man/$$man/* ./); done
ruby ../scripts/symlink-git-hardlinks.rb $(ARTIFACTDIR)
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-installed: $(DESTDIR)$(GIT_PREFIX)/VERSION-$(VERSION)-$(ARCH_UNIV) $(BUILD_DIR)/git-$(VERSION)/osx-installed-man $(BUILD_DIR)/git-$(VERSION)/osx-installed-assets $(BUILD_DIR)/git-$(VERSION)/osx-installed-subtree
find $(DESTDIR)$(GIT_PREFIX) -type d -exec chmod ugo+rx {} \;
find $(DESTDIR)$(GIT_PREFIX) -type f -exec chmod ugo+r {} \;
touch $@

$(BUILD_DIR)/git-$(VERSION)/osx-built-assert-$(ARCH_UNIV): $(BUILD_DIR)/git-$(VERSION)/osx-built
File $(BUILD_DIR)/git-$(VERSION)/git
File $(BUILD_DIR)/git-$(VERSION)/contrib/credential/osxkeychain/git-credential-osxkeychain
touch $@

disk-image/VERSION-$(VERSION)-$(ARCH_UNIV):
rm -f disk-image/*.pkg disk-image/VERSION-* disk-image/.DS_Store
mkdir disk-image
touch "$@"

pkg_cmd := pkgbuild --identifier com.git.pkg --version $(VERSION) \
--root $(ARTIFACTDIR)$(PREFIX) --scripts assets/scripts \
--install-location $(PREFIX) --component-plist ./assets/git-components.plist

ifdef APPLE_INSTALLER_IDENTITY
pkg_cmd += --sign "$(APPLE_INSTALLER_IDENTITY)"
endif

pkg_cmd += disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg
disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg: disk-image/VERSION-$(VERSION)-$(ARCH_UNIV) symlinks
$(pkg_cmd)

git-%-$(ARCH_UNIV).dmg:
hdiutil create git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg -fs HFS+ -srcfolder disk-image -volname "Git $(VERSION) $(ARCH_UNIV)" -ov 2>&1 | tee err || { \
grep "Resource busy" err && \
sleep 5 && \
hdiutil create git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg -fs HFS+ -srcfolder disk-image -volname "Git $(VERSION) $(ARCH_UNIV)" -ov; }
hdiutil convert -format UDZO -o $@ git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg
rm -f git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg

payload: $(BUILD_DIR)/git-$(VERSION)/osx-installed $(BUILD_DIR)/git-$(VERSION)/osx-built-assert-$(ARCH_UNIV)

pkg: disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg

image: git-$(VERSION)-$(ARCH_UNIV).dmg

ifdef APPLE_APP_IDENTITY
codesign:
@$(CURDIR)/../scripts/codesign.sh --payload="build-artifacts/usr/local/git" \
--identity="$(APPLE_APP_IDENTITY)" \
--entitlements="$(CURDIR)/entitlements.xml"
endif

# Notarization can only happen if the package is fully signed
ifdef APPLE_KEYCHAIN_PROFILE
notarize:
@$(CURDIR)/../scripts/notarize.sh \
--package="disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg" \
--keychain-profile="$(APPLE_KEYCHAIN_PROFILE)"
endif
2 changes: 2 additions & 0 deletions .github/macos-installer/assets/etc/gitconfig.osxkeychain
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[credential]
helper = osxkeychain
18 changes: 18 additions & 0 deletions .github/macos-installer/assets/git-components.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>BundleHasStrictIdentifier</key>
<true/>
<key>BundleIsRelocatable</key>
<false/>
<key>BundleIsVersionChecked</key>
<true/>
<key>BundleOverwriteAction</key>
<string>upgrade</string>
<key>RootRelativeBundlePath</key>
<string>git/share/git-gui/lib/Git Gui.app</string>
</dict>
</array>
</plist>
62 changes: 62 additions & 0 deletions .github/macos-installer/assets/scripts/postinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#!/bin/bash
INSTALL_DST="$2"
SCALAR_C_CMD="$INSTALL_DST/git/bin/scalar"
SCALAR_DOTNET_CMD="/usr/local/scalar/scalar"
SCALAR_UNINSTALL_SCRIPT="/usr/local/scalar/uninstall_scalar.sh"

function cleanupScalar()
{
echo "checking whether Scalar was installed"
if [ ! -f "$SCALAR_C_CMD" ]; then
echo "Scalar not installed; exiting..."
return 0
fi
echo "Scalar is installed!"

echo "looking for Scalar.NET"
if [ ! -f "$SCALAR_DOTNET_CMD" ]; then
echo "Scalar.NET not found; exiting..."
return 0
fi
echo "Scalar.NET found!"

currentUser=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }')

# Re-register Scalar.NET repositories with the newly-installed Scalar
for repo in $($SCALAR_DOTNET_CMD list); do
(
PATH="$INSTALL_DST/git/bin:$PATH"
sudo -u "$currentUser" scalar register $repo || \
echo "warning: skipping re-registration of $repo"
)
done

# Uninstall Scalar.NET
echo "removing Scalar.NET"

# Add /usr/local/bin to path - default install location of Homebrew
PATH="/usr/local/bin:$PATH"
if (sudo -u "$currentUser" brew list --cask scalar); then
# Remove from Homebrew
sudo -u "$currentUser" brew remove --cask scalar || echo "warning: Scalar.NET uninstall via Homebrew completed with code $?"
echo "Scalar.NET uninstalled via Homebrew!"
elif (sudo -u "$currentUser" brew list --cask scalar-azrepos); then
sudo -u "$currentUser" brew remove --cask scalar-azrepos || echo "warning: Scalar.NET with GVFS uninstall via Homebrew completed with code $?"
echo "Scalar.NET with GVFS uninstalled via Homebrew!"
elif [ -f $SCALAR_UNINSTALL_SCRIPT ]; then
# If not installed with Homebrew, manually remove package
sudo -S sh $SCALAR_UNINSTALL_SCRIPT || echo "warning: Scalar.NET uninstall completed with code $?"
echo "Scalar.NET uninstalled!"
else
echo "warning: Scalar.NET uninstall script not found"
fi

# Re-create the Scalar symlink, in case it was removed by the Scalar.NET uninstall operation
mkdir -p $INSTALL_DST/bin
/bin/ln -Fs "$SCALAR_C_CMD" "$INSTALL_DST/bin/scalar"
}

# Run Scalar cleanup (will exit if not applicable)
cleanupScalar

exit 0
34 changes: 34 additions & 0 deletions .github/macos-installer/assets/uninstall.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash -e
if [ ! -r "/usr/local/git" ]; then
echo "Git doesn't appear to be installed via this installer. Aborting"
exit 1
fi

if [ "$1" != "--yes" ]; then
echo "This will uninstall git by removing /usr/local/git/, and symlinks"
printf "Type 'yes' if you are sure you wish to continue: "
read response
else
response="yes"
fi

if [ "$response" == "yes" ]; then
# remove all of the symlinks we've created
pkgutil --files com.git.pkg | grep bin | while read f; do
if [ -L /usr/local/$f ]; then
sudo rm /usr/local/$f
fi
done

# forget receipts.
pkgutil --packages | grep com.git.pkg | xargs -I {} sudo pkgutil --forget {}
echo "Uninstalled"

# The guts all go here.
sudo rm -rf /usr/local/git/
else
echo "Aborted"
exit 1
fi

exit 0
12 changes: 12 additions & 0 deletions .github/macos-installer/entitlements.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
Loading
Loading