[PATCH] errors: "strict subset" -> "ancestor"

Subsystems: the rest

STALE3735d

10 messages, 5 authors, 2016-06-15 · open the first message on its own page

[PATCH] errors: "strict subset" -> "ancestor"

From: J. Bruce Fields <hidden>
Date: 2016-06-15 22:43:46

From: J. Bruce Fields <redacted>

The term "ancestor" is a bit more intuitive (and more consistent with
the documentation) than the term "strict subset".

Also, remove superfluous "ref", capitalize, and add some carriage
returns, changing:

	error: remote 'refs/heads/master' is not a strict subset of local ref 'refs/heads/master'. maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/git.git'

to:

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.
	 Maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/git.git'

Signed-off-by: J. Bruce Fields <redacted>
---
 builtin-branch.c |    2 +-
 http-push.c      |    8 ++++----
 send-pack.c      |    6 +++---
 3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/builtin-branch.c b/builtin-branch.c
index 3da8b55..e8de27e 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -142,7 +142,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds)
 
 		if (!force &&
 		    !in_merge_bases(rev, &head_rev, 1)) {
-			error("The branch '%s' is not a strict subset of "
+			error("The branch '%s' is not an ancestor of "
 				"your current HEAD.\n"
 				"If you are sure you want to delete it, "
 				"run 'git branch -D %s'.", argv[i], argv[i]);
diff --git a/http-push.c b/http-push.c
index c02a3af..5960d7c 100644
--- a/http-push.c
+++ b/http-push.c
@@ -2241,7 +2241,7 @@ static int delete_remote_branch(char *pattern, int force)
 
 		/* Remote branch must be an ancestor of remote HEAD */
 		if (!verify_merge_base(head_sha1, remote_ref->old_sha1)) {
-			return error("The branch '%s' is not a strict subset of your current HEAD.\nIf you are sure you want to delete it, run:\n\t'git http-push -D %s %s'", remote_ref->name, remote->url, pattern);
+			return error("The branch '%s' is not an ancestor of your current HEAD.\nIf you are sure you want to delete it, run:\n\t'git http-push -D %s %s'", remote_ref->name, remote->url, pattern);
 		}
 	}
 
@@ -2424,9 +2424,9 @@ int main(int argc, char **argv)
 				 * commits at the remote end and likely
 				 * we were not up to date to begin with.
 				 */
-				error("remote '%s' is not a strict "
-				      "subset of local ref '%s'. "
-				      "maybe you are not up-to-date and "
+				error("remote '%s' is not an ancestor of\n"
+				      " local '%s'.\n"
+				      " Maybe you are not up-to-date and "
 				      "need to pull first?",
 				      ref->name,
 				      ref->peer_ref->name);
diff --git a/send-pack.c b/send-pack.c
index 5e127a1..b74fd45 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -297,9 +297,9 @@ static int send_pack(int in, int out, struct remote *remote, int nr_refspec, cha
 				 * commits at the remote end and likely
 				 * we were not up to date to begin with.
 				 */
-				error("remote '%s' is not a strict "
-				      "subset of local ref '%s'. "
-				      "maybe you are not up-to-date and "
+				error("remote '%s' is not an ancestor of\n"
+				      " local  '%s'.\n"
+				      " Maybe you are not up-to-date and "
 				      "need to pull first?",
 				      ref->name,
 				      ref->peer_ref->name);
-- 
1.5.3.5.475.g477d-dirty

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: Steffen Prohaska <hidden>
Date: 2016-06-15 22:43:46

On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
quoted hunk
diff --git a/send-pack.c b/send-pack.c
index 5e127a1..b74fd45 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -297,9 +297,9 @@ static int send_pack(int in, int out, struct  
remote *remote, int nr_refspec, cha
 				 * commits at the remote end and likely
 				 * we were not up to date to begin with.
 				 */
-				error("remote '%s' is not a strict "
-				      "subset of local ref '%s'. "
-				      "maybe you are not up-to-date and "
+				error("remote '%s' is not an ancestor of\n"
+				      " local  '%s'.\n"
Two spaces in a row after local and before '%s'.

	Steffen

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: David Symonds <hidden>
Date: 2016-06-15 22:43:46

On 11/3/07, Steffen Prohaska [off-list ref] wrote:
On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
quoted
diff --git a/send-pack.c b/send-pack.c
index 5e127a1..b74fd45 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -297,9 +297,9 @@ static int send_pack(int in, int out, struct
remote *remote, int nr_refspec, cha
                               * commits at the remote end and likely
                               * we were not up to date to begin with.
                               */
-                             error("remote '%s' is not a strict "
-                                   "subset of local ref '%s'. "
-                                   "maybe you are not up-to-date and "
+                             error("remote '%s' is not an ancestor of\n"
+                                   " local  '%s'.\n"
Two spaces in a row after local and before '%s'.
So? That's presumably to align the remote and local strings.


Dave.

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: Steffen Prohaska <hidden>
Date: 2016-06-15 22:43:46

On Nov 3, 2007, at 8:14 AM, David Symonds wrote:
On 11/3/07, Steffen Prohaska [off-list ref] wrote:
quoted
On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
quoted
diff --git a/send-pack.c b/send-pack.c
index 5e127a1..b74fd45 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -297,9 +297,9 @@ static int send_pack(int in, int out, struct
remote *remote, int nr_refspec, cha
                               * commits at the remote end and  
likely
                               * we were not up to date to begin  
with.
                               */
-                             error("remote '%s' is not a strict "
-                                   "subset of local ref '%s'. "
-                                   "maybe you are not up-to-date  
and "
+                             error("remote '%s' is not an  
ancestor of\n"
+                                   " local  '%s'.\n"
Two spaces in a row after local and before '%s'.
So? That's presumably to align the remote and local strings.
They are not aligned. The second line is indented with one
space. Look at examples in the commit message. The first line
starts with "error:", which already destroys the alignment.

	Steffen

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: Steffen Prohaska <hidden>
Date: 2016-06-15 22:43:46

On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
From: J. Bruce Fields <redacted>

The term "ancestor" is a bit more intuitive (and more consistent with
the documentation) than the term "strict subset".

Also, remove superfluous "ref", capitalize, and add some carriage
returns, changing:

	error: remote 'refs/heads/master' is not a strict subset of local  
ref 'refs/heads/master'. maybe you are not up-to-date and need to  
pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/ 
git.git'

to:

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.
	 Maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/ 
git.git'

Junio suggested in [1] (see also earlier messages in that
thread) to replace the recommendation to pull with a hint
where to look in the user manual.

[1] http://marc.info/?l=git&m=119398999317677&w=2


The point is, there are various ways to resolve the problem.
pull is not necessarily the right solution. At least, you should
consider to rebase. Or maybe just something else went wrong.

Nonetheless I think it could be a good idea to keep the most
likely cases. So, how about

"Are you up-to-date? Did you forget to pull or rebase? See User's  
Manual for details."

I put it as questions to avoid making a suggestion. The questions
should give sufficient hints for searching in the User's Manual.
I haven't found the single section that would explain exactly
the situation we're dealing with.

I attached the commit that originally introduced the suggestion.

	Steffen


commit 69310a34cb6dcca32b08cf3ea9e91ab19354a874
Author: Junio C Hamano [off-list ref]
Date:   Thu Dec 22 12:39:39 2005 -0800

     send-pack: reword non-fast-forward error message.

     Wnen refusing to push a head, we said cryptic "remote 'branch'
     object X does not exist on local" or "remote ref 'branch' is not
     a strict subset of local ref 'branch'".  That was gittish.

     Since the most likely reason this happens is because the pushed
     head was not up-to-date, clarify the error message to say that
     straight, and suggest pulling first.

     First noticed by Johannes and seconded by Andreas.

     Signed-off-by: Junio C Hamano [off-list ref]

[PATCH] errors: "strict subset" -> "ancestor"

From: J. Bruce Fields <hidden>
Date: 2016-06-15 22:43:47

From: J. Bruce Fields <redacted>

The term "ancestor" is a bit more intuitive (and more consistent with
the documentation) than the term "strict subset".

Also, remove superfluous "ref", and capitalize, changing:

	error: remote 'refs/heads/master' is not a strict subset of local ref 'refs/heads/master'. maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/git.git'

to:

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.
	 Maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/git.git'

Signed-off-by: J. Bruce Fields <redacted>
---
 builtin-branch.c |    2 +-
 http-push.c      |    8 ++++----
 send-pack.c      |    6 +++---
 3 files changed, 8 insertions(+), 8 deletions(-)

On Sat, Nov 03, 2007 at 08:24:29AM +0100, Steffen Prohaska wrote:
They are not aligned. The second line is indented with one
space. Look at examples in the commit message. The first line
starts with "error:", which already destroys the alignment.
Yup, I think that's exactly what happened--I said "hey, maybe I should
try aligning this and see what it looks like?", then saw the problem,
then forgot to revert the extra space from everywhere.... Thanks for
noticing.  Here's an updated patch.--b.
diff --git a/builtin-branch.c b/builtin-branch.c
index 3da8b55..e8de27e 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -142,7 +142,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds)
 
 		if (!force &&
 		    !in_merge_bases(rev, &head_rev, 1)) {
-			error("The branch '%s' is not a strict subset of "
+			error("The branch '%s' is not an ancestor of "
 				"your current HEAD.\n"
 				"If you are sure you want to delete it, "
 				"run 'git branch -D %s'.", argv[i], argv[i]);
diff --git a/http-push.c b/http-push.c
index c02a3af..5960d7c 100644
--- a/http-push.c
+++ b/http-push.c
@@ -2241,7 +2241,7 @@ static int delete_remote_branch(char *pattern, int force)
 
 		/* Remote branch must be an ancestor of remote HEAD */
 		if (!verify_merge_base(head_sha1, remote_ref->old_sha1)) {
-			return error("The branch '%s' is not a strict subset of your current HEAD.\nIf you are sure you want to delete it, run:\n\t'git http-push -D %s %s'", remote_ref->name, remote->url, pattern);
+			return error("The branch '%s' is not an ancestor of your current HEAD.\nIf you are sure you want to delete it, run:\n\t'git http-push -D %s %s'", remote_ref->name, remote->url, pattern);
 		}
 	}
 
@@ -2424,9 +2424,9 @@ int main(int argc, char **argv)
 				 * commits at the remote end and likely
 				 * we were not up to date to begin with.
 				 */
-				error("remote '%s' is not a strict "
-				      "subset of local ref '%s'. "
-				      "maybe you are not up-to-date and "
+				error("remote '%s' is not an ancestor of\n"
+				      " local '%s'.\n"
+				      " Maybe you are not up-to-date and "
 				      "need to pull first?",
 				      ref->name,
 				      ref->peer_ref->name);
diff --git a/send-pack.c b/send-pack.c
index 5e127a1..fbf2462 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -297,9 +297,9 @@ static int send_pack(int in, int out, struct remote *remote, int nr_refspec, cha
 				 * commits at the remote end and likely
 				 * we were not up to date to begin with.
 				 */
-				error("remote '%s' is not a strict "
-				      "subset of local ref '%s'. "
-				      "maybe you are not up-to-date and "
+				error("remote '%s' is not an ancestor of\n"
+				      " local '%s'.\n"
+				      " Maybe you are not up-to-date and "
 				      "need to pull first?",
 				      ref->name,
 				      ref->peer_ref->name);
-- 
1.5.3.5.475.g477d-dirty

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: J. Bruce Fields <hidden>
Date: 2016-06-15 22:43:47

On Sat, Nov 03, 2007 at 08:51:29AM +0100, Steffen Prohaska wrote:
On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
quoted
From: J. Bruce Fields <redacted>

The term "ancestor" is a bit more intuitive (and more consistent with
the documentation) than the term "strict subset".

Also, remove superfluous "ref", capitalize, and add some carriage
returns, changing:

	error: remote 'refs/heads/master' is not a strict subset of local ref 
'refs/heads/master'. maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/git.git'

to:

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.
	 Maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/git.git'

Junio suggested in [1] (see also earlier messages in that
thread) to replace the recommendation to pull with a hint
where to look in the user manual.

[1] http://marc.info/?l=git&m=119398999317677&w=2


The point is, there are various ways to resolve the problem.
pull is not necessarily the right solution. At least, you should
consider to rebase. Or maybe just something else went wrong.
Yeah, actually in my case I usually want to force....

So I think it's a good suggestion, but I'm putting it off for now as I'm
not sure yet where to refer people to, and don't like making the error a
lot longer.

Hm.  I wonder if extra "help" commandline flags would be a way to get
people extra guidance on particular situations without cluttering up the
default messages ("not sure what to try next?  Try -h notanancestor..."
Maybe not.)
Nonetheless I think it could be a good idea to keep the most
likely cases. So, how about

"Are you up-to-date? Did you forget to pull or rebase? See User's Manual 
for details."

I put it as questions to avoid making a suggestion. The questions
should give sufficient hints for searching in the User's Manual.
I haven't found the single section that would explain exactly
the situation we're dealing with.
Me neither.  And I don't think a reference to the whole thing is
helpful.

--b.

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: Steffen Prohaska <hidden>
Date: 2016-06-15 22:43:47

On Nov 4, 2007, at 11:08 PM, J. Bruce Fields wrote:
On Sat, Nov 03, 2007 at 08:51:29AM +0100, Steffen Prohaska wrote:
quoted
On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
quoted
From: J. Bruce Fields <redacted>

The term "ancestor" is a bit more intuitive (and more consistent  
with
the documentation) than the term "strict subset".

Also, remove superfluous "ref", capitalize, and add some carriage
returns, changing:

	error: remote 'refs/heads/master' is not a strict subset of  
local ref
'refs/heads/master'. maybe you are not up-to-date and need to  
pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/ 
git.git'

to:

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.
	 Maybe you are not up-to-date and need to pull first?
	error: failed to push to 'ssh://linux-nfs.org/~bfields/exports/ 
git.git'

Junio suggested in [1] (see also earlier messages in that
thread) to replace the recommendation to pull with a hint
where to look in the user manual.

[1] http://marc.info/?l=git&m=119398999317677&w=2


The point is, there are various ways to resolve the problem.
pull is not necessarily the right solution. At least, you should
consider to rebase. Or maybe just something else went wrong.
Yeah, actually in my case I usually want to force....

So I think it's a good suggestion, but I'm putting it off for now  
as I'm
not sure yet where to refer people to, and don't like making the  
error a
lot longer.
I agree. And it's probably a waste of time anyway, because
sooner or later the mega-terse fetch output will be extended
to push.

Hm.  I wonder if extra "help" commandline flags would be a way to get
people extra guidance on particular situations without cluttering  
up the
default messages ("not sure what to try next?  Try -h  
notanancestor..."
Maybe not.)
The first step would be to describe the error messages in the
manual (or the man pages), and provide hints how to resolve
them. Currently we have no place we could link to, even if we
had a mechanism to do so.

	Steffen

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: Wincent Colaiuta <hidden>
Date: 2016-06-15 22:43:47

El 3/11/2007, a las 8:14, David Symonds escribió:
On 11/3/07, Steffen Prohaska [off-list ref] wrote:
quoted
On Nov 3, 2007, at 3:39 AM, J. Bruce Fields wrote:
quoted
diff --git a/send-pack.c b/send-pack.c
index 5e127a1..b74fd45 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -297,9 +297,9 @@ static int send_pack(int in, int out, struct
remote *remote, int nr_refspec, cha
                              * commits at the remote end and likely
                              * we were not up to date to begin  
with.
                              */
-                             error("remote '%s' is not a strict "
-                                   "subset of local ref '%s'. "
-                                   "maybe you are not up-to-date  
and "
+                             error("remote '%s' is not an  
ancestor of\n"
+                                   " local  '%s'.\n"
Two spaces in a row after local and before '%s'.
So? That's presumably to align the remote and local strings.
Kind of: it aligns "error:" with "local":

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.

Personal I think it would be better to align the right edges of  
"remote" and "local" so that it looks like the following; this more  
clearly shows the correspondence between the remote and local refs:

	error: remote 'refs/heads/master' is not an ancestor of
	        local 'refs/heads/master'.

Or alternatively:

	error: remote 'refs/heads/master' is not an ancestor of
	       local  'refs/heads/master'.


Cheers,
Wincent

Re: [PATCH] errors: "strict subset" -> "ancestor"

From: Jeff King <hidden>
Date: 2016-06-15 22:43:47

On Mon, Nov 05, 2007 at 02:06:35PM +0100, Wincent Colaiuta wrote:
Kind of: it aligns "error:" with "local":

	error: remote 'refs/heads/master' is not an ancestor of
	 local 'refs/heads/master'.
FYI, in the thread 'more terse push output', there is discussion of
eliminating this message entirely. So I wanted to point readers of this
thread in that direction.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help