* How log log a feaure request
From: Tymek Majewski @ 2020-01-09 2:06 UTC (permalink / raw)
To: git@vger.kernel.org
Hello gurus!
I looked at https://git-scm.com/community but I failed to find a place to send feature requests to.
Q: How to submit a feature request (rather than a bug)?
----
What is the feature request?
Change git checkout's
"Your branch is up to date with 'origin/branch_name_here'"
(and similar messages)
to
"Your branch is up to date with the *local* branch 'origin/branch_name_here'"
Reasoning:
I believe that if the git checkout message
"Your branch is up to date with 'origin/branch_name_here'"
was
"Your branch is up to date with the *local* branch 'origin/branch_name_here'"
it would make it clearer to new users what is happening.
Cheers
Tymek
^ permalink raw reply
* interoperability between git and other VCS and data storage/transfer tools?
From: Paul Wise @ 2020-01-09 0:59 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 1718 bytes --]
Hi all,
[Please CC me in reply, I am not subscribed]
I would like to be only using git on my local systems but there are
other folks out there who prefer to use different VCS systems.
In addition there are VCS-like data storage systems (such as Mediawiki)
and general data storage/transfer systems where one might want to track
changes using git (such as LDAP and rsync).
I still need mostly bi-directional interoperability between git and
CVS, Subversion, Mercurial, Breezy/Bazaar, Darcs, Mediawiki and rsync.
On the horizon are Fossil and Pijul but I probably won't need those any
time soon. Recently I had a situation where GNU Arch support would have
been helpful for viewing historical commit information but I assumed
that support for it didn't exist so I didn't bother.
Is there a location in the git documentation for pointers to software
(such as git-remote-* helpers) that can help with VCS interoperability?
Is there a place for people interested in VCS interoperability software
to collaboratively maintain them?
Should the VCS interop software in the git git repo move there?
I'm currently using the following tools:
CVS: https://github.com/osamuaoki/git-cvs (slightly better than git-cvsimport)
Subversion: git-svn (not using a git-remote-* workflow)
Mercurial: git-remote-hg (there are lots of forks/implementations)
Breezy/Bazaar: git-remote-bzr (there are lots of forks)
Darcs: nothing as only fast-export/fast-import seems possible
Mediawiki: https://github.com/Git-Mediawiki/Git-Mediawiki
rsync: manually rsyncing and importing commits
What other tools are folks using?
Any other thoughts on this?
--
bye,
pabs
https://bonedaddy.net/pabs3/
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: Unreliable 'git rebase --onto'
From: Elijah Newren @ 2020-01-09 0:55 UTC (permalink / raw)
To: SZEDER Gábor
Cc: Eugeniu Rosca, Junio C Hamano, Jeff King,
Ævar Arnfjörð, Git Mailing List, Eugeniu Rosca
In-Reply-To: <20200108223557.GE32750@szeder.dev>
user 0m9.644s
sys 0m3.620s
On Wed, Jan 8, 2020 at 2:36 PM SZEDER Gábor <szeder.dev@gmail.com> wrote:
>
> On Wed, Jan 08, 2020 at 10:43:49PM +0100, Eugeniu Rosca wrote:
> > Hello Git community,
> >
> > Below is a simple reproduction scenario for what looks to be a bug (?)
> > in 'git rebase --onto' (v2.25.0-rc1-19-g042ed3e048af).
> >
> > I would appreciate your confirmation of the misbehavior.
> > If the behavior is correct/expected, I would appreciate some feedback
> > how to avoid it in future, since it occurs with the default parameters.
> >
> > 1. git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> >
> > 2. ### Cherry pick an upstream commit, to contrast the results with
> > 'git rebase --onto':
> > $ git checkout -b v4.18-cherry-pick v4.18
> > $ git cherry-pick 463fa44eec2fef50
> > Auto-merging drivers/input/touchscreen/atmel_mxt_ts.c
> > warning: inexact rename detection was skipped due to too many files.
> > warning: you may want to set your merge.renamelimit variable to at least 7216 and retry the command.
Lots of renames...
> > [v4.18-cherry-pick bd142b45bf3a] Input: atmel_mxt_ts - disable IRQ across suspend
> > Author: Evan Green <evgreen@chromium.org>
> > Date: Wed Oct 2 14:00:21 2019 -0700
> > 1 file changed, 4 insertions(+)
> >
> > 3. ### In spite of the warning, the result matches the original commit:
> > $ vimdiff <(git show 463fa44eec2fef50) <(git show v4.18-cherry-pick)
> >
> > 4. ### Now, backport the same commit via 'git rebase --onto'
> > $ git rebase --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50
> > First, rewinding head to replay your work on top of it...
> > Applying: Input: atmel_mxt_ts - disable IRQ across suspend
> >
> > 5. ### The result is different:
> > $ git branch v4.18-rebase-onto
> > $ git diff v4.18-cherry-pick v4.18-rebase-onto
> >
> > diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
> > index b45958e89cc5..2345b587662b 100644
> > --- a/drivers/input/touchscreen/atmel_mxt_ts.c
> > +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
> > @@ -3139,8 +3139,6 @@ static int __maybe_unused mxt_suspend(struct device *dev)
> >
> > mutex_unlock(&input_dev->mutex);
> >
> > - disable_irq(data->irq);
> > -
> > return 0;
> > }
> >
> > @@ -3162,6 +3160,8 @@ static int __maybe_unused mxt_resume(struct device *dev)
> >
> > mutex_unlock(&input_dev->mutex);
> >
> > + disable_irq(data->irq);
> > +
> > return 0;
> > }
> >
> >
> > In a nutshell, purely from user's perspective:
> > - I get a warning from 'git cherry pick', with perfect results
> > - I get no warning from 'git rebase --onto', with wrong results
> >
> > Does git still behave expectedly? TIA!
>
> This is a known issue with the 'am' backend of 'git rebase'.
>
> The good news is that work is already well under way to change the
> default backend from 'am' to 'merge', which will solve this issue.
> From the log message of aa523de170 (rebase: change the default backend
> from "am" to "merge", 2019-12-24):
>
> The am-backend drops information and thus limits what we can do:
> [...]
> * reduction in context from only having a few lines beyond those
> changed means that when context lines are non-unique we can apply
> patches incorrectly.[2]
> [...]
> [2] https://lore.kernel.org/git/CABPp-BGiu2nVMQY_t-rnFR5GQUz_ipyEE8oDocKeO+>
>
> Alas, there is unexpected bad news: with that commit the runtime of
> your 'git rebase --onto' command goes from <1sec to over 50secs.
> Cc-ing Elijah, author of that patch...
I see slowdown, but not nearly as big as you report:
$ git checkout -b v4.18-cherry-pick v4.18
$ time git cherry-pick 463fa44eec2fef50
Auto-merging drivers/input/touchscreen/atmel_mxt_ts.c
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at
least 7216 and retry the command.
[v4.18-cherry-pick 88d39cdf3e80] Input: atmel_mxt_ts - disable IRQ
across suspend
Author: Evan Green <evgreen@chromium.org>
Date: Wed Oct 2 14:00:21 2019 -0700
1 file changed, 4 insertions(+)
real 0m1.110s
user 0m0.956s
sys 0m0.284s
$ time git rebase --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef5
First, rewinding head to replay your work on top of it...
Applying: Input: atmel_mxt_ts - disable IRQ across suspend
real 0m1.643s
user 0m1.296s
sys 0m0.264s
$ time git rebase -m --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at
least 7216 and retry the command.
Successfully rebased and updated detached HEAD.
real 0m13.305s
user 0m9.644s
sys 0m3.620s
Interestingly, turning off rename detection only speeds it up a little bit:
$ time git rebase -m -Xno-renames --onto v4.18 463fa44eec2fef50~
463fa44eec2fef50
Successfully rebased and updated detached HEAD.
real 0m11.955s
user 0m8.732s
sys 0m3.424s
This is an interesting testcase; I'm going to try to find some time to
dig in further.
^ permalink raw reply
* Cyber Security questions (UNCLASSIFIED)
From: Jones, Amy E CTR USARMY ATEC (USA) @ 2020-01-08 23:58 UTC (permalink / raw)
To: git@vger.kernel.org
CLASSIFICATION: UNCLASSIFIED
We've had a request at this company to acquire GIT software, but all new software has to be approved by our cyber security team. I have a list of questions that need to be answered before we can start the approval process, and some of those questions are very technical, is there someone who could fill out the question form?
Amy Jones
Team SURVICE
435-831-7168
amy.e.jones49.ctr@mail.mil
CLASSIFICATION: UNCLASSIFIED
^ permalink raw reply
* Re: [PATCH] clone: teach --single-branch and --branch during --recurse
From: Emily Shaffer @ 2020-01-08 23:39 UTC (permalink / raw)
To: git
In-Reply-To: <20200108231900.192476-1-emilyshaffer@google.com>
On Wed, Jan 08, 2020 at 03:19:00PM -0800, Emily Shaffer wrote:
Bah, in my attempt to keep the subject brief I was aiming to write
"--recursive" but instead just wrote "--recurse" which is wrong. I can
push another version with the fix if desired.
> Previously, performing "git clone --recurse-submodules --single-branch"
> resulted in submodules cloning all branches even though the superproject
> cloned only one branch. Pipe --single-branch and its friend, --branch,
> through the submodule helper framework to make it to 'clone' later on.
>
> Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
> ---
> Note that 'branch' was already in use in git-submodules.sh, so
> "submodule branch" aka 'sm_branch' was used to disambiguate the two.
>
> Documentation/git-submodule.txt | 6 +++++-
> builtin/clone.c | 6 ++++++
> builtin/submodule--helper.c | 28 +++++++++++++++++++++++++---
> git-submodule.sh | 17 ++++++++++++++++-
> t/t5617-clone-submodules-remote.sh | 26 ++++++++++++++++++++++++--
> 5 files changed, 76 insertions(+), 7 deletions(-)
^ permalink raw reply
* [PATCH] clone: teach --single-branch and --branch during --recurse
From: Emily Shaffer @ 2020-01-08 23:19 UTC (permalink / raw)
To: git; +Cc: Emily Shaffer
Previously, performing "git clone --recurse-submodules --single-branch"
resulted in submodules cloning all branches even though the superproject
cloned only one branch. Pipe --single-branch and its friend, --branch,
through the submodule helper framework to make it to 'clone' later on.
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
---
Note that 'branch' was already in use in git-submodules.sh, so
"submodule branch" aka 'sm_branch' was used to disambiguate the two.
Documentation/git-submodule.txt | 6 +++++-
builtin/clone.c | 6 ++++++
builtin/submodule--helper.c | 28 +++++++++++++++++++++++++---
git-submodule.sh | 17 ++++++++++++++++-
t/t5617-clone-submodules-remote.sh | 26 ++++++++++++++++++++++++--
5 files changed, 76 insertions(+), 7 deletions(-)
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index 22425cbc76..8c516a9670 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -133,7 +133,7 @@ If you really want to remove a submodule from the repository and commit
that use linkgit:git-rm[1] instead. See linkgit:gitsubmodules[7] for removal
options.
-update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--jobs <n>] [--] [<path>...]::
+update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--jobs <n>] [--single-branch] [-b|--branch <name>] [--] [<path>...]::
+
--
Update the registered submodules to match what the superproject
@@ -430,6 +430,10 @@ options carefully.
Clone new submodules in parallel with as many jobs.
Defaults to the `submodule.fetchJobs` option.
+--single-branch::
+ This option is only valid for the update command.
+ Clone only one branch during update, HEAD or --branch.
+
<path>...::
Paths to submodule(s). When specified this will restrict the command
to only operate on the submodules found at the specified paths.
diff --git a/builtin/clone.c b/builtin/clone.c
index 6dee265cc9..293cef8b30 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -808,6 +808,12 @@ static int checkout(int submodule_progress)
argv_array_push(&args, "--no-fetch");
}
+ if (option_single_branch)
+ argv_array_push(&args, "--single-branch");
+
+ if (option_branch)
+ argv_array_pushf(&args, "--branch=%s", option_branch);
+
err = run_command_v_opt(args.argv, RUN_GIT_CMD);
argv_array_clear(&args);
}
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index c72931ecd7..92bd823d38 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -1225,7 +1225,8 @@ static int module_deinit(int argc, const char **argv, const char *prefix)
static int clone_submodule(const char *path, const char *gitdir, const char *url,
const char *depth, struct string_list *reference, int dissociate,
- int quiet, int progress)
+ int quiet, int progress, int single_branch,
+ const char *branch)
{
struct child_process cp = CHILD_PROCESS_INIT;
@@ -1247,6 +1248,10 @@ static int clone_submodule(const char *path, const char *gitdir, const char *url
argv_array_push(&cp.args, "--dissociate");
if (gitdir && *gitdir)
argv_array_pushl(&cp.args, "--separate-git-dir", gitdir, NULL);
+ if (single_branch)
+ argv_array_push(&cp.args, "--single-branch");
+ if (branch)
+ argv_array_pushl(&cp.args, "--branch", branch, NULL);
argv_array_push(&cp.args, "--");
argv_array_push(&cp.args, url);
@@ -1373,6 +1378,8 @@ static int module_clone(int argc, const char **argv, const char *prefix)
struct string_list reference = STRING_LIST_INIT_NODUP;
int dissociate = 0, require_init = 0;
char *sm_alternate = NULL, *error_strategy = NULL;
+ int single_branch = 0;
+ char *branch = NULL;
struct option module_clone_options[] = {
OPT_STRING(0, "prefix", &prefix,
@@ -1400,12 +1407,17 @@ static int module_clone(int argc, const char **argv, const char *prefix)
N_("force cloning progress")),
OPT_BOOL(0, "require-init", &require_init,
N_("disallow cloning into non-empty directory")),
+ OPT_BOOL(0, "single-branch", &single_branch,
+ N_("clone only one branch, HEAD or --branch")),
+ OPT_STRING('b', "branch", &branch, "<branch>",
+ N_("checkout <branch> instead of the remote's HEAD")),
OPT_END()
};
const char *const git_submodule_helper_usage[] = {
N_("git submodule--helper clone [--prefix=<path>] [--quiet] "
"[--reference <repository>] [--name <name>] [--depth <depth>] "
+ "[--single-branch] [-b | --branch <name>] "
"--url <url> --path <path>"),
NULL
};
@@ -1438,7 +1450,7 @@ static int module_clone(int argc, const char **argv, const char *prefix)
prepare_possible_alternates(name, &reference);
if (clone_submodule(path, sm_gitdir, url, depth, &reference, dissociate,
- quiet, progress))
+ quiet, progress, single_branch, branch))
die(_("clone of '%s' into submodule path '%s' failed"),
url, path);
} else {
@@ -1562,6 +1574,8 @@ struct submodule_update_clone {
const char *depth;
const char *recursive_prefix;
const char *prefix;
+ int single_branch;
+ const char *branch;
/* to be consumed by git-submodule.sh */
struct update_clone_data *update_clone;
@@ -1578,7 +1592,7 @@ struct submodule_update_clone {
};
#define SUBMODULE_UPDATE_CLONE_INIT {0, MODULE_LIST_INIT, 0, \
SUBMODULE_UPDATE_STRATEGY_INIT, 0, 0, -1, STRING_LIST_INIT_DUP, 0, 0, \
- NULL, NULL, NULL, \
+ NULL, NULL, NULL, 0, NULL,\
NULL, 0, 0, 0, NULL, 0, 0, 1}
@@ -1718,6 +1732,10 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce,
argv_array_push(&child->args, "--dissociate");
if (suc->depth)
argv_array_push(&child->args, suc->depth);
+ if (suc->single_branch)
+ argv_array_push(&child->args, "--single-branch");
+ if (suc->branch)
+ argv_array_pushl(&child->args, "--branch", suc->branch, NULL);
cleanup:
strbuf_reset(&displaypath_sb);
@@ -1897,6 +1915,10 @@ static int update_clone(int argc, const char **argv, const char *prefix)
N_("force cloning progress")),
OPT_BOOL(0, "require-init", &suc.require_init,
N_("disallow cloning into non-empty directory")),
+ OPT_BOOL(0, "single-branch", &suc.single_branch,
+ N_("clone only one branch, HEAD or --branch")),
+ OPT_STRING('b', "branch", &suc.branch, "<branch>",
+ N_("checkout <branch> instead of the remote's HEAD")),
OPT_END()
};
diff --git a/git-submodule.sh b/git-submodule.sh
index aaa1809d24..c2eadbb930 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -10,7 +10,7 @@ USAGE="[--quiet] [--cached]
or: $dashless [--quiet] status [--cached] [--recursive] [--] [<path>...]
or: $dashless [--quiet] init [--] [<path>...]
or: $dashless [--quiet] deinit [-f|--force] (--all| [--] <path>...)
- or: $dashless [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--] [<path>...]
+ or: $dashless [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--single-branch] [-b|--branch <name>] [--] [<path>...]
or: $dashless [--quiet] set-branch (--default|--branch <branch>) [--] <path>
or: $dashless [--quiet] set-url [--] <path> <newurl>
or: $dashless [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
@@ -47,6 +47,8 @@ custom_name=
depth=
progress=
dissociate=
+single_branch=
+sm_branch=
die_if_unmatched ()
{
@@ -526,6 +528,17 @@ cmd_update()
--jobs=*)
jobs=$1
;;
+ --single-branch)
+ single_branch=1
+ ;;
+ -b|--branch)
+ case "$2" in '') usage ;; esac
+ sm_branch="--branch=$2"
+ shift
+ ;;
+ -b=*|--branch=*)
+ sm_branch=$1
+ ;;
--)
shift
break
@@ -555,6 +568,8 @@ cmd_update()
${dissociate:+"--dissociate"} \
${depth:+--depth "$depth"} \
${require_init:+--require-init} \
+ ${single_branch:+--single-branch} \
+ ${sm_branch:+"$sm_branch"} \
$recommend_shallow \
$jobs \
-- \
diff --git a/t/t5617-clone-submodules-remote.sh b/t/t5617-clone-submodules-remote.sh
index 37fcce9c40..390645897d 100755
--- a/t/t5617-clone-submodules-remote.sh
+++ b/t/t5617-clone-submodules-remote.sh
@@ -14,14 +14,16 @@ test_expect_success 'setup' '
cd sub &&
git init &&
test_commit subcommit1 &&
- git tag sub_when_added_to_super
+ git tag sub_when_added_to_super &&
+ git branch other
) &&
git submodule add "file://$pwd/sub" sub &&
git commit -m "add submodule" &&
(
cd sub &&
test_commit subcommit2
- )
+ ) &&
+ git branch other
'
test_expect_success 'clone with --no-remote-submodules' '
@@ -51,4 +53,24 @@ test_expect_success 'check the default is --no-remote-submodules' '
)
'
+test_expect_success 'clone with --single-branch' '
+ test_when_finished "rm -rf super_clone" &&
+ git clone --recurse-submodules --single-branch "file://$pwd/." super_clone &&
+ (
+ cd super_clone/sub &&
+ git branch -a >branches &&
+ test_must_fail grep other branches
+ )
+'
+
+test_expect_success 'clone with --single-branch and --branch' '
+ test_when_finished "rm -rf super_clone" &&
+ git clone --recurse-submodules --single-branch --branch other "file://$pwd/." super_clone &&
+ (
+ cd super_clone/sub &&
+ git branch -a >branches &&
+ test_must_fail grep master branches
+ )
+'
+
test_done
--
2.25.0.rc1.283.g88dfdc4193-goog
^ permalink raw reply related
* Re: Unreliable 'git rebase --onto'
From: SZEDER Gábor @ 2020-01-08 22:35 UTC (permalink / raw)
To: Eugeniu Rosca, Elijah Newren; +Cc: gitster, peff, avarab, git, Eugeniu Rosca
In-Reply-To: <20200108214349.GA17624@lxhi-065.adit-jv.com>
On Wed, Jan 08, 2020 at 10:43:49PM +0100, Eugeniu Rosca wrote:
> Hello Git community,
>
> Below is a simple reproduction scenario for what looks to be a bug (?)
> in 'git rebase --onto' (v2.25.0-rc1-19-g042ed3e048af).
>
> I would appreciate your confirmation of the misbehavior.
> If the behavior is correct/expected, I would appreciate some feedback
> how to avoid it in future, since it occurs with the default parameters.
>
> 1. git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>
> 2. ### Cherry pick an upstream commit, to contrast the results with
> 'git rebase --onto':
> $ git checkout -b v4.18-cherry-pick v4.18
> $ git cherry-pick 463fa44eec2fef50
> Auto-merging drivers/input/touchscreen/atmel_mxt_ts.c
> warning: inexact rename detection was skipped due to too many files.
> warning: you may want to set your merge.renamelimit variable to at least 7216 and retry the command.
> [v4.18-cherry-pick bd142b45bf3a] Input: atmel_mxt_ts - disable IRQ across suspend
> Author: Evan Green <evgreen@chromium.org>
> Date: Wed Oct 2 14:00:21 2019 -0700
> 1 file changed, 4 insertions(+)
>
> 3. ### In spite of the warning, the result matches the original commit:
> $ vimdiff <(git show 463fa44eec2fef50) <(git show v4.18-cherry-pick)
>
> 4. ### Now, backport the same commit via 'git rebase --onto'
> $ git rebase --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50
> First, rewinding head to replay your work on top of it...
> Applying: Input: atmel_mxt_ts - disable IRQ across suspend
>
> 5. ### The result is different:
> $ git branch v4.18-rebase-onto
> $ git diff v4.18-cherry-pick v4.18-rebase-onto
>
> diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
> index b45958e89cc5..2345b587662b 100644
> --- a/drivers/input/touchscreen/atmel_mxt_ts.c
> +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
> @@ -3139,8 +3139,6 @@ static int __maybe_unused mxt_suspend(struct device *dev)
>
> mutex_unlock(&input_dev->mutex);
>
> - disable_irq(data->irq);
> -
> return 0;
> }
>
> @@ -3162,6 +3160,8 @@ static int __maybe_unused mxt_resume(struct device *dev)
>
> mutex_unlock(&input_dev->mutex);
>
> + disable_irq(data->irq);
> +
> return 0;
> }
>
>
> In a nutshell, purely from user's perspective:
> - I get a warning from 'git cherry pick', with perfect results
> - I get no warning from 'git rebase --onto', with wrong results
>
> Does git still behave expectedly? TIA!
This is a known issue with the 'am' backend of 'git rebase'.
The good news is that work is already well under way to change the
default backend from 'am' to 'merge', which will solve this issue.
From the log message of aa523de170 (rebase: change the default backend
from "am" to "merge", 2019-12-24):
The am-backend drops information and thus limits what we can do:
[...]
* reduction in context from only having a few lines beyond those
changed means that when context lines are non-unique we can apply
patches incorrectly.[2]
[...]
[2] https://lore.kernel.org/git/CABPp-BGiu2nVMQY_t-rnFR5GQUz_ipyEE8oDocKeO+>
Alas, there is unexpected bad news: with that commit the runtime of
your 'git rebase --onto' command goes from <1sec to over 50secs.
Cc-ing Elijah, author of that patch...
^ permalink raw reply
* [ANNOUNCE] Git v2.25.0-rc2
From: Junio C Hamano @ 2020-01-08 22:27 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.25.0-rc2 is now available for testing
at the usual places. It is comprised of 517 non-merge commits
since v2.24.1, contributed by 70 people, 29 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.25.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.24.1 are as follows.
Welcome to the Git development community!
Ben Keene, Colin Stolley, Dominic Jäger, Erik Chen, Hariom
Verma, Heba Waly, James Coglan, James Shubin, Jonathan Gilbert,
Josh Holland, Kazuhiro Kato, Łukasz Niemier, Manish Goregaokar,
Matthew Rogers, Mihail Atanassov, Miriam Rubio, Nathan Stocks,
Naveen Nathan, Nika Layzell, Paul Menzel, Philippe Blain,
Prarit Bhargava, r.burenkov, Ruud van Asseldonk, ryenus,
Slavica Đukić, Thomas Menzel, Utsav Shah, and Zoli Szabó.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Andreas Schwab, Andrei Rybak,
brian m. carlson, Daniel Ferreira, Denis Ovsienko, Denton Liu,
Derrick Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh,
Ed Maste, Elia Pinto, Elijah Newren, Emily Shaffer, Eric Wong,
Hans Jerry Illikainen, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Johannes Berg, Johannes Schindelin, Johannes Sixt,
Jonathan Tan, Junio C Hamano, Kevin Willford, Martin Ågren,
Mike Hommey, Philip Oakley, Phillip Wood, Pratyush Yadav,
Ralf Thielow, René Scharfe, Robin H. Johnson, Rohit Ashiwal,
SZEDER Gábor, Tanushree Tumane, Taylor Blau, Thomas Gummerer,
Todd Zullinger, and William Baker.
----------------------------------------------------------------
Git 2.25 Release Notes (draft)
==============================
Updates since v2.24
-------------------
Backward compatibility notes
UI, Workflows & Features
* A tutorial on object enumeration has been added.
* The branch description ("git branch --edit-description") has been
used to fill the body of the cover letters by the format-patch
command; this has been enhanced so that the subject can also be
filled.
* "git rebase --preserve-merges" has been marked as deprecated; this
release stops advertising it in the "git rebase -h" output.
* The code to generate multi-pack index learned to show (or not to
show) progress indicators.
* "git apply --3way" learned to honor merge.conflictStyle
configuration variable, like merges would.
* The custom format for "git log --format=<format>" learned the l/L
placeholder that is similar to e/E that fills in the e-mail
address, but only the local part on the left side of '@'.
* Documentation pages for "git shortlog" now list commit limiting
options explicitly.
* The patterns to detect function boundary for Elixir language has
been added.
* The completion script (in contrib/) learned that the "--onto"
option of "git rebase" can take its argument as the value of the
option.
* The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.
* "git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.
* "git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.
* A few commands learned to take the pathspec from the standard input
or a named file, instead of taking it as the command line
arguments, with the "--pathspec-from-file" option.
* "git rebase -i" learned a few options that are known by "git
rebase" proper.
* "git submodule" learned a subcommand "set-url".
* "git log" family learned "--pretty=reference" that gives the name
of a commit in the format that is often used to refer to it in log
messages.
* The interaction between "git clone --recurse-submodules" and
alternate object store was ill-designed. The documentation and
code have been taught to make more clear recommendations when the
users see failures.
* Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.
* Miscellaneous small UX improvements on "git-p4".
* "git sparse-checkout list" subcommand learned to give its output in
a more concise form when the "cone" mode is in effect.
Performance, Internal Implementation, Development Support etc.
* Debugging support for lazy cloning has been a bit improved.
* Move the definition of a set of bitmask constants from 0ctal
literal to (1U<<count) notation.
* Test updates to prepare for SHA-2 transition continues.
* Crufty code and logic accumulated over time around the object
parsing and low-level object access used in "git fsck" have been
cleaned up.
* The implementation of "git log --graph" got refactored and then its
output got simplified.
* Follow recent push to move API docs from Documentation/ to header
files and update config.h
* "git bundle" has been taught to use the parse options API. "git
bundle verify" learned "--quiet" and "git bundle create" learned
options to control the progress output.
* Handling of commit objects that use non UTF-8 encoding during
"rebase -i" has been improved.
* The beginning of rewriting "git add -i" in C.
* A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
* The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
* We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently. The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.
* Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.
* Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.
* Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.
* PerfTest fix to avoid stale result mixed up with the latest round
of test results.
* Hide lower-level verify_signed-buffer() API as a pure helper to
implement the public check_signature() function, in order to
encourage new callers to use the correct and more strict
validation.
* Unnecessary reading of state variables back from the disk during
sequencer operation has been reduced.
* The code has been made to avoid gmtime() and localtime() and prefer
their reentrant counterparts.
* In a repository with many packfiles, the cost of the procedure that
avoids registering the same packfile twice was unnecessarily high
by using an inefficient search algorithm, which has been corrected.
* Redo "git name-rev" to avoid recursive calls.
* FreeBSD CI support via Cirrus-CI has been added.
Fixes since v2.24
-----------------
* "rebase -i" ceased to run post-commit hook by mistake in an earlier
update, which has been corrected.
* "git notes copy $original" ought to copy the notes attached to the
original object to HEAD, but a mistaken tightening to command line
parameter validation made earlier disabled that feature by mistake.
* When all files from some subdirectory were renamed to the root
directory, the directory rename heuristics would fail to detect that
as a rename/merge of the subdirectory to the root directory, which has
been corrected.
* Code clean-up and a bugfix in the logic used to tell worktree local
and repository global refs apart.
(merge f45f88b2e4 sg/dir-trie-fixes later to maint).
* "git stash save" in a working tree that is sparsely checked out
mistakenly removed paths that are outside the area of interest.
(merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
* "git rev-parse --git-path HEAD.lock" did not give the right path
when run in a secondary worktree.
(merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
* "git merge --no-commit" needs "--no-ff" if you do not want to move
HEAD, which has been corrected in the manual page for "git bisect".
(merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
* "git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected. This has been corrected.
(merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
* Messages from die() etc. can be mixed up from multiple processes
without even line buffering on Windows, which has been worked
around.
(merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
* HTTP transport had possible allocator/deallocator mismatch, which
has been corrected.
* The watchman integration for fsmonitor was racy, which has been
corrected to be more conservative.
(merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
* Fetching from multiple remotes into the same repository in parallel
had a bad interaction with the recent change to (optionally) update
the commit-graph after a fetch job finishes, as these parallel
fetches compete with each other. Which has been corrected.
* Recent update to "git stash pop" made the command empty the index
when run with the "--quiet" option, which has been corrected.
* "git fetch" codepath had a big "do not lazily fetch missing objects
when I ask if something exists" switch. This has been corrected by
marking the "does this thing exist?" calls with "if not please do not
lazily fetch it" flag.
* Test update to avoid wasted cycles.
(merge e0316695ec sg/skip-skipped-prereq later to maint).
* Error handling after "git push" finishes sending the packdata and
waits for the response to the remote side has been improved.
(merge ad7a403268 jk/send-pack-remote-failure later to maint).
* Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.
(merge a376e37b2c jk/gitweb-anti-xss later to maint).
* CI jobs for macOS has been made less chatty when updating perforce
package used during testing.
(merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
* "git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object. It now shows the throughput as
well.
(merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
* The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.
* The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.
(merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
* "git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.
(merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
* "git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.
* "git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.
(merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
* The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.
(merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
* TravisCI update.
(merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
* While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.
(merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
* Work around a issue where a FD that is left open when spawning a
child process and is kept open in the child can interfere with the
operation in the parent process on Windows.
* One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.
* "git rebase" did not work well when format.useAutoBase
configuration variable is set, which has been corrected.
* The "diff" machinery learned not to lose added/removed blank lines
in the context when --ignore-blank-lines and --function-context are
used at the same time.
(merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
* The test on "fast-import" used to get stuck when "fast-import" died
in the middle.
(merge 0d9b0d7885 sg/t9300-robustify later to maint).
* "git format-patch" can take a set of configured format.notes values
to specify which notes refs to use in the log message part of the
output. The behaviour of this was not consistent with multiple
--notes command line options, which has been corrected.
(merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
* "git p4" used to ignore lfs.storage configuration variable, which
has been corrected.
(merge ea94b16fb8 rb/p4-lfs later to maint).
* Assorted fixes to the directory traversal API.
(merge 6836d2fe06 en/fill-directory-fixes later to maint).
* Forbid pathnames that the platform's filesystem cannot represent on
MinGW.
(merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).
* "git rebase --signoff" stopped working when the command was written
in C, which has been corrected.
(merge 4fe7e43c53 en/rebase-signoff-fix later to maint).
* An earlier update to Git for Windows declared that a tree object is
invalid if it has a path component with backslash in it, which was
overly strict, which has been corrected. The only protection the
Windows users need is to prevent such path (or any path that their
filesystem cannot check out) from entering the index.
(merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint).
* The code to write split commit-graph file(s) upon fetching computed
bogus value for the parameter used in splitting the resulting
files, which has been corrected.
(merge 63020f175f ds/commit-graph-set-size-mult later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
(merge 8b656572ca sg/commit-graph-usage-fix later to maint).
(merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
(merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
(merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
(merge 270de6acbe en/t6024-style later to maint).
(merge 14c4776d75 ns/test-desc-typofix later to maint).
(merge 68d40f30c4 dj/typofix-merge-strat later to maint).
(merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
(merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
(merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
(merge b018719927 ma/t7004 later to maint).
(merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
(merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
(merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
(merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
(merge 2a02262078 dl/t5520-cleanup later to maint).
(merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
(merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
(merge 3eae30e464 jk/lore-is-the-archive later to maint).
(merge 14b7664df8 dl/lore-is-the-archive later to maint).
(merge 0e40a73a4c po/bundle-doc-clonable later to maint).
(merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
(merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
(merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
(merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
(merge 11de8dd7ef dr/branch-usage-casefix later to maint).
(merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
(merge 147ee35558 rs/commit-export-env-simplify later to maint).
(merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
(merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
(merge cc2bd5c45d pb/submodule-doc-xref later to maint).
(merge df5be01669 ja/doc-markup-cleanup later to maint).
(merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
(merge 20a67e8ce9 js/use-test-tool-on-path later to maint).
(merge 4e61b2214d ew/packfile-syscall-optim later to maint).
(merge ace0f86c7f pb/clarify-line-log-doc later to maint).
(merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint).
(merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint).
(merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint).
(merge f8740c586b pm/am-in-body-header-doc-update later to maint).
(merge 5814d44d9b tm/doc-submodule-absorb-fix later to maint).
----------------------------------------------------------------
Changes since v2.24.1 are as follows:
Alban Gruin (6):
sequencer: update `total_nr' when adding an item to a todo list
sequencer: update `done_nr' when skipping commands in a todo list
sequencer: move the code writing total_nr on the disk to a new function
rebase: fill `squash_onto' in get_replay_opts()
sequencer: directly call pick_commits() from complete_action()
sequencer: fix a memory leak in sequencer_continue()
Alexandr Miloslavskiy (14):
parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
pathspec: add new function to parse file
doc: reset: synchronize <pathspec> description
reset: support the `--pathspec-from-file` option
doc: commit: synchronize <pathspec> description
commit: support the --pathspec-from-file option
cmd_add: prepare for next patch
add: support the --pathspec-from-file option
doc: checkout: remove duplicate synopsis
doc: checkout: fix broken text reference
doc: checkout: synchronize <pathspec> description
doc: restore: synchronize <pathspec> description
checkout, restore: support the --pathspec-from-file option
commit: forbid --pathspec-from-file --all
Andreas Schwab (1):
t7812: add missing redirects
Andrei Rybak (1):
INSTALL: use existing shell scripts as example
Ben Keene (2):
git-p4: yes/no prompts should sanitize user text
git-p4: show detailed help when parsing options fail
Colin Stolley (1):
packfile.c: speed up loading lots of packfiles
Daniel Ferreira (2):
diff: export diffstat interface
built-in add -i: implement the `status` command
Denis Ovsienko (1):
gitweb: fix a couple spelling errors in comments
Denton Liu (93):
format-patch: replace erroneous and condition
format-patch: use enum variables
format-patch: teach --cover-from-description option
rebase: hide --preserve-merges option
t4108: replace create_file with test_write_lines
t4108: remove git command upstream of pipe
t4108: use `test_config` instead of `git config`
t4108: demonstrate bug in apply
apply: respect merge.conflictStyle in --3way
submodule: teach set-url subcommand
git-diff.txt: document return code of `--no-index`
completion: learn to complete `git rebase --onto=`
t4215: use helper function to check output
argv-array: add space after `while`
rev-list-options.txt: remove reference to --show-notes
SubmittingPatches: use generic terms for hash
pretty-formats.txt: use generic terms for hash
SubmittingPatches: remove dq from commit reference
completion: complete `tformat:` pretty format
revision: make get_revision_mark() return const pointer
pretty.c: inline initalize format_context
t4205: cover `git log --reflog -z` blindspot
pretty: add struct cmt_fmt_map::default_date_mode_type
pretty: implement 'reference' format
SubmittingPatches: use `--pretty=reference`
pretty-options.txt: --notes accepts a ref instead of treeish
t3206: remove spaces after redirect operators
t3206: disable parameter substitution in heredoc
t3206: s/expected/expect/
t3206: range-diff compares logs with commit notes
range-diff: output `## Notes ##` header
range-diff: pass through --notes to `git log`
format-patch: pass notes configuration to range-diff
t0000: test multiple local assignment
t: teach test_cmp_rev to accept ! for not-equals
t5520: improve test style
t5520: use sq for test case names
t5520: let sed open its own input
t5520: replace test -f with test-lib functions
t5520: remove spaces after redirect operator
t5520: use test_line_count where possible
t5520: replace test -{n,z} with test-lib functions
t5520: use test_cmp_rev where possible
t5520: test single-line files by git with test_cmp
t5520: don't put git in upstream of pipe
t5520: replace $(cat ...) comparison with test_cmp
t5520: remove redundant lines in test cases
t5520: replace `! git` with `test_must_fail git`
lib-bash.sh: move `then` onto its own line
apply-one-time-sed.sh: modernize style
t0014: remove git command upstream of pipe
t0090: stop losing return codes of git commands
t3301: stop losing return codes of git commands
t3600: use test_line_count() where possible
t3600: stop losing return codes of git commands
t3600: comment on inducing SIGPIPE in `git rm`
t4015: stop losing return codes of git commands
t4015: use test_write_lines()
t4138: stop losing return codes of git commands
t5317: stop losing return codes of git commands
t5317: use ! grep to check for no matching lines
t5703: simplify one-time-sed generation logic
t5703: stop losing return codes of git commands
t7501: remove spaces after redirect operators
t7501: stop losing return codes of git commands
t7700: drop redirections to /dev/null
t7700: remove spaces after redirect operators
t7700: move keywords onto their own line
t7700: s/test -f/test_path_is_file/
doc: replace MARC links with lore.kernel.org
RelNotes: replace Gmane with real Message-IDs
doc: replace LKML link with lore.kernel.org
t7700: consolidate code into test_no_missing_in_packs()
t7700: consolidate code into test_has_duplicate_object()
t7700: replace egrep with grep
t7700: make references to SHA-1 generic
t7700: stop losing return codes of git commands
t3400: demonstrate failure with format.useAutoBase
format-patch: fix indentation
t4014: use test_config()
format-patch: teach --no-base
rebase: fix format.useAutoBase breakage
t3206: fix incorrect test name
range-diff: mark pointers as const
range-diff: clear `other_arg` at end of function
notes: rename to load_display_notes()
notes: create init_display_notes() helper
notes: extract logic into set_display_notes()
format-patch: use --notes behavior for format.notes
format-patch: move git_config() before repo_init_revisions()
config/format.txt: clarify behavior of multiple format.notes
notes: break set_display_notes() into smaller functions
notes.h: fix typos in comment
Derrick Stolee (28):
test-tool: use 'read-graph' helper
sparse-checkout: create builtin with 'list' subcommand
sparse-checkout: create 'init' subcommand
clone: add --sparse mode
sparse-checkout: 'set' subcommand
sparse-checkout: add '--stdin' option to set subcommand
sparse-checkout: create 'disable' subcommand
sparse-checkout: add 'cone' mode
sparse-checkout: use hashmaps for cone patterns
sparse-checkout: init and set in cone mode
unpack-trees: hash less in cone mode
unpack-trees: add progress to clear_ce_flags()
sparse-checkout: sanitize for nested folders
sparse-checkout: update working directory in-process
sparse-checkout: use in-process update for disable subcommand
sparse-checkout: write using lockfile
sparse-checkout: cone mode should not interact with .gitignore
sparse-checkout: update working directory in-process for 'init'
sparse-checkout: check for dirty status
progress: create GIT_PROGRESS_DELAY
commit-graph: use start_delayed_progress()
sparse-checkout: respect core.ignoreCase in cone mode
sparse-checkout: list directories in cone mode
sparse-checkout: document interactions with submodules
sparse-checkout: use extern for global variables
commit-graph: prefer default size_mult when given zero
graph: drop assert() for merge with two collapsing parents
graph: fix lack of color in horizontal lines
Dimitriy Ryazantcev (1):
l10n: minor case fix in 'git branch' '--unset-upstream' description
Dominic Jäger (1):
merge-strategies: fix typo "reflected to" to "reflected in"
Ed Maste (4):
t4210: skip i18n tests that don't work on FreeBSD
userdiff: remove empty subexpression from elixir regex
CI: add FreeBSD CI support via Cirrus-CI
sparse-checkout: improve OS ls compatibility
Elia Pinto (1):
kset.h, tar.h: add missing header guard to prevent multiple inclusion
Elijah Newren (28):
merge-recursive: clean up get_renamed_dir_portion()
merge-recursive: fix merging a subdirectory into the root directory
t604[236]: do not run setup in separate tests
Documentation: fix a bunch of typos, both old and new
Fix spelling errors in documentation outside of Documentation/
git-filter-branch.txt: correct argument name typo
hashmap: fix documentation misuses of -> versus .
name-hash.c: remove duplicate word in comment
t6024: modernize style
Fix spelling errors in code comments
Fix spelling errors in comments of testcases
Fix spelling errors in names of tests
Fix spelling errors in messages shown to users
Fix spelling errors in test commands
sha1dc: fix trivial comment spelling error
multimail: fix a few simple spelling errors
Fix spelling errors in no-longer-updated-from-upstream modules
t3011: demonstrate directory traversal failures
Revert "dir.c: make 'git-status --ignored' work within leading directories"
dir: remove stray quote character in comment
dir: exit before wildcard fall-through if there is no wildcard
dir: break part of read_directory_recursive() out for reuse
t3434: mark successful test as such
dir: fix checks on common prefix directory
dir: synchronize treat_leading_path() and read_directory_recursive()
dir: consolidate similar code in treat_directory()
rebase: fix saving of --signoff state for am-based rebases
merge-recursive: remove unnecessary oid_eq function
Emily Shaffer (4):
documentation: add tutorial for object walking
myfirstcontrib: add 'psuh' to command-list.txt
myfirstcontrib: add dependency installation step
myfirstcontrib: hint to find gitgitgadget allower
Eric Wong (2):
packfile: remove redundant fcntl F_GETFD/F_SETFD
packfile: replace lseek+read with pread
Erik Chen (1):
fetch: add trace2 instrumentation
Hans Jerry Illikainen (4):
gpg-interface: refactor the free-and-xmemdupz pattern
gpg-interface: limit search for primary key fingerprint
gpg-interface: prefer check_signature() for GPG verification
grep: don't return an expression from pcre2_free()
Hariom Verma (2):
builtin/blame.c: constants into bit shift format
git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
Heba Waly (22):
config: move documentation to config.h
documentation: remove empty doc files
diff: move doc to diff.h and diffcore.h
dir: move doc to dir.h
graph: move doc to graph.h and graph.c
merge: move doc to ll-merge.h
sha1-array: move doc to sha1-array.h
remote: move doc to remote.h and refspec.h
refs: move doc to refs.h
attr: move doc to attr.h
revision: move doc to revision.h
pathspec: move doc to pathspec.h
sigchain: move doc to sigchain.h
cache: move doc to cache.h
argv-array: move doc to argv-array.h
credential: move doc to credential.h
parse-options: add link to doc file in parse-options.h
run-command: move doc to run-command.h
trace: move doc to trace.h
tree-walk: move doc to tree-walk.h
submodule-config: move doc to submodule-config.h
trace2: move doc to trace2.h
James Coglan (13):
graph: automatically track display width of graph lines
graph: handle line padding in `graph_next_line()`
graph: reuse `find_new_column_by_commit()`
graph: reduce duplication in `graph_insert_into_new_columns()`
graph: remove `mapping_idx` and `graph_update_width()`
graph: extract logic for moving to GRAPH_PRE_COMMIT state
graph: example of graph output that can be simplified
graph: tidy up display of left-skewed merges
graph: commit and post-merge lines for left-skewed merges
graph: rename `new_mapping` to `old_mapping`
graph: smooth appearance of collapsing edges on commit lines
graph: flatten edges that fuse with their right neighbor
graph: fix coloring of octopus dashes
James Shubin (1):
completion: tab-complete "git svn --recursive"
Jean-Noël Avila (2):
doc: remove non pure ASCII characters
doc: indent multi-line items in list
Jeff Hostetler (1):
trace2: add region in clear_ce_flags
Jeff King (37):
parse_commit_buffer(): treat lookup_commit() failure as parse error
parse_commit_buffer(): treat lookup_tree() failure as parse error
parse_tag_buffer(): treat NULL tag pointer as parse error
commit, tag: don't set parsed bit for parse failures
fsck: stop checking commit->tree value
fsck: stop checking commit->parent counts
fsck: stop checking tag->tagged
fsck: require an actual buffer for non-blobs
fsck: unify object-name code
fsck_describe_object(): build on our get_object_name() primitive
fsck: use oids rather than objects for object_name API
fsck: don't require object structs for display functions
fsck: only provide oid/type in fsck_error callback
fsck: only require an oid for skiplist functions
fsck: don't require an object struct for report()
fsck: accept an oid instead of a "struct blob" for fsck_blob()
fsck: drop blob struct from fsck_finish()
fsck: don't require an object struct for fsck_ident()
fsck: don't require an object struct in verify_headers()
fsck: rename vague "oid" local variables
fsck: accept an oid instead of a "struct tag" for fsck_tag()
fsck: accept an oid instead of a "struct commit" for fsck_commit()
fsck: accept an oid instead of a "struct tree" for fsck_tree()
hex: drop sha1_to_hex_r()
pack-objects: avoid pointless oe_map_new_pack() calls
hex: drop sha1_to_hex()
send-pack: check remote ref status on pack-objects failure
t9502: pass along all arguments in xss helper
t/gitweb-lib.sh: drop confusing quotes
t/gitweb-lib.sh: set $REQUEST_URI
gitweb: escape URLs generated by href()
rev-parse: make --show-toplevel without a worktree an error
perf-lib: use a single filename for all measurement types
t/perf: don't depend on Git.pm
send-pack: use OBJECT_INFO_QUICK to check negative objects
doc: recommend lore.kernel.org over public-inbox.org
doc: replace public-inbox links with lore.kernel.org
Johannes Berg (1):
multi-pack-index: correct configuration in documentation
Johannes Schindelin (60):
t1400: wrap setup code in test case
git_path(): handle `.lock` files correctly
vreportf(): avoid relying on stdio buffering
update-index: optionally leave skip-worktree entries alone
stash: handle staged changes in skip-worktree files correctly
fetch: add the command-line option `--write-commit-graph`
fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
remote-curl: unbreak http.extraHeader with custom allocators
Start to implement a built-in version of `git add --interactive`
built-in add -i: implement the main loop
built-in add -i: show unique prefixes of the commands
built-in add -i: support `?` (prompt help)
rebase-merges: move labels' whitespace mangling into `label_oid()`
git svn: stop using `rebase --preserve-merges`
mingw: demonstrate that all file handles are inherited by child processes
mingw: work around incorrect standard handles
mingw: spawned processes need to inherit only standard handles
mingw: restrict file handle inheritance only on Windows 7 and later
mingw: do set `errno` correctly when trying to restrict handle inheritance
add-interactive: make sure to release `rev.prune_data`
built-in add -i: allow filtering the modified files list
built-in add -i: prepare for multi-selection commands
built-in add -i: implement the `update` command
built-in add -i: re-implement `revert` in C
built-in add -i: re-implement `add-untracked` in C
built-in add -i: implement the `patch` command
built-in add -i: re-implement the `diff` command
built-in add -i: offer the `quit` command
pkt-line: fix a typo
mingw: forbid translating ERROR_SUCCESS to an errno value
t3701: add a test for advanced split-hunk editing
t3701: avoid depending on the TTY prerequisite
t3701: add a test for the different `add -p` prompts
t3701: verify the shown messages when nothing can be added
t3701: verify that the diff.algorithm config setting is handled
git add -p: use non-zero exit code when the diff generation failed
apply --allow-overlap: fix a corner case
t3404: fix indentation
built-in add -i: start implementing the `patch` functionality in C
built-in add -i: wire up the new C code for the `patch` command
built-in add -p: show colored hunks by default
built-in add -p: adjust hunk headers as needed
built-in add -p: color the prompt and the help text
built-in add -p: offer a helpful error message when hunk navigation failed
built-in add -p: support multi-file diffs
built-in add -p: handle deleted empty files
built-in app -p: allow selecting a mode change as a "hunk"
built-in add -p: show different prompts for mode changes and deletions
built-in add -p: implement the hunk splitting feature
built-in add -p: coalesce hunks after splitting them
strbuf: add a helper function to call the editor "on an strbuf"
built-in add -p: implement hunk editing
built-in add -p: implement the 'g' ("goto") command
built-in add -p: implement the '/' ("search regex") command
built-in add -p: implement the 'q' ("quit") command
built-in add -p: only show the applicable parts of the help text
built-in add -p: show helpful hint when nothing can be staged
mingw: short-circuit the conversion of `/dev/null` to UTF-16
mingw: refuse paths containing reserved names
mingw: only test index entries for backslashes, not tree entries
Johannes Sixt (1):
t3008: find test-tool through path lookup
Jonathan Gilbert (3):
git-gui: consolidate naming conventions
git-gui: update status bar to track operations
git-gui: revert untracked files by deleting them
Jonathan Tan (6):
fetch-pack: write fetched refs to .promisor
fetch: remove fetch_if_missing=0
clone: remove fetch_if_missing=0
promisor-remote: remove fetch_if_missing=0
Doc: explain submodule.alternateErrorStrategy
submodule--helper: advise on fatal alternate error
Josh Holland (1):
userdiff: support Python async functions
Junio C Hamano (17):
doc: am --show-current-patch gives an entire e-mail message
The first batch post 2.24 cycle
fsmonitor: do not compare bitmap size with size of split index
ci(osx): update homebrew-cask repository with less noise
rebase -i: finishing touches to --reset-author-date
The second batch
The third batch
The fourth batch
The fifth batch
Makefile: drop GEN_HDRS
The sixth batch
dir.c: use st_add3() for allocation size
Git 2.25-rc0
mailmap: mask accentless variant for Công Danh
Git 2.25-rc1
The final batch before -rc2
Git 2.25-rc2
Kazuhiro Kato (1):
git gui: fix branch name encoding error
Kevin Willford (1):
fsmonitor: fix watchman integration
Manish Goregaokar (2):
doc: document 'git submodule status --cached'
submodule: fix 'submodule status' when called from a subdirectory
Martin Ågren (1):
t7004: check existence of correct tag
Matthew Rogers (1):
rebase -r: let `label` generate safer labels
Mihail Atanassov (1):
Documentation/git-bisect.txt: add --no-ff to merge command
Mike Hommey (2):
revision: clear the topo-walk flags in reset_revision_walk
revision: free topo_walk_info before creating a new one in init_topo_walk
Miriam Rubio (1):
clone: rename static function `dir_exists()`.
Nathan Stocks (1):
t: fix typo in test descriptions
Naveen Nathan (1):
doc: improve readability of --rebase-merges in git-rebase
Nika Layzell (1):
reset: parse rev as tree-ish in patch mode
Paul Menzel (1):
am: document that Date: can appear as an in-body header
Philip Oakley (1):
Doc: Bundle file usage
Philippe Blain (6):
help: add gitsubmodules to the list of guides
worktree: teach "add" to ignore submodule.recurse config
doc: mention that 'git submodule update' fetches missing commits
gitmodules: link to gitsubmodules guide
doc: log, gitk: document accepted line-log diff formats
doc: log, gitk: line-log arguments must exist in starting revision
Phillip Wood (7):
t3404: remove unnecessary subshell
t3404: set $EDITOR in subshell
t3404: remove uneeded calls to set_fake_editor
sequencer.h fix placement of #endif
move run_commit_hook() to libgit and use it there
sequencer: run post-commit hook
sequencer: fix empty commit check when amending
Prarit Bhargava (3):
t6006: use test-lib.sh definitions
t4203: use test-lib.sh definitions
pretty: add "%aL" etc. to show local-part of email addresses
Pratyush Yadav (2):
git-shortlog.txt: include commit limiting options
git-gui: allow closing console window with Escape
Ralf Thielow (1):
fetch.c: fix typo in a warning message
René Scharfe (32):
trace2: add dots directly to strbuf in perf_fmt_prepare()
utf8: use skip_iprefix() in same_utf_encoding()
convert: use skip_iprefix() in validate_encoding()
mingw: use COPY_ARRAY for copying array
parse-options: avoid arithmetic on pointer that's potentially NULL
pretty: provide short date format
fetch: use skip_prefix() instead of starts_with()
fmt-merge-msg: use skip_prefix() instead of starts_with()
shell: use skip_prefix() instead of starts_with()
push: use skip_prefix() instead of starts_with()
name-rev: use skip_prefix() instead of starts_with()
run-command: use prepare_git_cmd() in prepare_cmd()
t1512: use test_line_count
t1410: use test_line_count
t1400: use test_must_be_empty
test: use test_must_be_empty F instead of test -z $(cat F)
test: use test_must_be_empty F instead of test_cmp empty F
t9300: don't create unused file
t7811: don't create unused file
xdiff: unignore changes in function context
name-rev: use strbuf_strip_suffix() in get_rev_name()
commit: use strbuf_add() to add a length-limited string
patch-id: use oid_to_hex() to print multiple object IDs
archive-zip: use enum for compression method
t4256: don't create unused file
t7004: don't create unused file
refs: pass NULL to refs_read_ref_full() because object ID is not needed
remote: pass NULL to read_ref_full() because object ID is not needed
t3501: don't create unused file
t5580: don't create unused file
t6030: don't create unused file
t4015: improve coverage of function context test
Robin H. Johnson (3):
bundle: framework for options before bundle file
bundle-create: progress output control
bundle-verify: add --quiet
Rohit Ashiwal (6):
rebase -i: add --ignore-whitespace flag
sequencer: allow callers of read_author_script() to ignore fields
rebase -i: support --committer-date-is-author-date
sequencer: rename amend_author to author_to_rename
rebase -i: support --ignore-date
rebase: add --reset-author-date
Ruud van Asseldonk (1):
t5150: skip request-pull test if Perl is disabled
SZEDER Gábor (29):
Documentation: mention more worktree-specific exceptions
path.c: clarify trie_find()'s in-code comment
path.c: mark 'logs/HEAD' in 'common_list' as file
path.c: clarify two field names in 'struct common_dir'
path.c: don't call the match function without value in trie_find()
builtin/commit-graph.c: remove subcommand-less usage string
builtin/blame.c: remove '--indent-heuristic' from usage string
test-lib: don't check prereqs of test cases that won't be run anyway
t6120-describe: correct test repo history graph in comment
builtin/unpack-objects.c: show throughput progress
tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
sequencer: don't re-read todo for revert and cherry-pick
test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
ci: build Git with GCC 9 in the 'osx-gcc' build job
t9300-fast-import: store the PID in a variable instead of pidfile
t9300-fast-import: don't hang if background fast-import exits too early
t6120-describe: modernize the 'check_describe' helper
name-rev: avoid unnecessary cast in name_ref()
name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
name-rev: extract creating/updating a 'struct name_rev' into a helper
name-rev: pull out deref handling from the recursion
name-rev: restructure parsing commits and applying date cutoff
name-rev: restructure creating/updating 'struct rev_name' instances
name-rev: drop name_rev()'s 'generation' and 'distance' parameters
name-rev: use 'name->tip_name' instead of 'tip_name'
name-rev: eliminate recursion in name_rev()
name-rev: cleanup name_ref()
Slavica Đukić (3):
built-in add -i: color the header in the `status` command
built-in add -i: use color in the main loop
built-in add -i: implement the `help` command
Tanushree Tumane (2):
bisect--helper: avoid use-after-free
bisect--helper: convert `*_warning` char pointers to char arrays.
Taylor Blau (1):
Documentation/git-sparse-checkout.txt: fix a typo
Thomas Gummerer (1):
stash: make sure we have a valid index before writing it
Thomas Menzel (1):
doc: submodule: fix typo for command absorbgitdirs
Todd Zullinger (1):
t7812: expect failure for grep -i with invalid UTF-8 data
Utsav Shah (1):
unpack-trees: skip stat on fsmonitor-valid files
William Baker (6):
midx: add MIDX_PROGRESS flag
midx: add progress to write_midx_file
midx: add progress to expire_midx_packs
midx: honor the MIDX_PROGRESS flag in verify_midx_file
midx: honor the MIDX_PROGRESS flag in midx_repack
multi-pack-index: add [--[no-]progress] option.
Zoli Szabó (1):
git-gui: allow opening currently selected file in default app
brian m. carlson (16):
t/oid-info: allow looking up hash algorithm name
t/oid-info: add empty tree and empty blob values
rev-parse: add a --show-object-format option
t1305: avoid comparing extensions
t3429: remove SHA1 annotation
t4010: abstract away SHA-1-specific constants
t4011: abstract away SHA-1-specific constants
t4015: abstract away SHA-1-specific constants
t4027: make hash-size independent
t4034: abstract away SHA-1-specific constants
t4038: abstract away SHA-1 specific constants
t4039: abstract away SHA-1-specific constants
t4044: update test to work with SHA-256
t4045: make hash-size independent
t4048: abstract away SHA-1-specific constants
t9001: avoid including non-trailing NUL bytes in variables
r.burenkov (1):
git-p4: honor lfs.storage configuration variable
ryenus (1):
fix-typo: consecutive-word duplications
Đoàn Trần Công Danh (14):
t3301: test diagnose messages for too few/many paramters
notes: fix minimum number of parameters to "copy" subcommand
t0028: eliminate non-standard usage of printf
configure.ac: define ICONV_OMITS_BOM if necessary
t3900: demonstrate git-rebase problem with multi encoding
sequencer: reencode to utf-8 before arrange rebase's todo list
sequencer: reencode revert/cherry-pick's todo list
sequencer: reencode squashing commit's message
sequencer: reencode old merge-commit message
sequencer: reencode commit message for am/rebase --show-current-patch
sequencer: handle rebase-merges for "onto" message
date.c: switch to reentrant {gm,local}time_r
archive-zip.c: switch to reentrant localtime_r
mingw: use {gm,local}time_s as backend for {gm,local}time_r
Łukasz Niemier (1):
userdiff: add Elixir to supported userdiff languages
^ permalink raw reply
* Unreliable 'git rebase --onto'
From: Eugeniu Rosca @ 2020-01-08 21:43 UTC (permalink / raw)
To: gitster, peff, avarab, git; +Cc: Eugeniu Rosca, Eugeniu Rosca
Hello Git community,
Below is a simple reproduction scenario for what looks to be a bug (?)
in 'git rebase --onto' (v2.25.0-rc1-19-g042ed3e048af).
I would appreciate your confirmation of the misbehavior.
If the behavior is correct/expected, I would appreciate some feedback
how to avoid it in future, since it occurs with the default parameters.
1. git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2. ### Cherry pick an upstream commit, to contrast the results with
'git rebase --onto':
$ git checkout -b v4.18-cherry-pick v4.18
$ git cherry-pick 463fa44eec2fef50
Auto-merging drivers/input/touchscreen/atmel_mxt_ts.c
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 7216 and retry the command.
[v4.18-cherry-pick bd142b45bf3a] Input: atmel_mxt_ts - disable IRQ across suspend
Author: Evan Green <evgreen@chromium.org>
Date: Wed Oct 2 14:00:21 2019 -0700
1 file changed, 4 insertions(+)
3. ### In spite of the warning, the result matches the original commit:
$ vimdiff <(git show 463fa44eec2fef50) <(git show v4.18-cherry-pick)
4. ### Now, backport the same commit via 'git rebase --onto'
$ git rebase --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50
First, rewinding head to replay your work on top of it...
Applying: Input: atmel_mxt_ts - disable IRQ across suspend
5. ### The result is different:
$ git branch v4.18-rebase-onto
$ git diff v4.18-cherry-pick v4.18-rebase-onto
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index b45958e89cc5..2345b587662b 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -3139,8 +3139,6 @@ static int __maybe_unused mxt_suspend(struct device *dev)
mutex_unlock(&input_dev->mutex);
- disable_irq(data->irq);
-
return 0;
}
@@ -3162,6 +3160,8 @@ static int __maybe_unused mxt_resume(struct device *dev)
mutex_unlock(&input_dev->mutex);
+ disable_irq(data->irq);
+
return 0;
}
In a nutshell, purely from user's perspective:
- I get a warning from 'git cherry pick', with perfect results
- I get no warning from 'git rebase --onto', with wrong results
Does git still behave expectedly? TIA!
--
Best Regards,
Eugeniu
^ permalink raw reply related
* Re: [PATCH] submodule add: show 'add --dry-run' stderr when aborting
From: Josh Steadmon @ 2020-01-08 21:41 UTC (permalink / raw)
To: Kyle Meyer; +Cc: git, Yaroslav O Halchenko
In-Reply-To: <20200108003121.28034-1-kyle@kyleam.com>
On 2020.01.07 19:31, Kyle Meyer wrote:
> Unless --force is specified, 'submodule add' checks if the destination
> path is ignored by calling 'git add --dry-run --ignore-missing', and,
> if that call fails, aborts with a custom "path is ignored" message (a
> slight variant of what 'git add' shows). Aborting early rather than
> letting the downstream 'git add' call fail is done so that the command
> exits before cloning into the destination path. However, in rare
> cases where the dry-run call fails for a reason other than the path
> being ignored---for example, due to a preexisting index.lock
> file---displaying the "ignored path" error message hides the real
> source of the failure.
>
> Instead of displaying the tailored "ignored path" message, let's
> report the standard error from the dry run to give the caller more
> accurate information about failures that are not due to an ignored
> path.
>
> For the ignored path case, this leads to the following change in the
> error message:
>
> The following [-path is-]{+paths are+} ignored by one of your .gitignore files:
> <destination path>
> Use -f if you really want to add [-it.-]{+them.+}
>
> The new phrasing is a bit awkward, because 'submodule add' is only
> dealing with one destination path. Alternatively, we could continue
> to use the tailored message when the exit code is 1 (the expected
> status for a failure due to an ignored path) and relay the standard
> error for all other non-zero exits. That, however, risks hiding the
> message of unrelated failures that share an exit code of 1, so it
> doesn't seem worth doing just to avoid a clunkier, but still clear,
> error message.
>
> Signed-off-by: Kyle Meyer <kyle@kyleam.com>
> ---
> git-submodule.sh | 14 ++++++++------
> t/t7400-submodule-basic.sh | 15 +++++++++++++--
> 2 files changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/git-submodule.sh b/git-submodule.sh
> index aaa1809d24..afcb4c0948 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -241,13 +241,15 @@ cmd_add()
> die "$(eval_gettext "'\$sm_path' does not have a commit checked out")"
> fi
>
> - if test -z "$force" &&
> - ! git add --dry-run --ignore-missing --no-warn-embedded-repo "$sm_path" > /dev/null 2>&1
> + if test -z "$force"
> then
> - eval_gettextln "The following path is ignored by one of your .gitignore files:
> -\$sm_path
> -Use -f if you really want to add it." >&2
> - exit 1
> + dryerr=$(git add --dry-run --ignore-missing --no-warn-embedded-repo "$sm_path" 2>&1 >/dev/null)
> + res=$?
> + if test $res -ne 0
> + then
> + echo >&2 "$dryerr"
> + exit $res
> + fi
> fi
>
> if test -n "$custom_name"
Seems reasonable: we move the dry-run add inside the if block, and
capture its stderr, then display the message only if the return code is
non-zero.
> diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
> index 7f75bb1be6..42a00f95b9 100755
> --- a/t/t7400-submodule-basic.sh
> +++ b/t/t7400-submodule-basic.sh
> @@ -156,9 +156,9 @@ test_expect_success 'submodule add to .gitignored path fails' '
> (
> cd addtest-ignore &&
> cat <<-\EOF >expect &&
> - The following path is ignored by one of your .gitignore files:
> + The following paths are ignored by one of your .gitignore files:
> submod
> - Use -f if you really want to add it.
> + Use -f if you really want to add them.
> EOF
> # Does not use test_commit due to the ignore
> echo "*" > .gitignore &&
> @@ -191,6 +191,17 @@ test_expect_success 'submodule add to reconfigure existing submodule with --forc
> )
> '
>
> +test_expect_success 'submodule add relays add --dry-run stderr' '
> + test_when_finished "rm -rf addtest/.git/index.lock" &&
> + (
> + cd addtest &&
> + : >.git/index.lock &&
> + ! git submodule add "$submodurl" sub-while-locked 2>output.err &&
> + test_i18ngrep "^fatal: .*index\.lock" output.err &&
> + test_path_is_missing sub-while-locked
> + )
> +'
> +
> test_expect_success 'submodule add --branch' '
> echo "refs/heads/initial" >expect-head &&
> cat <<-\EOF >expect-heads &&
I had to look up what ":" does, but it looks like it's reasonably widely
used in other tests so that seems fine. However, it looks like you don't
even need the : command and can just ">.git/index.lock" by itself (see
the "setup - initial commit" test case in this file for an example).
> base-commit: 042ed3e048af08014487d19196984347e3be7d1c
> --
> 2.24.1
>
Looks good to me. Thanks for the patch!
^ permalink raw reply
* Re: [PATCH] config/advice.txt: fix description list separator
From: Junio C Hamano @ 2020-01-08 21:16 UTC (permalink / raw)
To: Martin Ågren; +Cc: git, Jonathan Tan
In-Reply-To: <20200108200844.30803-1-martin.agren@gmail.com>
Martin Ågren <martin.agren@gmail.com> writes:
> The whole submoduleAlternateErrorStrategyDie item is interpreted as
> being part of the supporting content of the preceding item. This is
> because we don't give a double-colon "::" for the separator, but just a
> single colon, ":". Let's fix that.
>
> There are a few other matches for [^:]:\s*$ in Documentation/config, but
> I didn't spot any similar bugs among them.
>
> Signed-off-by: Martin Ågren <martin.agren@gmail.com>
> ---
> This was the only thing that stood out at me while going through
> `./doc-diff v2.24.0 origin/master`. This is obviously a non-critical,
> purely cosmetic issue.
Thanks. It still is a new bug introduced by a recent change, so I
am tempted to include it in the final but it is a bit too late for
the -rc2 I planned to tag today.
>
> Documentation/config/advice.txt | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt
> index d4e698cd3f..4be93f8ad9 100644
> --- a/Documentation/config/advice.txt
> +++ b/Documentation/config/advice.txt
> @@ -107,7 +107,7 @@ advice.*::
> editor input from the user.
> nestedTag::
> Advice shown if a user attempts to recursively tag a tag object.
> - submoduleAlternateErrorStrategyDie:
> + submoduleAlternateErrorStrategyDie::
> Advice shown when a submodule.alternateErrorStrategy option
> configured to "die" causes a fatal error.
> --
^ permalink raw reply
* Re: [PATCH 0/2] Graph horizontal fix
From: Junio C Hamano @ 2020-01-08 21:06 UTC (permalink / raw)
To: Derrick Stolee
Cc: Derrick Stolee via GitGitGadget, git, peff, jcoglan,
Derrick Stolee
In-Reply-To: <c69afbe7-3a9c-0619-594f-f5ba980ae7b8@gmail.com>
Derrick Stolee <stolee@gmail.com> writes:
> I guess I was incomplete in my first example. The full horizontal behavior
> before 0f0f389f was
> ...
> This change brings the horizontal lines back.
Ah, I see. That was what you meant by regression-and-fix.
Thanks.
^ permalink raw reply
* Re: [RFC PATCH] unpack-trees: watch for out-of-range index position
From: Junio C Hamano @ 2020-01-08 20:35 UTC (permalink / raw)
To: Emily Shaffer; +Cc: Jeff King, git
In-Reply-To: <20200108193833.GD181522@google.com>
Emily Shaffer <emilyshaffer@google.com> writes:
>> > The new condition you added looks correct to me. I suspect this BUG()
>> > should not be a BUG() at all, though. It's not necessarily a logic error
>> > inside Git, but as you showed it could indicate corrupt data we read
>> > from disk. The true is probably same of the "pos >= 0" condition checked
>> > above.
>>
>> It does not sound like a BUG to me, either, but the new condition
>> does look correct to me, too. We can turn it into die() later if
>> somebody truly cares ;-)
>>
>> Thanks, both. Will queue.
>
> Thanks much for the quick turnaround. If I hear more noise I'll give it
> a try with die() or error code instead, but for now I'll move on to the
> next bug on my list. :)
By the way, it is somewhat sad that we proceeded that far in the
first place---such a corrupt on-disk index would have caused an
early die() if we did not get rid of the trailing-hash integrity
check.
^ permalink raw reply
* [PATCH] config/advice.txt: fix description list separator
From: Martin Ågren @ 2020-01-08 20:08 UTC (permalink / raw)
To: git; +Cc: Jonathan Tan
The whole submoduleAlternateErrorStrategyDie item is interpreted as
being part of the supporting content of the preceding item. This is
because we don't give a double-colon "::" for the separator, but just a
single colon, ":". Let's fix that.
There are a few other matches for [^:]:\s*$ in Documentation/config, but
I didn't spot any similar bugs among them.
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
---
This was the only thing that stood out at me while going through
`./doc-diff v2.24.0 origin/master`. This is obviously a non-critical,
purely cosmetic issue.
Documentation/config/advice.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt
index d4e698cd3f..4be93f8ad9 100644
--- a/Documentation/config/advice.txt
+++ b/Documentation/config/advice.txt
@@ -107,7 +107,7 @@ advice.*::
editor input from the user.
nestedTag::
Advice shown if a user attempts to recursively tag a tag object.
- submoduleAlternateErrorStrategyDie:
+ submoduleAlternateErrorStrategyDie::
Advice shown when a submodule.alternateErrorStrategy option
configured to "die" causes a fatal error.
--
--
2.25.0.rc1.19.g042ed3e048
^ permalink raw reply related
* Re: [PATCH 0/2] Graph horizontal fix
From: Derrick Stolee @ 2020-01-08 20:05 UTC (permalink / raw)
To: Junio C Hamano, Derrick Stolee via GitGitGadget
Cc: git, peff, jcoglan, Derrick Stolee
In-Reply-To: <xmqq5zhl3jrm.fsf@gitster-ct.c.googlers.com>
On 1/8/2020 1:06 PM, Junio C Hamano wrote:
> "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
>> This depends on ds/graph-assert-fix.
>>
>> This is a non-critical (not needed for v2.25.0) response to the previous
>> discussions [1] [2].
>>
>> While working to resolve the fix for the assert() bug, I noticed this
>> regression when multiple edges wanted to collapse with horizontal lines. It
>> takes a reasonably large graph, but real projects are likely to demonstrate
>> this behavior.
>>
>> I arranged the series into two patches: 1. the (failing) test, and 2. the
>> fix.
>>
>> The fix commit includes some details about why the change to compress merge
>> commits caused this regression, and why I feel relatively confident that
>> this is a correct resolution.
>
> I am not sure if this is "fix" of "bug" in that what is shown
> without 2/2 (iow, "before this change" in the description of 2/2) is
> "wrong" per-se---it is just that it leaves room to be made even more
> compact. It still is an improvement, of course, though.
I guess I was incomplete in my first example. The full horizontal behavior
before 0f0f389f was
| | | | | | *-.
| | | | | | |\ \
| |_|_|_|_|/ | |
|/| | | | | / /
| | |_|_|_|/ /
| |/| | | | /
| | | |_|_|/
| | |/| | |
and 0f0f389f added a compact merge commit, but lost two horizontal lines.
| | | | | | *
| |_|_|_|_|/|\
|/| | | | |/ /
| | | | |/| /
| | | |/| |/
| | |/| |/|
| |/| |/| |
| | |/| | |
This change brings the horizontal lines back.
| | | | | | *
| |_|_|_|_|/|\
|/| | | | |/ /
| | |_|_|/| /
| |/| | | |/
| | | |_|/|
| | |/| | |
Whether this qualifies as a "bug" is debatable, for sure. That's why I
believe this change is below the bar for the release candidate.
Thanks,
-Stolee
^ permalink raw reply
* Re: [RFC PATCH] unpack-trees: watch for out-of-range index position
From: Emily Shaffer @ 2020-01-08 19:38 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, git
In-Reply-To: <xmqqeew93lfn.fsf@gitster-ct.c.googlers.com>
On Wed, Jan 08, 2020 at 09:30:36AM -0800, Junio C Hamano wrote:
> Jeff King <peff@peff.net> writes:
>
> > On Tue, Jan 07, 2020 at 06:31:27PM -0800, Emily Shaffer wrote:
> >
> >> This issue came in via a bugreport from a user who had done some nasty
> >> things like deleting various files in .git/ (and then couldn't remember
> >> how they had done it). The concern was primarily that a segfault is ugly
> >> and scary, and possibly dangerous; I didn't see much problem with
> >> checking for index-out-of-range if the result is a fatal error
> >> regardless.
> >>
> >> [...]
> >> if (pos >= 0)
> >> BUG("This is a directory and should not exist in index");
> >> pos = -pos - 1;
> >> - if (!starts_with(o->src_index->cache[pos]->name, name.buf) ||
> >> + if (pos >= o->src_index->cache_nr ||
> >> + !starts_with(o->src_index->cache[pos]->name, name.buf) ||
> >> (pos > 0 && starts_with(o->src_index->cache[pos-1]->name, name.buf)))
> >> - BUG("pos must point at the first entry in this directory");
> >> + BUG("pos %d doesn't point to the first entry of %s in index",
> >> + pos, name.buf);
> >
> > The new condition you added looks correct to me. I suspect this BUG()
> > should not be a BUG() at all, though. It's not necessarily a logic error
> > inside Git, but as you showed it could indicate corrupt data we read
> > from disk. The true is probably same of the "pos >= 0" condition checked
> > above.
>
> It does not sound like a BUG to me, either, but the new condition
> does look correct to me, too. We can turn it into die() later if
> somebody truly cares ;-)
>
> Thanks, both. Will queue.
Thanks much for the quick turnaround. If I hear more noise I'll give it
a try with die() or error code instead, but for now I'll move on to the
next bug on my list. :)
- Emily
^ permalink raw reply
* Re: [PATCH v2 1/1] branch: advise the user to checkout a different branch before deleting
From: Junio C Hamano @ 2020-01-08 19:15 UTC (permalink / raw)
To: Johannes Schindelin
Cc: Heba Waly, Eric Sunshine, Heba Waly via GitGitGadget, Git List,
Emily Shaffer
In-Reply-To: <nycvar.QRO.7.76.6.2001081945490.46@tvgsbejvaqbjf.bet>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> This is the first time I hear about anybody wanting to disable any advice
> ...
> I don't really think that this is desired, though.
Me neither. We seem to have come up with more-or-less the same
illustration, but such a global "turn all off" needs to be explained
very well before we let users blindly use it, I think.
^ permalink raw reply
* Re: [PATCH v2 1/2] graph: fix case that hit assert()
From: Derrick Stolee @ 2020-01-08 19:14 UTC (permalink / raw)
To: Junio C Hamano, Derrick Stolee via GitGitGadget
Cc: git, peff, brad, sunshine, James Coglan, Derrick Stolee
In-Reply-To: <xmqqa76x3l8o.fsf@gitster-ct.c.googlers.com>
On 1/8/2020 12:34 PM, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
>>
>>> From: Derrick Stolee <dstolee@microsoft.com>
>>> Subject: Re: [PATCH v2 1/2] graph: fix case that hit assert()
>>>
>>> A failure was reported in "git log --graph --all" with the new
>>> graph-rendering logic. The code fails an assert() statement when
>>> collapsing multiple edges from a merge.
>>>
>>> The assert was introduced by eaf158f8 (graph API: Use horizontal
>>> lines for more compact graphs, 2009-04-21), which is quite old.
>>> This assert is trying to say that when we complete a horizontal
>>> line with a single slash, it is because we have reached our target.
>>>
>>> This assertion is hit when we have two collapsing lines from the
>>> same merge commit, as follows:
>>>
>>> | | | | *
>>> | |_|_|/|
>>> |/| | |/
>>> | | |/|
>>> | |/| |
>>> | * | |
>>> * | | |
>>
>> I was sort-of expecting to see
>> ...
>> near the beginning of this commit, though.
>
> Will do this locally before using them in rc2.
Sounds good to me. Sorry for the delay in doing it myself.
-Stolee
^ permalink raw reply
* Re: [PATCH v2 1/1] branch: advise the user to checkout a different branch before deleting
From: Junio C Hamano @ 2020-01-08 19:05 UTC (permalink / raw)
To: Heba Waly
Cc: Eric Sunshine, Heba Waly via GitGitGadget, Git List,
Emily Shaffer
In-Reply-To: <CACg5j260h88bd=W_4EzAn7B0TiU02Y8BzKDQ7w3UJiHkhL60NQ@mail.gmail.com>
Heba Waly <heba.waly@gmail.com> writes:
> On Wed, Jan 8, 2020 at 10:28 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
>>
>> advice seems simple on the surface, but every new piece of advice
>> means having to add yet another configuration variable, writing more
>> code, more tests, and more documentation
>
> This raises a question though, do we really need a new configuration
> for every new advice?
> So a user who's not interested in receiving advice will have to
> disable every single advice config? It doesn't seem scalable to me.
> I imagine a user will either want to enable or disable the advice
> feature all together. Why don't we have only one `enable_advice`
> configuration that controls all the advice messages?
The advice mechanism was a way to help new people learn the system
by giving a bit of extra help messages that would become annoying
once they learned that part of the system, so by default they are
on, and can be turned off once they learn enough about the specific
situation that gives one kind of advise. Hence, "[advice] !all" to
decline any and all advice message, including anything that would be
introduced in the future, is somewhat a foreign concept in that
picture.
Having said that, I am not opposed to add support for such an
overall "turn all off" (or on for that matter). Totally untested,
but something along this line, perhaps? The idea is that
- the config keys may come in any order;
- once advice.all is set to either true or false, we set all the
advice.* variables to the given value,
- for any other advice.* config, we interpret it only if we haven't
seen advice.all
advice.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/advice.c b/advice.c
index 098ac0abea..b9a8fe1360 100644
--- a/advice.c
+++ b/advice.c
@@ -3,6 +3,8 @@
#include "color.h"
#include "help.h"
+static int advice_all_seen = -1; /* not seen yet */
+
int advice_fetch_show_forced_updates = 1;
int advice_push_update_rejected = 1;
int advice_push_non_ff_current = 1;
@@ -142,13 +144,22 @@ int git_default_advice_config(const char *var, const char *value)
if (!skip_prefix(var, "advice.", &k))
return 0;
- for (i = 0; i < ARRAY_SIZE(advice_config); i++) {
- if (strcasecmp(k, advice_config[i].name))
- continue;
- *advice_config[i].preference = git_config_bool(var, value);
+ if (!strcmp(var, "advise.all")) {
+ advice_all_seen = git_config_bool(var, value);
+ for (i = 0; i < ARRAY_SIZE(advice_config); i++)
+ *advice_config[i].preference = advice_all_seen;
return 0;
}
+ if (advice_all_seen < 0) {
+ for (i = 0; i < ARRAY_SIZE(advice_config); i++) {
+ if (strcasecmp(k, advice_config[i].name))
+ continue;
+ *advice_config[i].preference = git_config_bool(var, value);
+ return 0;
+ }
+ }
+
return 0;
}
^ permalink raw reply related
* Re: [PATCH v2 1/1] branch: advise the user to checkout a different branch before deleting
From: Johannes Schindelin @ 2020-01-08 19:01 UTC (permalink / raw)
To: Heba Waly
Cc: Eric Sunshine, Heba Waly via GitGitGadget, Git List,
Junio C Hamano, Emily Shaffer
In-Reply-To: <CACg5j260h88bd=W_4EzAn7B0TiU02Y8BzKDQ7w3UJiHkhL60NQ@mail.gmail.com>
Hi,
On Thu, 9 Jan 2020, Heba Waly wrote:
> On Wed, Jan 8, 2020 at 10:28 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
>
> > advice seems simple on the surface, but every new piece of advice
> > means having to add yet another configuration variable, writing more
> > code, more tests, and more documentation
FWIW I disagree that we need to reduce the number of config settings.
Pretty much all of them have a good reason to exist.
I _could_ however see some sort of categorisation as a valuable goal,
which would potentially make it easier to have chapters in the `git
config` documentation where earlier chapters describe common settings
and the later chapters describe subsequently more obscure settings.
> This raises a question though, do we really need a new configuration for
> every new advice?
I would keep it this way, if only for consistency (a department in which
Git still has a lot of room for improvement).
> So a user who's not interested in receiving advice will have to
> disable every single advice config? It doesn't seem scalable to me.
> I imagine a user will either want to enable or disable the advice
> feature all together. Why don't we have only one `enable_advice`
> configuration that controls all the advice messages?
This is the first time I hear about anybody wanting to disable any advice
;-)
If this is desired, it should be easy enough:
-- snip --
diff --git a/advice.c b/advice.c
index 3ee0ee2d8fb..28e48d5410b 100644
--- a/advice.c
+++ b/advice.c
@@ -138,6 +138,13 @@ int git_default_advice_config(const char *var, const char *value)
if (!skip_prefix(var, "advice.", &k))
return 0;
+ if (!strcmp(k, "suppressall")) {
+ if (git_config_bool(var, value))
+ for (i = 0; i < ARRAY_SIZE(advice_config); i++)
+ *advice_config[i].preference = 0;
+ return 0;
+ }
+
for (i = 0; i < ARRAY_SIZE(advice_config); i++) {
if (strcasecmp(k, advice_config[i].name))
continue;
-- snap --
I don't really think that this is desired, though. Git has earned a
reputation for being hard to use, so I was personally delighted when we
started introducing the advise feature, and I have actually heard a couple
users say good things whenever Git learns to help them without having to
ask another human being (and feeling dumb as a consequence).
Ciao,
Dscho
^ permalink raw reply related
* [GIT PULL] git-gui pull request
From: Pratyush Yadav @ 2020-01-08 19:00 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Hi Junio,
Please pull the new changes in git-gui for the upcoming Git v2.25 release.
---
The following changes since commit b524f6b399c77b40c8bf2b6217585fde4731472a:
Merge branch 'ka/japanese-translation' (2019-10-14 23:22:50 +0530)
are available in the Git repository at:
https://github.com/prati0100/git-gui.git
for you to fetch changes up to 0d2116c6441079a5a1091e4cf152fd9d5fa9811b:
Merge branch 'zs/open-current-file' (2020-01-05 02:38:03 +0530)
----------------------------------------------------------------
Jonathan Gilbert (3):
git-gui: consolidate naming conventions
git-gui: update status bar to track operations
git-gui: revert untracked files by deleting them
Kazuhiro Kato (1):
git gui: fix branch name encoding error
Pratyush Yadav (5):
Merge branch 'jg/revert-untracked'
Merge branch 'kk/branch-name-encoding'
git-gui: allow closing console window with Escape
Merge branch 'py/console-close-esc'
Merge branch 'zs/open-current-file'
Zoli Szabó (1):
git-gui: allow opening currently selected file in default app
git-gui.sh | 61 ++++--
lib/blame.tcl | 24 ++-
lib/branch.tcl | 2 +
lib/checkout_op.tcl | 15 +-
lib/choose_repository.tcl | 120 +++++++----
lib/chord.tcl | 160 ++++++++++++++
lib/console.tcl | 2 +
lib/index.tcl | 523 ++++++++++++++++++++++++++++++++++------------
lib/merge.tcl | 14 +-
lib/status_bar.tcl | 231 +++++++++++++++++---
10 files changed, 920 insertions(+), 232 deletions(-)
create mode 100644 lib/chord.tcl
--
Regards,
Pratyush Yadav
^ permalink raw reply
* Re: [PATCH v3 10/15] rebase: add an --am option
From: Phillip Wood @ 2020-01-08 18:55 UTC (permalink / raw)
To: Junio C Hamano
Cc: Elijah Newren, Phillip Wood, Elijah Newren via GitGitGadget,
Git Mailing List, Johannes Schindelin, Denton Liu, Pavel Roskin,
Alban Gruin, SZEDER Gábor
In-Reply-To: <xmqqmuax3lzv.fsf@gitster-ct.c.googlers.com>
On 08/01/2020 17:18, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>> I view this change in the default backend as similar to the rewrite in
>> C in that it is an implementation detail we're changing that should be
>> transparent (and beneficial in terms of performance) to the
>> user. There we provided a configuration variable but not a command
>> line option to control if it was used or not.
>
> Do you mean things like GIT_TEST_ADD_I_USE_BUILTIN? I think it is
> OK to have such an escape mechanism to allow people to opt out of
> a new reimplementation until it matures, but I do not offhand recall
> doing so with config.
I was thinking of rebase.usebuiltin
Best Wishes
Phillip
^ permalink raw reply
* Re: [PATCH v4 0/3] t: rework tests for --pathspec-from-file
From: Junio C Hamano @ 2020-01-08 18:50 UTC (permalink / raw)
To: Alexandr Miloslavskiy
Cc: Alexandr Miloslavskiy via GitGitGadget, git, Jonathan Nieder,
Eric Sunshine
In-Reply-To: <0b54d95c-a5e0-c156-b972-a1e171678785@syntevo.com>
Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com> writes:
> I will still provide a few tests for every new command to make sure
> that said command works as intended. I will only skip indirectly
> testing global API again and again.
Ah, OK. Then leaving those removed by the third step there may get
in the way. So let's assume that we'll have an updated third step
already applied and your new series are written on top of it.
> ... For new commands, it doesn't really matter if "third step"
> patch is applied or not.
OK, again. Thanks for a clarification.
^ permalink raw reply
* Re: [PATCH 0/2] Graph horizontal fix
From: Junio C Hamano @ 2020-01-08 18:06 UTC (permalink / raw)
To: Derrick Stolee via GitGitGadget; +Cc: git, peff, jcoglan, Derrick Stolee
In-Reply-To: <pull.518.git.1578457675.gitgitgadget@gmail.com>
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
> This depends on ds/graph-assert-fix.
>
> This is a non-critical (not needed for v2.25.0) response to the previous
> discussions [1] [2].
>
> While working to resolve the fix for the assert() bug, I noticed this
> regression when multiple edges wanted to collapse with horizontal lines. It
> takes a reasonably large graph, but real projects are likely to demonstrate
> this behavior.
>
> I arranged the series into two patches: 1. the (failing) test, and 2. the
> fix.
>
> The fix commit includes some details about why the change to compress merge
> commits caused this regression, and why I feel relatively confident that
> this is a correct resolution.
I am not sure if this is "fix" of "bug" in that what is shown
without 2/2 (iow, "before this change" in the description of 2/2) is
"wrong" per-se---it is just that it leaves room to be made even more
compact. It still is an improvement, of course, though.
Queued. Thanks.
>
> Thanks, -Stolee
>
> [1]
> https://lore.kernel.org/git/faa954fa-ccb9-b034-a39d-d2f0696826ea@gmail.com/T/#t
> [2]
> https://lore.kernel.org/git/xmqqk1635gwu.fsf@gitster-ct.c.googlers.com/T/#t
>
> Derrick Stolee (2):
> graph: add test to demonstrate horizontal line bug
> graph: fix collapse of multiple edges
>
> graph.c | 10 ++++--
> t/t4215-log-skewed-merges.sh | 62 ++++++++++++++++++++++++++++++++++++
> 2 files changed, 70 insertions(+), 2 deletions(-)
>
>
> base-commit: aa2121af50498c7ea9d5c4c87f9dc66605bf772b
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-518%2Fderrickstolee%2Fgraph-horizontal-fix-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-518/derrickstolee/graph-horizontal-fix-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/518
^ permalink raw reply
* Re: [PATCH v2 1/1] branch: advise the user to checkout a different branch before deleting
From: Heba Waly @ 2020-01-08 18:06 UTC (permalink / raw)
To: Eric Sunshine
Cc: Heba Waly via GitGitGadget, Git List, Junio C Hamano,
Emily Shaffer
In-Reply-To: <CAPig+cTDayF0hHn7wSPGNS8h2qPUYhhg9Z8fY_rLQnWmAg-NKQ@mail.gmail.com>
On Wed, Jan 8, 2020 at 10:28 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
>
> advice seems simple on the surface, but every new piece of advice
> means having to add yet another configuration variable, writing more
> code, more tests, and more documentation
This raises a question though, do we really need a new configuration
for every new advice?
So a user who's not interested in receiving advice will have to
disable every single advice config? It doesn't seem scalable to me.
I imagine a user will either want to enable or disable the advice
feature all together. Why don't we have only one `enable_advice`
configuration that controls all the advice messages?
Thanks,
Heba
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox