git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] add -C[NUM] to git-am

From
MTMichael S. Tsirkin <mst@mellanox.co.il>
Date
Feb 8, 2007, 13:57 UTC
Message-ID
<20070208135708.GD20183@mellanox.co.il>
In-Reply-To
<7vfy9h13yu.fsf@assigned-by-dhcp.cox.net>
Show 14 quoted lines
> Quoting Junio C Hamano <junkio@cox.net>:
> Subject: Re: [PATCH] add -C[NUM] to git-am
> 
> "Michael S. Tsirkin" <mst@mellanox.co.il> writes:
> 
> >> Quoting r. Junio C Hamano <junkio@cox.net>:
> >> 
> >> FWIW, I am in favor although I do not foresee myself ever using
> >> it.  However, this has slight ramifications.
> >> 
> >>  - we will be keeping applymbox after all.  shouldn't this be
> >>    side-ported to it?
> >
> > OK.

Wait, this can't be done - git-applymbox uses git-applypatch internally and that does not get -CNUM. So this will have to stay a git-am only option.

Show 9 quoted lines
> >>  - am is used as a workhorse for rebase.  shouldn't this be
> >>    accessible through its command line as well?
> >
> > How will it be used?
> 
> Although I do not foresee myself using -C<num> that applies to
> the whole series inexactly for "git am" to begin with, I would
> imagine somebody who wants to say "git am -C1" may want to say
> something like "git rebase -C1 origin/master",

Like this then? BTW, Junio, why is it that git-rebase calls "git am" and not "git-am"? This wastes some cycles, does it not?

Add -C[NUM] to git-am and git-rebase so that patches can be applied even if context has changed a bit.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
---
diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index aa4ce1d..f7d551e 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -64,6 +64,10 @@ default.   You could use `--no-utf8` to override this.
 	This flag is passed to the `git-apply` program that applies
 	the patch.
 
+-C<n>::
+	This flag is passed to the `git-apply` program that applies
+	the patch.
+
 --interactive::
 	Run interactively, just like git-applymbox.
 
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 977f661..3dff2df 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -7,7 +7,7 @@ git-rebase - Forward-port local commits to the updated upstream head
 
 SYNOPSIS
 --------
-'git-rebase' [-v] [--merge] [--onto <newbase>] <upstream> [<branch>]
+'git-rebase' [-v] [--merge] [-CNUM] [--onto <newbase>] <upstream> [<branch>]
 
 'git-rebase' --continue | --skip | --abort
 
@@ -196,6 +196,12 @@ OPTIONS
 -v, \--verbose::
 	Display a diffstat of what changed upstream since the last rebase.
 
+-C<n>::
+	Ensure at least <n> lines of surrounding context match before
+	and after each change.  When fewer lines of surrounding
+	context exist they all must match.  By default no context is
+	ever ignored.
+
 include::merge-strategies.txt[]
 
 NOTES
diff --git a/git-am.sh b/git-am.sh
index 1252f26..9a61234 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005, 2006 Junio C Hamano
 
 USAGE='[--signoff] [--dotest=<dir>] [--utf8 | --no-utf8] [--binary] [--3way]
-  [--interactive] [--whitespace=<option>] <mbox>...
+  [--interactive] [--whitespace=<option>] [-CNUM] <mbox>...
   or, when resuming [--skip | --resolved]'
 . git-sh-setup
 set_reflog_action am
@@ -106,7 +106,8 @@ It does not apply to blobs recorded in its index."
 }
 
 prec=4
-dotest=.dotest sign= utf8=t keep= skip= interactive= resolved= binary= ws= resolvemsg=
+dotest=.dotest sign= utf8=t keep= skip= interactive= resolved= binary= resolvemsg=
+git_apply_opt=
 
 while case "$#" in 0) break;; esac
 do
@@ -142,7 +143,10 @@ do
 	skip=t; shift ;;
 
 	--whitespace=*)
-	ws=$1; shift ;;
+	git_apply_opt="$git_apply_opt $1"; shift ;;
+
+	-C*)
+	git_apply_opt="$git_apply_opt $1"; shift ;;
 
 	--resolvemsg=*)
 	resolvemsg=$(echo "$1" | sed -e "s/^--resolvemsg=//"); shift ;;
@@ -394,7 +398,7 @@ do
 
 	case "$resolved" in
 	'')
-		git-apply $binary --index $ws "$dotest/patch"
+		git-apply $git_apply_opt $binary --index "$dotest/patch"
 		apply_status=$?
 		;;
 	t)
diff --git a/git-rebase.sh b/git-rebase.sh
index 9d2f71d..b51d19d 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -45,6 +45,7 @@ do_merge=
 dotest=$GIT_DIR/.dotest-merge
 prec=4
 verbose=
+git_am_opt=
 
 continue_merge () {
 	test -n "$prev_head" || die "prev_head must be defined"
@@ -213,6 +214,10 @@ do
 	-v|--verbose)
 		verbose=t
 		;;
+	-C*)
+		git_am_opt=$1
+		shift
+		;;
 	-*)
 		usage
 		;;
@@ -322,7 +327,7 @@ fi
 if test -z "$do_merge"
 then
 	git-format-patch -k --stdout --full-index --ignore-if-in-upstream "$upstream"..ORIG_HEAD |
-	git am --binary -3 -k --resolvemsg="$RESOLVEMSG"
+	git am $git_am_opt --binary -3 -k --resolvemsg="$RESOLVEMSG"
 	exit $?
 fi
 
	
-- 
MST
Previous: Jakub NarebskiNext: Junio C Hamano
Message 6 of 11 in “add -C[NUM] to git-am”
  1. add -C[NUM] to git-amMichael S. Tsirkin, Feb 7, 2007
  2. Junio C HamanoFeb 7, 2007
  3. Michael S. TsirkinFeb 7, 2007
  4. Junio C HamanoFeb 8, 2007
  5. Jakub NarebskiFeb 8, 2007
  6. Michael S. TsirkinFeb 8, 2007
  7. Junio C HamanoFeb 8, 2007
  8. Johannes SchindelinFeb 7, 2007
  9. Jakub NarebskiFeb 7, 2007
  10. Johannes SchindelinFeb 8, 2007
  11. Junio C HamanoFeb 8, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.