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

[DO NOT MERGE] Rebase to v2.21.0 #122

Closed
wants to merge 151 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
a2de79d
reset --stdin: trim carriage return from the paths
Apr 5, 2017
15ae0ff
Merge 'gvfs-preamble' into HEAD
dscho Jun 11, 2018
8fb171b
gvfs: start by adding the -gvfs suffix to the version
sanoursa Jan 24, 2017
9fc99b0
gvfs: ensure that the version is based on a GVFS tag
dscho Apr 4, 2017
7e31020
gvfs: add a GVFS-specific header file
Jan 24, 2017
7305e38
gvfs: add the core.gvfs config setting
Jan 24, 2017
ee378e4
gvfs: add the feature to skip writing the index' SHA-1
Jan 24, 2017
dea3597
gvfs: add the feature that blobs may be missing
Jan 24, 2017
cd7014a
gvfs: prevent files to be deleted outside the sparse checkout
May 18, 2016
e439e6a
sparse-checkout: update files with a modify/delete conflict
Feb 22, 2017
9e94a98
sparse-checkout: avoid writing entries with the skip-worktree bit
Mar 1, 2017
5f8e102
fsck: use ERROR_MULTI_PACK_INDEX
derrickstolee Sep 24, 2018
e06eb8e
repack: refactor pack deletion for future use
derrickstolee Dec 17, 2018
13e95e6
Docs: rearrange subcommands for multi-pack-index
derrickstolee Dec 21, 2018
05443a5
multi-pack-index: prepare for 'expire' subcommand
derrickstolee Dec 5, 2018
c9772d2
midx: refactor permutation logic
derrickstolee Dec 5, 2018
6e59547
multi-pack-index: implement 'expire' verb
derrickstolee Dec 5, 2018
aeadfe8
multi-pack-index: prepare 'repack' subcommand
derrickstolee Dec 5, 2018
f295fe6
midx: implement midx_repack()
derrickstolee Dec 5, 2018
57a505d
midx: use more structured data for expire
derrickstolee Jan 4, 2019
0253f80
gvfs: optionally skip reachability checks/upload pack during fetch
May 30, 2016
94e5d2a
Fix reset when using the sparse-checkout feature.
Mar 15, 2017
551acd0
Do not remove files outside the sparse-checkout
Apr 5, 2017
ae101e7
gvfs: ensure all filters and EOL conversions are blocked
Jun 15, 2016
e85d1ba
Add a new run_hook_argv() function
dscho Nov 30, 2016
4445cbe
gvfs: allow "virtualizing" objects
Jan 10, 2017
fe1e47a
gvfs: add global command pre and post hook procs
May 24, 2016
df7ff8e
Hydrate missing loose objects in check_and_freshen()
Mar 15, 2017
1d229a9
Allow hooks to be run before setup_git_directory()
dscho Mar 6, 2017
502045b
Add support for read-object as a background process to retrieve missi…
Jul 18, 2017
a160dbd
gvfs: introduce pre/post command hooks
Jan 24, 2017
b9f19b3
sha1_file: when writing objects, skip the read_object_hook
dscho Sep 8, 2017
5e5e496
t0400: verify that the hook is called correctly from a subdirectory
dscho Mar 16, 2017
d079684
Merge 'read-object-hook' into HEAD
dscho Jun 11, 2018
05e24c6
Pass PID of git process to hooks.
alepauly Apr 10, 2017
43eaae4
pre-command: always respect core.hooksPath
dscho Aug 7, 2017
a7c99e1
Merge 'pre-post-command-hooks' into HEAD
dscho Jun 11, 2018
246f1e4
Merge 'sparse-checkout-fixes' into HEAD
dscho Jun 11, 2018
66bcffe
status: add status.aheadbehind setting
jeffhostetler Jan 9, 2018
4e6e83e
Teach ahead-behind and serialized status to play nicely together
jamill Jan 10, 2018
0d9c5fd
gvfs: refactor loading the core.gvfs config value
Apr 14, 2017
8a3d1e9
status: add warning when a/b calculation takes too long for long/norm…
jeffhostetler Jan 10, 2018
1cce3be
status: add status serialization mechanism
jeffhostetler Aug 22, 2017
1ccd8b2
cache-tree: remove use of strbuf_addf in update_one
Jul 3, 2017
cbc1220
status: ignore status.aheadbehind in porcelain formats
jeffhostetler Feb 5, 2018
24456ab
Merge branch 'serialize_status_gvfs'
dscho Jun 11, 2018
6ebc4ee
status: serialize to path
jeffhostetler Feb 2, 2018
a49236d
fetch: Warn about forced updates after branch list
derrickstolee Feb 15, 2018
bbdfe60
status: reject deserialize in V2 and conflicts
jeffhostetler Feb 7, 2018
029499b
push: add --[no-]show-forced-updates passthrough to fetch
derrickstolee Feb 16, 2018
ec4b184
fetch: Add --[no-]show-forced-updates argument
derrickstolee Feb 1, 2018
a71932d
Merge branch 'ahead-behind-and-serialized-status'
dscho Jun 11, 2018
ee7dcf5
fetch: add documentation for --[no-]show-forced-updates
derrickstolee Feb 21, 2018
7d01a70
Add virtual file system settings and hook proc
benpeart Jan 11, 2018
059a364
Update the virtualfilesystem support
benpeart Jun 7, 2018
bd721de
virtualfilesystem: don't run the virtual file system hook if the inde…
benpeart Aug 1, 2018
555c129
virtualfilesystem: fix bug with symlinks being ignored
benpeart Sep 25, 2018
45dbfaf
virtualfilesystem: check if directory is included
Oct 9, 2018
3b1b6f8
Merge branch 'show-forced-updates'
dscho Jun 11, 2018
53c391e
vfs: fix case where directories not handled correctly
jamill Nov 20, 2018
5390d25
Merge 'forced-updates-after-branch-list'
dscho Jun 11, 2018
bb1c340
status: fix rename reporting when using serialization cache
jeffhostetler Jul 25, 2018
c2a3bef
commit: add generation to pop_most_recent_commit()
derrickstolee Jun 13, 2018
8b6f500
Merge 'virtual-file-system-support'
dscho Jun 11, 2018
a0d2929
status: add comments for ahead_behind_flags in serialization
jeffhostetler Jul 25, 2018
2885646
Merge 'gvfs/ds/generation-numbers-update'
dscho Jun 11, 2018
8ba1998
Merge pull request #6 from jeffhostetler/gvfs-serialize-status-rename
jeffhostetler Jul 26, 2018
8f5767f
serialize-status: serialize global and repo-local exclude file metadata
jeffhostetler Jul 20, 2018
00c5b93
status: deserialization wait
jeffhostetler Jul 25, 2018
328a16e
Merge pull request #1 from jeffhostetler/gvfs-serialize-exclude
jeffhostetler Jul 27, 2018
23af81f
rebase/stash: make post-command hook work again
dscho Oct 12, 2018
c99f315
Merge pull request #7 from jeffhostetler/gvfs-status-serialize-wait
jeffhostetler Jul 31, 2018
3a18fee
read-cache: add post-indexchanged hook
benpeart Mar 16, 2018
44727d0
Merge pull request #36 Avoid `sane_execvp` in `git rebase` and `git s…
derrickstolee Oct 12, 2018
827aafc
read-cache: post-indexchanged hook add skip-worktree bit changing sup…
benpeart Mar 19, 2018
472cd84
send-pack: do not check for sha1 file when GVFS_MISSING_OK set
Nov 16, 2018
520a846
Merge pull request #24 Match multi-pack-index feature from upstream
dscho Oct 18, 2018
7b5e9a5
read-cache: add test for post-indexchanged hook
benpeart Mar 19, 2018
1ac2982
Add documentation for the post-indexchanged hook
Oct 30, 2018
50ede04
Merge pull request #68 send-pack do not check for sha1 file when GVFS…
Nov 27, 2018
24037e0
update the reset --quiet path codepath to pass the correct flags to t…
benpeart Dec 12, 2018
343e1d4
Merge pull request #64 Index changed hook
Nov 29, 2018
424b79e
gvfs: block unsupported commands when running in a GVFS repo
benpeart Dec 6, 2018
ea8025e
Merge pull request #93 from benpeart/reset-quiet-post-indexchanged
benpeart Dec 13, 2018
623bd7f
BRANCHES.md: Add explanation of branches and using forks
Jul 27, 2018
aab0bcb
Merge pull request #91 from benpeart/block-commands
benpeart Dec 13, 2018
712f212
Merge pull request #98 Add explanation of branches and using forks
Dec 19, 2018
e758b5f
Merge pull request #84 Create 'expire' and 'repack' subcommands for m…
derrickstolee Dec 21, 2018
79546de
Merge pull request #107 use more structured data for midx expire
derrickstolee Jan 4, 2019
22c3634
MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
csware Apr 8, 2019
4db5c20
trace2: Documentation/technical/api-trace2.txt
jeffhostetler Feb 22, 2019
336f65a
trace2: create new combined trace facility
jeffhostetler Feb 22, 2019
f958588
trace2: collect Windows-specific process information
jeffhostetler Feb 22, 2019
8fab568
trace2:data: add trace2 regions to wt-status
jeffhostetler Feb 22, 2019
0de615f
trace2:data: add editor/pager child classification
jeffhostetler Feb 22, 2019
4364e93
trace2:data: add trace2 sub-process classification
jeffhostetler Feb 22, 2019
7734fde
trace2:data: add trace2 transport child classification
jeffhostetler Feb 22, 2019
bcccfb4
trace2:data: add trace2 hook classification
jeffhostetler Feb 22, 2019
2f8b46c
trace2:data: add trace2 instrumentation to index read/write
jeffhostetler Feb 22, 2019
89b487b
trace2:data: pack-objects: add trace2 regions
derrickstolee Feb 22, 2019
5295014
trace2:data: add subverb to checkout command
jeffhostetler Feb 22, 2019
292f3ee
trace2:data: add subverb to reset command
jeffhostetler Feb 22, 2019
facf05f
trace2:data: add subverb for rebase
jeffhostetler Feb 22, 2019
a57e33c
trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
jeffhostetler Feb 22, 2019
0b8734b
trace2: add for_each macros to clang-format
jeffhostetler Feb 22, 2019
945c03d
Merge branch 'jh-vfs-trace2-p1' into jh-221
jeffhostetler Apr 23, 2019
f2550e3
DROPME: trace2:status: use the_repository rather than s->repo
jeffhostetler Jan 31, 2019
6335cd2
gvfs:trace2:data: add trace2 tracing around read_object_process
jeffhostetler Sep 26, 2018
5ec3e0c
gvfs:trace2:data: status deserialization information
jeffhostetler Sep 26, 2018
14fe80f
gvfs:trace2:data: status serialization
jeffhostetler Jan 7, 2019
92c6ace
gvfs:trace2:data: add vfs stats
jeffhostetler Nov 19, 2018
96f644f
progress: add sparse mode to force 100% complete message
jeffhostetler Mar 21, 2019
c2ce574
trace2:data: add trace2 data to midx
jeffhostetler Mar 21, 2019
7b95007
midx: add progress indicators in multi-pack-index verify
jeffhostetler Mar 21, 2019
e953496
midx: during verify group objects by packfile to speed verification
jeffhostetler Mar 21, 2019
964c2e1
Merge branch 'jh-vfs-trace2-p1-vfs' into jh-221
jeffhostetler Apr 23, 2019
07fe56e
Merge branch 'jh-vfs-midx-verify-too-many-packs' into jh-221
jeffhostetler Apr 23, 2019
d15ed93
config: initialize opts structure in repo_read_config()
jeffhostetler Apr 15, 2019
a0025c9
trace2: refactor setting process starting time
jeffhostetler Apr 15, 2019
5fce9cc
trace2: add absolute elapsed time to start event
jeffhostetler Apr 15, 2019
e34dcf6
trace2: find exec-dir before trace2 initialization
jeffhostetler Apr 15, 2019
999a778
config: add read_very_early_config()
jeffhostetler Apr 15, 2019
498f28b
trace2: use system/global config for default trace2 settings
jeffhostetler Apr 15, 2019
cc88dab
trace2: report peak memory usage of the process
jeffhostetler Apr 15, 2019
a5ba2b9
trace2: clarify UTC datetime formatting
jeffhostetler Apr 15, 2019
c673002
trace2: make SIDs more unique
jeffhostetler Apr 15, 2019
43e2756
trace2: update docs to describe system/global config settings
jeffhostetler Apr 15, 2019
0ae60e8
Merge branch 'jh-vfs-trace2-sid-fix' into jh-221
jeffhostetler Apr 23, 2019
1393cf5
mingw: allow building with an MSYS2 runtime v3.x
dscho Mar 8, 2019
b95ef9d
macOS: make sure that gettext is found
dscho Apr 14, 2019
97ee5fc
t9822: skip tests if file names cannot be ISO-8859-1 encoded
dscho Apr 14, 2019
b897cba
Merge branch 'js/macos-gettext-build'
dscho Apr 24, 2019
d16e36e
Merge branch 'js/iso8895-test-on-apfs'
dscho Apr 24, 2019
6c00e6b
Merge branch 'ss/msvc-path-utils-fix'
dscho Apr 26, 2019
253ca76
trace2:gvfs:experiment: clear_ce_flags_1
jeffhostetler Apr 30, 2019
51804fb
trace2:gvfs:experiment: prime_cache_tree
jeffhostetler Apr 30, 2019
fa5a6dc
trace2:gvfs:experiment: traverse_trees
jeffhostetler Apr 30, 2019
cab7dad
trace2:gvfs:experiment: report_tracking
jeffhostetler Apr 30, 2019
e872b12
Merge pull request #133 from jeffhostetler/gvfs-trace2-checkout-exper…
jeffhostetler May 1, 2019
c569f4b
fetch: avoid calling write_or_die()
peff Mar 5, 2019
de15234
fetch: ignore SIGPIPE during network operation
peff Mar 3, 2019
5dff64c
Merge branch 'jk/no-sigpipe-during-network-transport'
dscho May 3, 2019
7f8e9de
t6500(mingw): use the Windows PID of the shell
dscho May 4, 2019
59a4efb
mingw: allow compiling with GCC 8 and DEVELOPER=1
dscho Mar 29, 2019
2e27281
kwset: allow building with GCC 8
dscho Mar 29, 2019
4ac9d43
fixup! mingw: kill child processes in a gentler way
dscho Apr 3, 2019
18b387b
Merge branch 'dscho/gcc-8-gfw'
dscho Apr 11, 2019
447d760
merge-recursive: avoid confusing logic in was_dirty()
dscho May 21, 2019
a4eec27
merge-recursive: add some defensive coding to was_dirty()
dscho May 21, 2019
61287c2
merge-recursive: teach was_dirty() about the virtualfilesystem
dscho May 21, 2019
f6d0b60
Merge branch 'virtualfilesystem-and-merge-recursive'
dscho May 21, 2019
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
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ Cpp11BracedListStyle: false

# A list of macros that should be interpreted as foreach loops instead of as
# function calls.
ForEachMacros: ['for_each_string_list_item']
ForEachMacros: ['for_each_string_list_item', 'for_each_wanted_builtin', 'for_each_builtin', 'for_each_ut']

# The maximum number of consecutive empty lines to keep.
MaxEmptyLinesToKeep: 1
Expand Down
53 changes: 53 additions & 0 deletions BRANCHES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
Branches used in this repo
==========================

The document explains the branching structure that we are using in the VFSForGit repository as well as the forking strategy that we have adopted for contributing.

Repo Branches
-------------

1. master

This will track the Git for Windows repository master branch

2. vfs

Would like to use this branch as an ever-green branch that continually rebases the VFSForGit changes onto a windows ever-green branch that is on the core/master, so that we can detect when the patches for VFSForGit have issues or if we have a new version patches sent upstream git we can regenerate this branch.

3. vs/master

This tracks with the Git for Windows repository vs/master branch and are the generated files for using a Visual Studio solution.

4. vfs-#

These branches are used to track the specific version that match Git for Windows with the VFSForGit specific patches on top. When a new version of Git for Windows is released, the VFSForGit patches will be rebased on that windows version and a new gvfs-# branch created to create pull requests against.

#### Examples

```
vfs-2.20.0
vfs-2.20.1
```

The versions of git for VFSForGit are based on the Git for Windows versions. v2.20.0.vfs.1 will correspond with the v2.20.0.windows.1 with the VFSForGit specific patches applied to the windows version.

Tags
----

We are using annotated tags to build the version number for git. The build will look back through the commit history to find the first tag matching `v[0-9]*vfs*` and build the git version number using that tag.

Forking
-------

A personal fork of this repository and a branch in that repository should be used for development.

These branches should be based on the latest vfs-# branch. If there are work in progress pull requests that you have based on a previous version branch when a new version branch is created, you will need to move your patches to the new branch to get them in that latest version.

#### Example

```
git clone <personal fork repo URL>
git remote add ms https://github.com/Microsoft/git.git
git checkout -b my-changes ms/vfs-2.20.0 --no-track
git push -fu origin HEAD
```
2 changes: 2 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,8 @@ include::config/submodule.txt[]

include::config/tag.txt[]

include::config/trace2.txt[]

include::config/transfer.txt[]

include::config/uploadarchive.txt[]
Expand Down
50 changes: 50 additions & 0 deletions Documentation/config/core.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ core.fsmonitor::
avoiding unnecessary processing of files that have not changed.
See the "fsmonitor-watchman" section of linkgit:githooks[5].

core.virtualFilesystem::
If set, the value of this variable is used as a command which
will identify all files and directories that are present in
the working directory. Git will only track and update files
listed in the virtual file system. Using the virtual file system
will supersede the sparse-checkout settings which will be ignored.
See the "virtual file system" section of linkgit:githooks[5].

core.trustctime::
If false, the ctime differences between the index and the
working tree are ignored; useful when the inode change time
Expand Down Expand Up @@ -603,6 +611,48 @@ core.multiPackIndex::
single index. See link:technical/multi-pack-index.html[the
multi-pack-index design document].

core.gvfs::
Enable the features needed for GVFS. This value can be set to true
to indicate all features should be turned on or the bit values listed
below can be used to turn on specific features.
+
--
GVFS_SKIP_SHA_ON_INDEX::
Bit value 1
Disables the calculation of the sha when writing the index
GVFS_MISSING_OK::
Bit value 4
Normally git write-tree ensures that the objects referenced by the
directory exist in the object database. This option disables this check.
GVFS_NO_DELETE_OUTSIDE_SPARSECHECKOUT::
Bit value 8
When marking entries to remove from the index and the working
directory this option will take into account what the
skip-worktree bit was set to so that if the entry has the
skip-worktree bit set it will not be removed from the working
directory. This will allow virtualized working directories to
detect the change to HEAD and use the new commit tree to show
the files that are in the working directory.
GVFS_FETCH_SKIP_REACHABILITY_AND_UPLOADPACK::
Bit value 16
While performing a fetch with a virtual file system we know
that there will be missing objects and we don't want to download
them just because of the reachability of the commits. We also
don't want to download a pack file with commits, trees, and blobs
since these will be downloaded on demand. This flag will skip the
checks on the reachability of objects during a fetch as well as
the upload pack so that extraneous objects don't get downloaded.
GVFS_BLOCK_FILTERS_AND_EOL_CONVERSIONS::
Bit value 64
With a virtual file system we only know the file size before any
CRLF or smudge/clean filters processing is done on the client.
To prevent file corruption due to truncation or expansion with
garbage at the end, these filters must not run when the file
is first accessed and brought down to the client. Git.exe can't
currently tell the first access vs subsequent accesses so this
flag just blocks them from occurring at all.
--

core.sparseCheckout::
Enable "sparse checkout" feature. See section "Sparse checkout" in
linkgit:git-read-tree[1] for more information.
Expand Down
27 changes: 27 additions & 0 deletions Documentation/config/status.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ status.branch::
Set to true to enable --branch by default in linkgit:git-status[1].
The option --no-branch takes precedence over this variable.

status.aheadBehind::
EXPERIMENTAL, Set to true to enable --ahead-behind and false to
enable --no-ahead-behind by default in linkgit:git-status[1] for
non-porcelain status formats. Defaults to true.

status.displayCommentPrefix::
If set to true, linkgit:git-status[1] will insert a comment
prefix before each output line (starting with
Expand Down Expand Up @@ -70,3 +75,25 @@ status.submoduleSummary::
the --ignore-submodules=dirty command-line option or the 'git
submodule summary' command, which shows a similar output but does
not honor these settings.

status.deserializePath::
EXPERIMENTAL, Pathname to a file containing cached status results
generated by `--serialize`. This will be overridden by
`--deserialize=<path>` on the command line. If the cache file is
invalid or stale, git will fall-back and compute status normally.

status.deserializeWait::
EXPERIMENTAL, Specifies what `git status --deserialize` should do
if the serialization cache file is stale and whether it should
fall-back and compute status normally. This will be overridden by
`--deserialize-wait=<value>` on the command line.
+
--
* `fail` - cause git to exit with an error when the status cache file
is stale; this is intended for testing and debugging.
* `block` - cause git to spin and periodically retry the cache file
every 100 ms; this is intended to help coordinate with another git
instance concurrently computing the cache file.
* `no` - to immediately fall-back if cache file is stale. This is the default.
* `<timeout>` - time (in tenths of a second) to spin and retry.
--
56 changes: 56 additions & 0 deletions Documentation/config/trace2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
Trace2 config settings are only read from the system and global
config files; repository local and worktree config files and `-c`
command line arguments are not respected.

trace2.normalTarget::
This variable controls the normal target destination.
It may be overridden by the `GIT_TR2` environment variable.
The following table shows possible values.

trace2.perfTarget::
This variable controls the performance target destination.
It may be overridden by the `GIT_TR2_PERF` environment variable.
The following table shows possible values.

trace2.eventTarget::
This variable controls the event target destination.
It may be overridden by the `GIT_TR2_EVENT` environment variable.
The following table shows possible values.
+
include::../trace2-target-values.txt[]

trace2.normalBrief::
Boolean. When true `time`, `filename`, and `line` fields are
omitted from normal output. May be overridden by the
`GIT_TR2_BRIEF` environment variable. Defaults to false.

trace2.perfBrief::
Boolean. When true `time`, `filename`, and `line` fields are
omitted from PERF output. May be overridden by the
`GIT_TR2_PERF_BRIEF` environment variable. Defaults to false.

trace2.eventBrief::
Boolean. When true `time`, `filename`, and `line` fields are
omitted from event output. May be overridden by the
`GIT_TR2_EVENT_BRIEF` environment variable. Defaults to false.

trace2.eventNesting::
Integer. Specifies desired depth of nested regions in the
event output. Regions deeper than this value will be
omitted. May be overridden by the `GIT_TR2_EVENT_NESTING`
environment variable. Defaults to 2.

trace2.configParams::
A comma-separated list of patterns of "important" config
settings that should be recorded in the trace2 output.
For example, `core.*,remote.*.url` would cause the trace2
output to contain events listing each configured remote.
May be overridden by the `GIT_TR2_CONFIG_PARAMS` environment
variable. Unset by default.

trace2.destinationDebug::
Boolean. When true Git will print error messages when a
trace target destination cannot be opened for writing.
By default, these errors are suppressed and tracing is
silently disabled. May be overridden by the
`GIT_TR2_DST_DEBUG` environment variable.
13 changes: 13 additions & 0 deletions Documentation/fetch-options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,19 @@ endif::git-pull[]
When multiple `--server-option=<option>` are given, they are all
sent to the other side in the order listed on the command line.

--show-forced-updates::
By default, git checks if a branch is force-updated during
fetch. This can be disabled through fetch.showForcedUpdates, but
the --show-forced-updates option guarantees this check occurs.
See linkgit:git-config[1].

--no-show-forced-updates::
By default, git checks if a branch is force-updated during
fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates
to false to skip this check for performance reasons. If used during
'git-pull' the --ff-only option will still check for forced updates
before attempting a fast-forward update. See linkgit:git-config[1].

-4::
--ipv4::
Use IPv4 addresses only, ignoring IPv6 addresses.
Expand Down
26 changes: 21 additions & 5 deletions Documentation/git-multi-pack-index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ git-multi-pack-index - Write and verify multi-pack-indexes
SYNOPSIS
--------
[verse]
'git multi-pack-index' [--object-dir=<dir>] <verb>
'git multi-pack-index' [--object-dir=<dir>] <subcommand>

DESCRIPTION
-----------
Expand All @@ -23,13 +23,29 @@ OPTIONS
`<dir>/packs/multi-pack-index` for the current MIDX file, and
`<dir>/packs` for the pack-files to index.

The following subcommands are available:

write::
When given as the verb, write a new MIDX file to
`<dir>/packs/multi-pack-index`.
Write a new MIDX file.

verify::
When given as the verb, verify the contents of the MIDX file
at `<dir>/packs/multi-pack-index`.
Verify the contents of the MIDX file.

expire::
Delete the pack-files that are tracked by the MIDX file, but
have no objects referenced by the MIDX. Rewrite the MIDX file
afterward to remove all references to these pack-files.

repack::
Collect a batch of pack-files whose size are all at most the
size given by --batch-size, but whose sizes sum to larger
than --batch-size. The batch is selected by greedily adding
small pack-files starting with the oldest pack-files that fit
the size. Create a new pack-file containing the objects the
multi-pack-index indexes into those pack-files, and rewrite
the multi-pack-index to contain that pack-file. A later run
of 'git multi-pack-index expire' will delete the pack-files
that were part of this batch.


EXAMPLES
Expand Down
35 changes: 35 additions & 0 deletions Documentation/git-status.txt
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,21 @@ ignored, then the directory is not shown, but all contents are shown.
update it afterwards if any changes were detected. Defaults to
`--lock-index`.

--serialize[=<path>]::
(EXPERIMENTAL) Serialize raw status results to a file or stdout
in a format suitable for use by `--deserialize`. If a path is
given, serialize data will be written to that path *and* normal
status output will be written to stdout. If path is omitted,
only binary serialization data will be written to stdout.

--deserialize[=<path>]::
(EXPERIMENTAL) Deserialize raw status results from a file or
stdin rather than scanning the worktree. If `<path>` is omitted
and `status.deserializePath` is unset, input is read from stdin.
--no-deserialize::
(EXPERIMENTAL) Disable implicit deserialization of status results
from the value of `status.deserializePath`.

<pathspec>...::
See the 'pathspec' entry in linkgit:gitglossary[7].

Expand Down Expand Up @@ -397,6 +412,26 @@ quoted as explained for the configuration variable `core.quotePath`
(see linkgit:git-config[1]).


SERIALIZATION and DESERIALIZATION (EXPERIMENTAL)
------------------------------------------------

The `--serialize` option allows git to cache the result of a
possibly time-consuming status scan to a binary file. A local
service/daemon watching file system events could use this to
periodically pre-compute a fresh status result.

Interactive users could then use `--deserialize` to simply
(and immediately) print the last-known-good result without
waiting for the status scan.

The binary serialization file format includes some worktree state
information allowing `--deserialize` to reject the cached data
and force a normal status scan if, for example, the commit, branch,
or status modes/options change. The format cannot, however, indicate
when the cached data is otherwise stale -- that coordination belongs
to the task driving the serializations.


CONFIGURATION
-------------

Expand Down
38 changes: 38 additions & 0 deletions Documentation/githooks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,44 @@ This hook is invoked by `git-p4 submit`. It takes no parameters and nothing
from standard input. Exiting with non-zero status from this script prevent
`git-p4 submit` from launching. Run `git-p4 submit --help` for details.

virtualFilesystem
~~~~~~~~~~~~~~~~~~

"Virtual File System" allows populating the working directory sparsely.
The projection data is typically automatically generated by an external
process. Git will limit what files it checks for changes as well as which
directories are checked for untracked files based on the path names given.
Git will also only update those files listed in the projection.

The hook is invoked when the configuration option core.virtualFilesystem
is set. It takes one argument, a version (currently 1).

The hook should output to stdout the list of all files in the working
directory that git should track. The paths are relative to the root
of the working directory and are separated by a single NUL. Full paths
('dir1/a.txt') as well as directories are supported (ie 'dir1/').

The exit status determines whether git will use the data from the
hook. On error, git will abort the command with an error message.

post-indexchanged
~~~~~~~~~~~~~~~~~

This hook is invoked when the index is written in read-cache.c
do_write_locked_index.

The first parameter passed to the hook is the indicator for the
working directory being updated. "1" meaning working directory
was updated or "0" when the working directory was not updated.

The second parameter passed to the hook is the indicator for whether
or not the index was updated and the skip-worktree bit could have
changed. "1" meaning skip-worktree bits could have been updated
and "0" meaning they were not.

Only one parameter should be set to "1" when the hook runs. The hook
running passing "1", "1" should not be possible.

GIT
---
Part of the linkgit:git[1] suite
Loading