Derrick Stolee [Wed, 12 Jun 2019 13:29:42 +0000 (06:29 -0700)]
commit-graph: extract fill_oids_from_commit_hex()
The write_commit_graph() method is too complex, so we are
extracting helper functions one by one.
Extract fill_oids_from_commit_hex() that reads the given commit
id list and fille the oid list in the context.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Wed, 12 Jun 2019 13:29:41 +0000 (06:29 -0700)]
commit-graph: extract fill_oids_from_packs()
The write_commit_graph() method is too complex, so we are
extracting helper functions one by one.
This extracts fill_oids_from_packs() that reads the given
pack-file list and fills the oid list in the context.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Wed, 12 Jun 2019 13:29:40 +0000 (06:29 -0700)]
commit-graph: create write_commit_graph_context
The write_commit_graph() method is too large and complex. To simplify
it, we should extract several helper functions. However, we will risk
repeating a lot of declarations related to progress incidators and
object id or commit lists.
Create a new write_commit_graph_context struct that contains the
core data structures used in this process. Replace the other local
variables with the values inside the context object. Following this
change, we will start to lift code segments wholesale out of the
write_commit_graph() method and into helper functions.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Wed, 12 Jun 2019 13:29:39 +0000 (06:29 -0700)]
commit-graph: remove Future Work section
The commit-graph feature began with a long list of planned
benefits, most of which are now complete. The future work
section has only a few items left.
As for making more algorithms aware of generation numbers,
some are only waiting for generation number v2 to ensure the
performance matches the existing behavior using commit date.
It is unlikely that we will ever send a commit-graph file
as part of the protocol, since we would need to verify the
data, and that is expensive. If we want to start trusting
remote content, then that item can be investigated again.
While there is more work to be done on the feature, having
a section of the docs devoted to a TODO list is wasteful and
hard to keep up-to-date.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Wed, 12 Jun 2019 13:29:38 +0000 (06:29 -0700)]
commit-graph: collapse parameters into flags
The write_commit_graph() and write_commit_graph_reachable() methods
currently take two boolean parameters: 'append' and 'report_progress'.
As we update these methods, adding more parameters this way becomes
cluttered and hard to maintain.
Collapse these parameters into a 'flags' parameter, and adjust the
callers to provide flags as necessary.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Wed, 12 Jun 2019 13:29:37 +0000 (06:29 -0700)]
commit-graph: return with errors during write
The write_commit_graph() method uses die() to report failure and
exit when confronted with an unexpected condition. This use of
die() in a library function is incorrect and is now replaced by
error() statements and an int return type. Return zero on success
and a negative value on failure.
Now that we use 'goto cleanup' to jump to the terminal condition
on an error, we have new paths that could lead to uninitialized
values. New initializers are added to correct for this.
The builtins 'commit-graph', 'gc', and 'commit' call these methods,
so update them to check the return value. Test that 'git commit-graph
write' returns a proper error code when hitting a failure condition
in write_commit_graph().
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Ævar Arnfjörð Bjarmason [Wed, 12 Jun 2019 14:29:41 +0000 (16:29 +0200)]
Revert "test-lib: whitelist GIT_TR2_* in the environment"
This reverts my commit
c1ee5796dc ("test-lib: whitelist GIT_TR2_* in
the environment", 2019-03-30), which is now redundant.
Since
e4b75d6a1d ("trace2: rename environment variables to
GIT_TRACE2*", 2019-05-19) the GIT_TRACE2* variables match the existing
GIT_TRACE* pattern added in
95a1d12e9b ("tests: scrub environment of
GIT_* variables", 2011-03-15), so we no longer need to list TR2 here.
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nguyễn Thái Ngọc Duy [Wed, 12 Jun 2019 08:56:06 +0000 (15:56 +0700)]
completion: do not cache if --git-completion-helper fails
"git <cmd> --git-completion-helper" could fail if the command checks for
a repo before parse_options(). If the result is cached, later on when
the user moves to a worktree with repo, tab completion will still fail.
Avoid this by detecting errors and not cache the completion output. We
can try again and hopefully succeed next time (e.g. when a repo is
found).
Of course if --git-completion-helper fails permanently because of other
reasons (*), this will slow down completion. But I don't see any better
option to handle that case.
(*) one of those cases is if __gitcomp_builtin is called on a command
that does not support --git-completion-helper. And we do have a
generic call
__git_complete_common "$command"
but this case is protected with __git_support_parseopt_helper so we're
good.
Reported-by: Felipe Contreras <redacted>
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jonathan Tan [Tue, 11 Jun 2019 21:06:47 +0000 (14:06 -0700)]
t5616: cover case of client having delta base
When fetching into a partial clone, Git first prefetches missing
REF_DELTA bases from the promisor remote. (This feature was introduced
in [1].) But as can be seen in a recent test coverage report [2], the
case in which a REF_DELTA base is already present is not covered by
tests.
Extend the tests slightly to cover this case.
[1]
8a30a1efd1 ("index-pack: prefetch missing REF_DELTA bases",
2019-05-15).
[2] https://public-inbox.org/git/
396091fc-5572-19a5-4f18-
61c258590dd5@gmail.com/
Signed-off-by: Jonathan Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jonathan Tan [Tue, 11 Jun 2019 21:06:46 +0000 (14:06 -0700)]
t5616: use correct flag to check object is missing
If we want to check whether an object is missing, the correct flag to
pass to rev-list is --ignore-missing; --exclude-promisor-objects will
exclude any object that came from the promisor remote, whether it is
present or missing. Use the correct flag.
Signed-off-by: Jonathan Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:29 +0000 (16:35 -0700)]
t5319-multi-pack-index.sh: test batch size zero
The 'git multi-pack-index repack' command can take a batch size of
zero, which creates a new pack-file containing all objects in the
multi-pack-index. The first 'repack' command will create one new
pack-file, and an 'expire' command after that will delete the old
pack-files, as they no longer contain any referenced objects in the
multi-pack-index.
We must remove the .keep file that was added in the previous test
in order to expire that pack-file.
Also test that a 'repack' will do nothing if there is only one
pack-file.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:28 +0000 (16:35 -0700)]
midx: add test that 'expire' respects .keep files
The 'git multi-pack-index expire' subcommand may delete packs that
are not needed from the perspective of the multi-pack-index. If
a pack has a .keep file, then we should not delete that pack. Add
a test that ensures we preserve a pack that would otherwise be
expired. First, create a new pack that contains every object in
the repo, then add it to the multi-pack-index. Then create a .keep
file for a pack starting with "a-pack" that was added in the
previous test. Finally, expire and verify that the pack remains
and the other packs were expired.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:27 +0000 (16:35 -0700)]
multi-pack-index: test expire while adding packs
During development of the multi-pack-index expire subcommand, a
version went out that improperly computed the pack order if a new
pack was introduced while other packs were being removed. Part of
the subtlety of the bug involved the new pack being placed before
other packs that already existed in the multi-pack-index.
Add a test to t5319-multi-pack-index.sh that catches this issue.
The test adds new packs that cause another pack to be expired, and
creates new packs that are lexicographically sorted before and
after the existing packs.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:27 +0000 (16:35 -0700)]
midx: implement midx_repack()
To repack with a non-zero batch-size, first sort all pack-files by
their modified time. Second, walk those pack-files from oldest
to newest, compute their expected size, and add the packs to a list
if they are smaller than the given batch-size. Stop when the total
expected size is at least the batch size.
If the batch size is zero, select all packs in the multi-pack-index.
Finally, collect the objects from the multi-pack-index that are in
the selected packs and send them to 'git pack-objects'. Write a new
multi-pack-index that includes the new pack.
Using a batch size of zero is very similar to a standard 'git repack'
command, except that we do not delete the old packs and instead rely
on the new multi-pack-index to prevent new processes from reading the
old packs. This does not disrupt other Git processes that are currently
reading the old packs based on the old multi-pack-index.
While first designing a 'git multi-pack-index repack' operation, I
started by collecting the batches based on the actual size of the
objects instead of the size of the pack-files. This allows repacking
a large pack-file that has very few referencd objects. However, this
came at a significant cost of parsing pack-files instead of simply
reading the multi-pack-index and getting the file information for
the pack-files. The "expected size" version provides similar
behavior, but could skip a pack-file if the average object size is
much larger than the actual size of the referenced objects, or
can create a large pack if the actual size of the referenced objects
is larger than the expected size.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:26 +0000 (16:35 -0700)]
multi-pack-index: prepare 'repack' subcommand
In an environment where the multi-pack-index is useful, it is due
to many pack-files and an inability to repack the object store
into a single pack-file. However, it is likely that many of these
pack-files are rather small, and could be repacked into a slightly
larger pack-file without too much effort. It may also be important
to ensure the object store is highly available and the repack
operation does not interrupt concurrent git commands.
Introduce a 'repack' subcommand to 'git multi-pack-index' that
takes a '--batch-size' option. The subcommand will inspect the
multi-pack-index for referenced pack-files whose size is smaller
than the batch size, until collecting a list of pack-files whose
sizes sum to larger than the batch size. Then, a new pack-file
will be created containing the objects from those pack-files that
are referenced by the multi-pack-index. The resulting pack is
likely to actually be smaller than the batch size due to
compression and the fact that there may be objects in the pack-
files that have duplicate copies in other pack-files.
The current change introduces the command-line arguments, and we
add a test that ensures we parse these options properly. Since
we specify a small batch size, we will guarantee that future
implementations do not change the list of pack-files.
In addition, we hard-code the modified times of the packs in
the pack directory to ensure the list of packs sorted by modified
time matches the order if sorted by size (ascending). This will
be important in a future test.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:25 +0000 (16:35 -0700)]
multi-pack-index: implement 'expire' subcommand
The 'git multi-pack-index expire' subcommand looks at the existing
mult-pack-index, counts the number of objects referenced in each
pack-file, deletes the pack-fils with no referenced objects, and
rewrites the multi-pack-index to no longer reference those packs.
Refactor the write_midx_file() method to call write_midx_internal()
which now takes an existing 'struct multi_pack_index' and a list
of pack-files to drop (as specified by the names of their pack-
indexes). As we write the new multi-pack-index, we drop those
file names from the list of known pack-files.
The expire_midx_packs() method removes the unreferenced pack-files
after carefully closing the packs to avoid open handles.
Test that a new pack-file that covers the contents of two other
pack-files leads to those pack-files being deleted during the
expire subcommand. Be sure to read the multi-pack-index to ensure
it no longer references those packs.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:24 +0000 (16:35 -0700)]
midx: refactor permutation logic and pack sorting
In anticipation of the expire subcommand, refactor the way we sort
the packfiles by name. This will greatly simplify our approach to
dropping expired packs from the list.
First, create 'struct pack_info' to replace 'struct pack_pair'.
This struct contains the necessary information about a pack,
including its name, a pointer to its packfile struct (if not
already in the multi-pack-index), and the original pack-int-id.
Second, track the pack information using an array of pack_info
structs in the pack_list struct. This simplifies the logic around
the multiple arrays we were tracking in that struct.
Finally, update get_sorted_entries() to not permute the pack-int-id
and instead supply the permutation to write_midx_object_offsets().
This requires sorting the packs after get_sorted_entries().
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:24 +0000 (16:35 -0700)]
midx: simplify computation of pack name lengths
Before writing the multi-pack-index, we compute the length of the
pack-index names concatenated together. This forms the data in the
pack name chunk, and we precompute it to compute chunk offsets.
The value is also modified to fit alignment needs.
Previously, this computation was coupled with adding packs from
the existing multi-pack-index and the remaining packs in the object
dir not already covered by the multi-pack-index.
In anticipation of this becoming more complicated with the 'expire'
subcommand, simplify the computation by centralizing it to a single
loop before writing the file.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:23 +0000 (16:35 -0700)]
multi-pack-index: prepare for 'expire' subcommand
The multi-pack-index tracks objects in a collection of pack-files.
Only one copy of each object is indexed, using the modified time
of the pack-files to determine tie-breakers. It is possible to
have a pack-file with no referenced objects because all objects
have a duplicate in a newer pack-file.
Introduce a new 'expire' subcommand to the multi-pack-index builtin.
This subcommand will delete these unused pack-files and rewrite the
multi-pack-index to no longer refer to those files. More details
about the specifics will follow as the method is implemented.
Add a test that verifies the 'expire' subcommand is correctly wired,
but will still be valid when the verb is implemented. Specifically,
create a set of packs that should all have referenced objects and
should not be removed during an 'expire' operation. The packs are
created carefully to ensure they have a specific order when sorted
by size. This will be important in a later test.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:22 +0000 (16:35 -0700)]
Docs: rearrange subcommands for multi-pack-index
We will add new subcommands to the multi-pack-index, and that will
make the documentation a bit messier. Clean up the 'verb'
descriptions by renaming the concept to 'subcommand' and removing
the reference to the object directory.
Helped-by: Stefan Beller <redacted>
Helped-by: Szeder Gábor <redacted>
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Derrick Stolee [Mon, 10 Jun 2019 23:35:22 +0000 (16:35 -0700)]
repack: refactor pack deletion for future use
The repack builtin deletes redundant pack-files and their
associated .idx, .promisor, .bitmap, and .keep files. We will want
to re-use this logic in the future for other types of repack, so
pull the logic into 'unlink_pack_path()' in packfile.c.
The 'ignore_keep' parameter is enabled for the use in repack, but
will be important for a future caller.
Signed-off-by: Derrick Stolee <redacted>
Signed-off-by: Junio C Hamano <redacted>
Johannes Sixt [Mon, 10 Jun 2019 08:58:58 +0000 (10:58 +0200)]
t7610-mergetool: do not place pipelines headed by `yes` in subshells
Subshells for pipelines are not required. This can save a number of
processes (if the shell does not optimize it away anyway).
The patch was generated with the command
sed -i 's/( *\(yes.*[^ ]\) *) *\&\&/\1 \&\&/' t7610-mergetool.sh
with a manual fixup of the case having no && at the end.
Signed-off-by: Johannes Sixt <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jiang Xin [Sat, 8 Jun 2019 07:54:29 +0000 (15:54 +0800)]
Merge branch 'master' of https://github.com/Softcatala/git-po
* 'master' of https://github.com/Softcatala/git-po:
l10n: Update Catalan translation
Jordi Mas [Sat, 8 Jun 2019 06:32:49 +0000 (08:32 +0200)]
l10n: Update Catalan translation
Signed-off-by: Jordi Mas <redacted>
Michael Osipov [Thu, 16 May 2019 09:34:12 +0000 (11:34 +0200)]
configure: Detect linking style for HP aCC on HP-UX
HP aCC does not accept any of the previously tested CC_LD_DYNPATH
formats, but only its own[1] "-Wl,+b" format. Add it to configure.ac.
1. http://nixdoc.net/man-pages/hp-ux/man1/ld_pa.1.html
Signed-off-by: Michael Osipov <redacted>
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 7 Jun 2019 16:39:21 +0000 (09:39 -0700)]
Git 2.22
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 7 Jun 2019 16:36:32 +0000 (09:36 -0700)]
Merge tag 'l10n-2.22.0-rnd3' of git://github.com/git-l10n/git-po
l10n-2.22.0-rnd3
* tag 'l10n-2.22.0-rnd3' of git://github.com/git-l10n/git-po: (25 commits)
l10n: fr.po: Review French translation
l10n: de.po: Update German translation
l10n: de.po: improve description of 'git reset --quiet'
l10n: TEAMS: Change German translation team leader
l10n: bg.po: Updated Bulgarian translation (4581t)
l10n: zh_CN: Revision for git v2.22.0 l10n
l10n: zh_CN: for git v2.22.0 l10n round 1~3
l10n: es: 2.22.0 round 3
l10n: it.po: Updated Italian translation
l10n: fr v2.22.0 rnd 3
l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3
l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
l10n: es: 2.22.0 round 2
l10n: bg.po: Updated Bulgarian translation (4580t)
l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
l10n: fr.po v2.22.0 round 2
l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
l10n: bg.po: Updated Bulgarian translation (4577t)
l10n: es: 2.22.0 round 1
l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1
...
Jiang Xin [Fri, 7 Jun 2019 08:51:09 +0000 (16:51 +0800)]
Merge branch 'fr_review' of git://github.com/jnavila/git
* 'fr_review' of git://github.com/jnavila/git:
l10n: fr.po: Review French translation
Jiang Xin [Fri, 7 Jun 2019 08:50:23 +0000 (16:50 +0800)]
Merge branch 'master' of git://github.com/alshopov/git-po
* 'master' of git://github.com/alshopov/git-po:
l10n: bg.po: Updated Bulgarian translation (4581t)
Cédric Malard [Wed, 5 Jun 2019 21:33:52 +0000 (23:33 +0200)]
l10n: fr.po: Review French translation
Signed-off-by: Cédric Malard <redacted>
Signed-off-by: Jean-Noel Avila <redacted>
Junio C Hamano [Thu, 6 Jun 2019 21:03:36 +0000 (14:03 -0700)]
Merge branch 'en/merge-directory-renames-fix'
Recent code restructuring of merge-recursive engine introduced a
regression dealing with rename/add conflict.
* en/merge-directory-renames-fix:
merge-recursive: restore accidentally dropped setting of path
Denton Liu [Wed, 5 Jun 2019 20:10:13 +0000 (16:10 -0400)]
config/alias.txt: document alias accepting non-command first word
One can see that an alias that begins with a non-command first word,
such as `loud-rebase = -c commit.verbose=true rebase`, is permitted.
However, this isn't immediately obvious to users as alias instances
typically begin with a command.
Document the fact that an alias can begin with a non-command first word
so that users will be able to discover that this is a feature.
Signed-off-by: Denton Liu <redacted>
Signed-off-by: Junio C Hamano <redacted>
Denton Liu [Wed, 5 Jun 2019 20:10:11 +0000 (16:10 -0400)]
config/alias.txt: change " and ' to `
Before, the documentation would mix " and ' for code and config
snippets. Change these instances to ` so that they are marked up in
monospace.
Signed-off-by: Denton Liu <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthias Rüster [Sat, 1 Jun 2019 12:32:49 +0000 (14:32 +0200)]
l10n: de.po: Update German translation
Reviewed-by: Ralf Thielow <redacted>
Signed-off-by: Matthias Rüster <redacted>
Ralf Thielow [Thu, 28 Feb 2019 18:25:51 +0000 (19:25 +0100)]
l10n: de.po: improve description of 'git reset --quiet'
Signed-off-by: Ralf Thielow <redacted>
Tigran Mkrtchyan [Wed, 5 Jun 2019 21:33:21 +0000 (23:33 +0200)]
tag: add tag.gpgSign config option to force all tags be GPG-signed
As many CI/CD tools don't allow to control command line options when
executing `git tag` command, a default value in the configuration file
will allow to enforce tag signing if required.
The new config-file option tag.gpgSign is added to define default behavior
of tag signings. To override default behavior the command line option -s,
--sign and --no-sign can be used:
$ git tag -m "commit message"
will generate a GPG signed tag if tag.gpgSign option is true, while
$ git tag --no-sign -m "commit message"
will skip the signing step.
Signed-off-by: Tigran Mkrtchyan <redacted>
Signed-off-by: Junio C Hamano <redacted>
Denton Liu [Wed, 5 Jun 2019 21:21:59 +0000 (17:21 -0400)]
config: learn the "onbranch:" includeIf condition
Currently, if a user wishes to have individual settings per branch, they
are required to manually keep track of the settings in their head and
manually set the options on the command-line or change the config at
each branch.
Teach config the "onbranch:" includeIf condition so that it can
conditionally include configuration files if the branch that is checked
out in the current worktree matches the pattern given.
Signed-off-by: Denton Liu <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthias Rüster [Sat, 1 Jun 2019 12:32:44 +0000 (14:32 +0200)]
l10n: TEAMS: Change German translation team leader
Acked-by: Ralf Thielow <redacted>
Signed-off-by: Matthias Rüster <redacted>
Elijah Newren [Tue, 4 Jun 2019 20:27:50 +0000 (13:27 -0700)]
merge-recursive: restore accidentally dropped setting of path
In commit
8daec1df03de ("merge-recursive: switch from (oid,mode) pairs
to a diff_filespec", 2019-04-05), we actually switched from
(oid,mode,path) triplets to a diff_filespec -- but most callsites in the
patch only needed to worry about oid and mode so the commit message
focused on that. The oversight in the commit message apparently spilled
over to the code as well; one of the dozen or so callsites accidentally
dropped the setting of the path in the conversion. Restore the path
setting in that location.
Also, this pointed out that our testsuite was lacking a good rename/add
test, at least one that involved the need for merge content with the
rename. Add such a test, and since rename/add vs. add/rename could
possibly be important, redo the merge the opposite direction to make
sure we don't have issues with the direction of the merge. These
testcases failed before restoring the setting of path, but with the
paths appropriately set the testcases both pass.
Reported-by: Ben Humphreys <redacted>
Based-on-patch-by: SZEDER Gábor <redacted>
Tested-by: Ben Humphreys <redacted>
Signed-off-by: Elijah Newren <redacted>
Signed-off-by: Junio C Hamano <redacted>
Alexander Shopov [Wed, 5 Jun 2019 06:51:15 +0000 (08:51 +0200)]
l10n: bg.po: Updated Bulgarian translation (4581t)
Signed-off-by: Alexander Shopov <redacted>
Fangyi Zhou [Sun, 2 Jun 2019 21:41:45 +0000 (22:41 +0100)]
l10n: zh_CN: Revision for git v2.22.0 l10n
Revise 51 translations, improving consistency for some phrased.
Update email address for Fangyi Zhou
Signed-off-by: Fangyi Zhou <redacted>
Signed-off-by: Jiang Xin <redacted>
Jiang Xin [Tue, 16 Apr 2019 00:56:12 +0000 (08:56 +0800)]
l10n: zh_CN: for git v2.22.0 l10n round 1~3
Translate 274 new messages (4581t0f0u) for git 2.22.0.
Signed-off-by: Jiang Xin <redacted>
Jiang Xin [Wed, 5 Jun 2019 00:35:35 +0000 (08:35 +0800)]
Merge branch '2.22' of https://github.com/ChrisADR/git-po
* '2.22' of https://github.com/ChrisADR/git-po:
l10n: es: 2.22.0 round 3
Jiang Xin [Wed, 5 Jun 2019 00:17:28 +0000 (08:17 +0800)]
Merge branch 'it-l10n-wip' of github.com:AlessandroMenti/git-po
* 'it-l10n-wip' of github.com:AlessandroMenti/git-po:
l10n: it.po: Updated Italian translation
Christopher Diaz Riveros [Tue, 4 Jun 2019 23:52:28 +0000 (18:52 -0500)]
l10n: es: 2.22.0 round 3
Signed-off-by: Christopher Diaz Riveros <redacted>
Miguel Ojeda [Mon, 3 Jun 2019 22:48:14 +0000 (00:48 +0200)]
clang-format: use git grep to generate the ForEachMacros list
The ForEachMacros list can reasonably be generated grepping
the C source code for macros with 'for_each' in their name.
Taken almost verbatim from the .clang-format file in the Linux kernel.
Signed-off-by: Miguel Ojeda <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthew DeVore [Tue, 4 Jun 2019 17:57:05 +0000 (10:57 -0700)]
url: do not allow %00 to represent NUL in URLs
There is no reason to allow %00 to terminate a string, so do not allow it.
Otherwise, we end up returning arbitrary content in the string (that which is
after the %00) which is effectively hidden from callers and can escape sanity
checks and validation, and possible be used in tandem with a security
vulnerability to introduce a payload.
Helped-by: brian m. carlson <redacted>
Signed-off-by: Matthew DeVore <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthew DeVore [Tue, 4 Jun 2019 17:57:04 +0000 (10:57 -0700)]
url: do not read past end of buffer
url_decode_internal could have been tricked into reading past the length
of the **query buffer if there are fewer than 2 characters after a % (in
a null-terminated string, % would have to be the last character).
Prevent this from happening by checking len before decoding the %
sequence.
Helped-by: René Scharfe <redacted>
Signed-off-by: Matthew DeVore <redacted>
Signed-off-by: Junio C Hamano <redacted>
Dr. Adam Nielsen [Tue, 4 Jun 2019 17:34:46 +0000 (19:34 +0200)]
gitignore.txt: make slash-rules more readable
Renew paragraphs relevant for pattern with slash.
Aim to make it more clear and to avoid possible
pitfalls for the reader. Add some examples.
Signed-off-by: Dr. Adam Nielsen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Alessandro Menti [Sun, 19 May 2019 06:51:55 +0000 (08:51 +0200)]
l10n: it.po: Updated Italian translation
Signed-off-by: Alessandro Menti <redacted>
Felipe Contreras [Tue, 4 Jun 2019 02:13:30 +0000 (21:13 -0500)]
fetch: fix regression with transport helpers
Commit
e198b3a740 changed the behavior of fetch with regards to tags.
Before, null oids where not ignored, now they are, regardless of whether
the refs have been explicitly cleared or not.
e198b3a740 (fetch: replace string-list used as a look-up table with a hashmap)
When using a transport helper the oids can certainly be null. So now
tags are ignored and fetching them is impossible.
This patch fixes that by having a specific flag that is set only when we
explicitly want to ignore the refs, restoring the original behavior.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Tue, 4 Jun 2019 02:13:29 +0000 (21:13 -0500)]
fetch: make the code more understandable
The comment makes it seem as if the condition is the other way around.
The exception is when the oid is null, so check for that.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Tue, 4 Jun 2019 02:13:28 +0000 (21:13 -0500)]
fetch: trivial cleanup
Create a helper function to clear an item. The way items are cleared has
changed, and will change again soon.
No functional changes.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Tue, 4 Jun 2019 02:13:27 +0000 (21:13 -0500)]
t5801 (remote-helpers): add test to fetch tags
This used to work, but commit
e198b3a740 broke it.
e198b3a740 (fetch: replace string-list used as a look-up table with a hashmap)
Probably all remote helpers that use the import method are affected, but
we didn't catch the issue.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Tue, 4 Jun 2019 02:13:26 +0000 (21:13 -0500)]
t5801 (remote-helpers): cleanup refspec stuff
The code is much simpler this way, specially thanks to:
git fast-export --refspec
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jean-Noël Avila [Tue, 4 Jun 2019 17:53:32 +0000 (19:53 +0200)]
l10n: fr v2.22.0 rnd 3
Signed-off-by: Jean-Noël Avila <redacted>
Tran Ngoc Quan [Tue, 4 Jun 2019 01:10:46 +0000 (08:10 +0700)]
l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3
Signed-off-by: Tran Ngoc Quan <redacted>
Jiang Xin [Tue, 4 Jun 2019 00:27:36 +0000 (08:27 +0800)]
l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
Generate po/git.pot from v2.22.0-rc3 for git v2.22.0 l10n round 3.
Signed-off-by: Jiang Xin <redacted>
Jiang Xin [Tue, 4 Jun 2019 00:24:28 +0000 (08:24 +0800)]
Merge branch 'master' of git://git./git/git
* 'master' of git://git.kernel.org/pub/scm/git/git:
Git 2.22-rc3
i18n: fix typos found during l10n for git 2.22.0
RelNotes: minor typo fixes in 2.22.0 draft
list-objects-filter: disable 'sparse:path' filters
Junio C Hamano [Mon, 3 Jun 2019 18:25:12 +0000 (11:25 -0700)]
Git 2.22-rc3
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Mon, 3 Jun 2019 18:18:54 +0000 (11:18 -0700)]
Merge branch 'cc/list-objects-filter-wo-sparse-path'
Disable "--filter=sparse:path=<path>" that would allow reading from
paths on the filesystem.
* cc/list-objects-filter-wo-sparse-path:
list-objects-filter: disable 'sparse:path' filters
Jiang Xin [Sun, 2 Jun 2019 15:11:22 +0000 (23:11 +0800)]
i18n: fix typos found during l10n for git 2.22.0
Fix two typos introduced by the following commits:
+
31fba9d3b4 (diff-parseopt: convert --[src|dst]-prefix, 2019-03-24)
+
ed8b4132c8 (remote-curl: mark all error messages for translation,
2019-03-05)
Signed-off-by: Jiang Xin <redacted>
Acked-by: Johannes Schindelin <redacted>
Signed-off-by: Junio C Hamano <redacted>
Todd Zullinger [Sat, 1 Jun 2019 15:51:06 +0000 (11:51 -0400)]
RelNotes: minor typo fixes in 2.22.0 draft
Signed-off-by: Todd Zullinger <redacted>
Signed-off-by: Junio C Hamano <redacted>
Christopher Diaz Riveros [Mon, 3 Jun 2019 14:34:50 +0000 (09:34 -0500)]
l10n: es: 2.22.0 round 2
Signed-off-by: Christopher Diaz Riveros <redacted>
Jiang Xin [Sun, 2 Jun 2019 14:35:11 +0000 (22:35 +0800)]
Merge branch 'master' of https://github.com/vnwildman/git
* 'master' of https://github.com/vnwildman/git:
l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
Jiang Xin [Sun, 2 Jun 2019 14:09:35 +0000 (22:09 +0800)]
Merge branch 'master' of git://github.com/alshopov/git-po
* 'master' of git://github.com/alshopov/git-po:
l10n: bg.po: Updated Bulgarian translation (4580t)
Alexander Shopov [Sun, 2 Jun 2019 07:26:52 +0000 (09:26 +0200)]
l10n: bg.po: Updated Bulgarian translation (4580t)
Signed-off-by: Alexander Shopov <redacted>
Tran Ngoc Quan [Sat, 1 Jun 2019 01:36:37 +0000 (08:36 +0700)]
l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
Signed-off-by: Tran Ngoc Quan <redacted>
Chris Mayo [Thu, 30 May 2019 18:39:10 +0000 (19:39 +0100)]
send-email: update documentation of required Perl modules
Improve and complete the list of required email related Perl modules,
clarifying which are core Perl modules and remove Net::SMTP::SSL.
git-send-email uses the TLS support in the Net::SMTP core module from
recent versions of Perl. Documenting the minimum version is complex
because of separate numbering for Perl (5.21.5~169), Net:SMTP (2.34)
and libnet (3.01). Version numbers from commit:
bfbfc9a953 ("send-email: Net::SMTP::starttls was introduced in v2.34",
2017-05-31).
Users of older Perl versions without Net::SMTP::SSL installed will get a
clear error message.
Signed-off-by: Chris Mayo <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthew DeVore [Fri, 31 May 2019 18:46:06 +0000 (11:46 -0700)]
list-objects-filter: correct usage of ALLOC_GROW
In the sparse filter data, array_frame array is used in a way such that
nr is the index of the last element. Fix this so that nr is actually the
number of elements in the array.
The filter_sparse_free function also has an unaddressed TODO to free the
memory associated with the sparse filter data. Address that TODO and fix
the memory leak.
Signed-off-by: Matthew DeVore <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthew DeVore [Fri, 31 May 2019 18:01:56 +0000 (11:01 -0700)]
list-objects-filter-options: error is localizeable
The "invalid filter-spec" message is user-facing and not a BUG, so make
it localizeable.
For reference, the message appears in this context:
$ git rev-list --filter=blob:nonse --objects HEAD
fatal: invalid filter-spec 'blob:nonse'
Signed-off-by: Matthew DeVore <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jean-Noël Avila [Fri, 31 May 2019 08:46:21 +0000 (10:46 +0200)]
l10n: fr.po v2.22.0 round 2
Signed-off-by: Jean-Noël Avila <redacted>
Jiang Xin [Fri, 31 May 2019 06:36:22 +0000 (14:36 +0800)]
l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
Generate po/git.pot from v2.22.0-rc2 for git v2.22.0 l10n round 2.
Signed-off-by: Jiang Xin <redacted>
Jiang Xin [Fri, 31 May 2019 06:34:26 +0000 (14:34 +0800)]
Merge branch 'master' of git://git./git/git
* 'master' of git://git.kernel.org/pub/scm/git/git: (66 commits)
Git 2.22-rc2
...
Jiang Xin [Fri, 31 May 2019 06:32:35 +0000 (14:32 +0800)]
Merge branch 'master' of https://github.com/Softcatala/git-po
* 'master' of https://github.com/Softcatala/git-po:
l10n: Update Catalan translation
Junio C Hamano [Thu, 30 May 2019 17:56:29 +0000 (10:56 -0700)]
Git 2.22-rc2
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 30 May 2019 17:50:47 +0000 (10:50 -0700)]
Merge branch 'js/rebase-config-bitfix'
* js/rebase-config-bitfix:
rebase: replace incorrect logical negation by correct bitwise one
Junio C Hamano [Thu, 30 May 2019 17:50:46 +0000 (10:50 -0700)]
Merge branch 'es/doc-gitsubmodules-markup'
Doc markup fix.
* es/doc-gitsubmodules-markup:
gitsubmodules: align html and nroff lists
Junio C Hamano [Thu, 30 May 2019 17:50:46 +0000 (10:50 -0700)]
Merge branch 'ja/diff-opt-typofix'
Typofix.
* ja/diff-opt-typofix:
diff: fix mistake in translatable strings
Junio C Hamano [Thu, 30 May 2019 17:50:46 +0000 (10:50 -0700)]
Merge branch 'jt/clone-server-option'
A brown-paper-bag bugfix to a change already in 'master'.
* jt/clone-server-option:
fetch-pack: send server options after command
Junio C Hamano [Thu, 30 May 2019 17:50:45 +0000 (10:50 -0700)]
Merge branch 'sg/progress-off-by-one-fix'
A brown-paper-bag bugfix to a change already in 'master'.
* sg/progress-off-by-one-fix:
progress: avoid empty line when breaking the progress line
Junio C Hamano [Thu, 30 May 2019 17:50:45 +0000 (10:50 -0700)]
Merge branch 'js/rebase-deprecate-preserve-merges'
A bit more leftover clean-up to deprepcate "rebase -p".
* js/rebase-deprecate-preserve-merges:
rebase docs: recommend `-r` over `-p`
docs: say that `--rebase=preserve` is deprecated
tests: mark a couple more test cases as requiring `rebase -p`
Junio C Hamano [Thu, 30 May 2019 17:50:45 +0000 (10:50 -0700)]
Merge branch 'sg/trace2-rename'
Rename environment variables that are used to control the "trace2"
mechanism to a more readable name.
* sg/trace2-rename:
trace2: document the supported values of GIT_TRACE2* env variables
trace2: rename environment variables to GIT_TRACE2*
Junio C Hamano [Thu, 30 May 2019 17:50:44 +0000 (10:50 -0700)]
Merge branch 'jh/trace2'
* jh/trace2:
trace2: fix tracing when NO_PTHREADS is defined
Junio C Hamano [Thu, 30 May 2019 17:50:44 +0000 (10:50 -0700)]
Merge branch 'nd/diff-parseopt'
A brown-paper-bag bugfix to a change already in 'master'.
* nd/diff-parseopt:
parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
diff-parseopt: restore -U (no argument) behavior
diff-parseopt: correct variable types that are used by parseopt
Johannes Sixt [Thu, 30 May 2019 16:44:35 +0000 (18:44 +0200)]
userdiff: two simplifications of patterns for rust
- Do not enforce (but assume) syntactic correctness of language
constructs that go into hunk headers: we only want to ensure that
the keywords actually are words and not just the initial part of
some identifier.
- In the word regex, match numbers only when they begin with a digit,
but then be liberal in what follows, assuming that the text that is
matched is syntactially correct.
Signed-off-by: Johannes Sixt <redacted>
Signed-off-by: Junio C Hamano <redacted>
Xin Li [Wed, 29 May 2019 21:26:43 +0000 (14:26 -0700)]
clone: respect user supplied origin name when setting up partial clone
Signed-off-by: Xin Li <redacted>
Reviewed-by: Jonathan Nieder <redacted>
Signed-off-by: Junio C Hamano <redacted>
Beat Bolli [Wed, 29 May 2019 20:50:45 +0000 (22:50 +0200)]
unicode: update the width tables to Unicode 12.1
Now that Unicode 12.1 has been announced[0], update the character
width tables to the new version.
[0] http://blog.unicode.org/2019/05/unicode-12-1-en.html
Signed-off-by: Beat Bolli <redacted>
Signed-off-by: Junio C Hamano <redacted>
Emily Shaffer [Wed, 29 May 2019 20:18:09 +0000 (13:18 -0700)]
doc: add some nit fixes to MyFirstContribution
A trial run-through of the tutorial revealed a few typos and missing
commands in the tutorial itself. This commit fixes typos, clarifies
which lines to keep or modify in some places, and adds a section on
putting the git-psuh binary into the gitignore.
Signed-off-by: Emily Shaffer <redacted>
Signed-off-by: Junio C Hamano <redacted>
Christian Couder [Wed, 29 May 2019 12:44:32 +0000 (14:44 +0200)]
list-objects-filter: disable 'sparse:path' filters
If someone wants to use as a filter a sparse file that is in the
repository, something like "--filter=sparse:oid=<ref>:<path>"
already works.
So 'sparse:path' is only interesting if the sparse file is not in
the repository. In this case though the current implementation has
a big security issue, as it makes it possible to ask the server to
read any file, like for example /etc/password, and to explore the
filesystem, as well as individual lines of files.
If someone is interested in using a sparse file that is not in the
repository as a filter, then at the minimum a config option, such
as "uploadpack.sparsePathFilter", should be implemented first to
restrict the directory from which the files specified by
'sparse:path' can be read.
For now though, let's just disable 'sparse:path' filters.
Helped-by: Matthew DeVore <redacted>
Helped-by: Jeff Hostetler <redacted>
Signed-off-by: Christian Couder <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nguyễn Thái Ngọc Duy [Wed, 29 May 2019 09:11:16 +0000 (16:11 +0700)]
parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
When parsing the argument for OPT_INTEGER and OPT_ABBREV, we check if we
can parse the entire argument to a number with "if (*s)". There is one
missing check: if "arg" is empty to begin with, we fail to notice.
This could happen with long option by writing like
git diff --inter-hunk-context= blah blah
Before
16ed6c97cc (diff-parseopt: convert --inter-hunk-context,
2019-03-24), --inter-hunk-context is handled by a custom parser
opt_arg() and does detect this correctly.
This restores the bahvior for --inter-hunk-context and make sure all
other integer options are handled the same (sane) way. For OPT_ABBREV
this is new behavior. But it makes it consistent with the rest.
PS. OPT_MAGNITUDE has similar code but git_parse_ulong() does detect
empty "arg". So it's good to go.
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nguyễn Thái Ngọc Duy [Wed, 29 May 2019 09:11:15 +0000 (16:11 +0700)]
diff-parseopt: restore -U (no argument) behavior
Before
d473e2e0e8 (diff.c: convert -U|--unified, 2019-01-27), -U and
--unified are implemented with a custom parser opt_arg() in diff.c. I
didn't check this code carefully and not realize that it's the
equivalent of PARSE_OPT_NONEG | PARSE_OPT_OPTARG.
In other words, if -U is specified without any argument, the option
should be accepted, and the default value should be used. Without
PARSE_OPT_OPTARG, parse_options() will reject this case and cause a
regression.
Reported-by: Bryan Turner <redacted>
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nguyễn Thái Ngọc Duy [Wed, 29 May 2019 09:11:14 +0000 (16:11 +0700)]
diff-parseopt: correct variable types that are used by parseopt
Most number-related OPT_ macros store the value in an 'int'
variable. Many of the variables in 'struct diff_options' have a
different type, but during the conversion to using parse_options() I
failed to notice and correct.
The problem was reported on s360x which is a big-endian
architechture. The variable to store '-w' option in this case is
xdl_opts, 'long' type, 8 bytes. But since parse_options() assumes
'int' (4 bytes), it will store bits in the wrong part of xdl_opts. The
problem was found on little-endian platforms because parse_options()
will accidentally store at the right part of xdl_opts.
There aren't much to say about the type change (except that 'int' for
xdl_opts should still be big enough, since Windows' long is the same
size as 'int' and nobody has complained so far). Some safety checks may
be implemented in the future to prevent class of bugs.
Reported-by: Todd Zullinger <redacted>
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Junio C Hamano <redacted>
Philip Oakley [Tue, 28 May 2019 23:16:05 +0000 (00:16 +0100)]
doc branch: provide examples for listing remote tracking branches
The availability of these pattern selections is not obvious from
the man pages, as per mail thread <redacted>.
Provide examples.
Re-order the `git branch` synopsis to emphasise the `--list <pattern>`
pairing. Also expand and reposition the `all/remotes` options.
Split the over-long description into three parts so that the <pattern>
description can be seen.
Clarify that the `all/remotes` options require the --list if patterns
are to be used.
Add examples of listing remote tracking branches that match a pattern,
including `git for-each-ref` which has more options.
Improve the -a/-r warning message. The message confused this author
as the combined -a and -r options had not been given, though a pattern
had. Specifically guide the user that maybe they needed the --list
option to enable a remote branch pattern selection.
Signed-off-by: Philip Oakley <redacted>
Signed-off-by: Junio C Hamano <redacted>
Ævar Arnfjörð Bjarmason [Fri, 17 May 2019 19:55:44 +0000 (21:55 +0200)]
send-email: fix regression in sendemail.identity parsing
Fix a regression in my recent
3494dfd3ee ("send-email: do defaults ->
config -> getopt in that order", 2019-05-09). I missed that the
$identity variable needs to be extracted from the command-line before
we do the config reading, as it determines which config variable we
should read first. See [1] for the report.
The sendemail.identity feature was added back in
34cc60ce2b ("send-email: Add support for SSL and SMTP-AUTH",
2007-09-03), there were no tests to assert that it worked properly.
So let's fix both the regression, and add some tests to assert that
this is being parsed properly. While I'm at it I'm adding a
--no-identity option to go with --[to|cc|bcc] variable, since the
semantics are similar. It's like to/cc/bcc except that unlike those we
don't support multiple identities, but we could now easily add it
support for it if anyone cares.
In just fixing the --identity command-line parsing bug I discovered
that a narrow fix to that wouldn't do. In read_config() we had a state
machine that would only set config values if they weren't set already,
and thus by proxy we wouldn't e.g. set "to" based on sendemail.to if
we'd seen sendemail.gmail.to before, with --identity=gmail.
I'd modified some of the relevant code in
3494dfd3ee, but just
reverting to that wouldn't do, since it would bring back the
regression fixed in that commit.
Refactor read_config() do what we actually mean here. We don't want to
set a given sendemail.VAR if a sendemail.$identity.VAR previously set
it. The old code was conflating this desire with the hardcoded
defaults for these variables, and as discussed in
3494dfd3ee that was
never going to work. Instead pass along the state of whether an
identity config set something before, as distinguished from the state
of the default just being false, or the default being a non-bool or
true (e.g. --transferencoding).
I'm still not happy with the test coverage here, e.g. there's nothing
testing sendemail.smtpEncryption, but I only have so much time to fix
this code.
1. https://public-inbox.org/git/
5cddeb61.
1c69fb81.47ed4.e648@mx.google.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
Signed-off-by: Junio C Hamano <redacted>
Boxuan Li [Wed, 29 May 2019 16:15:39 +0000 (00:15 +0800)]
userdiff: fix grammar and style issues
Signed-off-by: Boxuan Li <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jiang Xin [Wed, 29 May 2019 14:01:19 +0000 (22:01 +0800)]
Merge branch 'master' of git://github.com/alshopov/git-po
* 'master' of git://github.com/alshopov/git-po:
l10n: bg.po: Updated Bulgarian translation (4577t)
Alexander Shopov [Fri, 17 May 2019 08:27:52 +0000 (10:27 +0200)]
l10n: bg.po: Updated Bulgarian translation (4577t)
Signed-off-by: Alexander Shopov <redacted>
Emily Shaffer [Tue, 28 May 2019 19:07:29 +0000 (12:07 -0700)]
doc: hint about GIT_DEBUGGER in CodingGuidelines
We check for a handy environment variable GIT_DEBUGGER when running via
bin-wrappers/, but this feature is undocumented. Add a hint to how to
use it into the CodingGuidelines (which is where other useful
environment settings like DEVELOPER are documented).
Signed-off-by: Emily Shaffer <redacted>
Signed-off-by: Junio C Hamano <redacted>
Mike Mueller [Tue, 28 May 2019 18:15:46 +0000 (11:15 -0700)]
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
git p4 unshelve was failing with these errors:
fatal: Not a valid object name HEAD0
Command failed: git cat-file commit HEAD^0
(git version 2.21.0.windows.1, python 2.7.16)
The pOpen call used by git-p4 to invoke the git command can take either a
string or an array as a first argument. The array form is preferred
because platform-specific escaping of special characters will be
handled automatically.(https://docs.python.org/2/library/subprocess.html)
The extractLogMessageFromGitCommit method was, however, using the string
form and so the caret (^) character in the HEAD^0 argument was not being
escaped on Windows. The caret happens to be the escape character, which
is why the git command was receiving HEAD0.
The behaviour can be confirmed by typing ECHO HEAD^0 at the command-
prompt, which emits HEAD0.
The solution is simply to use the array format of passing the command to
fOpen, which is recommended and used in other parts of this code anyway.
Signed-off-by: Mike Mueller <redacted>
Signed-off-by: Junio C Hamano <redacted>