From: Chris Packham <judge.packham@gmail.com>
To: git@vger.kernel.org
Cc: Jens.Lehmann@web.de, iveqy@iveqy.com,
stefan.naewe@atlas-elektronik.com, hvoigt@hvoigt.net,
gitster@pobox.com, Chris Packham <judge.packham@gmail.com>
Subject: [RFC/PATCHv3] submodule update: allow custom update command
Date: Tue, 2 Jul 2013 22:12:54 +1200 [thread overview]
Message-ID: <1372759974-19765-1-git-send-email-judge.packham@gmail.com> (raw)
In-Reply-To: <7vehbii6un.fsf@alter.siamese.dyndns.org>
Users can set submodule.$name.update to '!command' which will cause
'command' to be run instead of checkout/merge/rebase. This allows the
user some finer grained control over how the update is done. The primary
motivation for this was interoperability with stgit however being able
to intercept the submodule update process may prove useful for
integrating or extending other tools.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
---
v3 updated as per Junio's review.
Still needs tests. Any suggestions? I've been manually testing by setting
submodule.$name.update to '!echo'. I haven't looked to see if there are
existing 'submodule update' tests yet.
Documentation/git-submodule.txt | 5 ++++-
git-submodule.sh | 6 ++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index e576713..0befc20 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -159,7 +159,9 @@ update::
This will make the submodules HEAD be detached unless `--rebase` or
`--merge` is specified or the key `submodule.$name.update` is set to
`rebase`, `merge` or `none`. `none` can be overridden by specifying
- `--checkout`.
+ `--checkout`. Setting the key `submodule.$name.update` to `!command`
+ will cause `command` to be run. `command` can be any arbitrary shell
+ command that takes a single argument, namely the sha1 to update to.
+
If the submodule is not yet initialized, and you just want to use the
setting as stored in .gitmodules, you can automatically initialize the
@@ -172,6 +174,7 @@ If `--force` is specified, the submodule will be checked out (using
`git checkout --force` if appropriate), even if the commit specified in the
index of the containing repository already matches the commit checked out in
the submodule.
++
summary::
Show commit summary between the given commit (defaults to HEAD) and
diff --git a/git-submodule.sh b/git-submodule.sh
index eb58c8e..a7c2375 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -799,6 +799,12 @@ Maybe you want to use 'update --init'?")"
say_msg="$(eval_gettext "Submodule path '\$prefix\$sm_path': merged in '\$sha1'")"
must_die_on_failure=yes
;;
+ !*)
+ command="${update_module#!}"
+ die_msg="$(eval_gettext "Unable to exec '\$command \$sha1' in submodule path '\$prefix\$sm_path'")"
+ say_msg="$(eval_gettext "Submodule path '\$prefix\$sm_path': '\$command \$sha1'")"
+ must_die_on_failure=yes
+ ;;
*)
command="git checkout $subforce -q"
die_msg="$(eval_gettext "Unable to checkout '\$sha1' in submodule path '\$prefix\$sm_path'")"
--
1.8.3.1.644.gfaf2af3
next prev parent reply other threads:[~2013-07-02 10:13 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-28 9:53 [RFC/PATCH] submodule: add 'exec' option to submodule update Chris Packham
2013-06-28 10:13 ` Stefan Näwe
2013-06-28 10:42 ` Fredrik Gustafsson
2013-06-29 9:11 ` Chris Packham
2013-06-30 15:30 ` Jens Lehmann
2013-07-01 9:21 ` Chris Packham
2013-07-01 10:11 ` [RFC/PATCHv2] submodule: add ability to configure update command Chris Packham
2013-07-01 16:26 ` Junio C Hamano
2013-07-02 10:12 ` Chris Packham [this message]
2013-07-02 16:56 ` [RFC/PATCHv3] submodule update: allow custom " Jens Lehmann
2013-07-02 23:26 ` Chris Packham
2013-07-03 6:55 ` Jens Lehmann
2013-07-03 7:54 ` Chris Packham
2013-07-03 8:50 ` Chris Packham
2013-07-03 17:09 ` Junio C Hamano
2013-07-03 9:02 ` [RFC/PATCHv4] " Chris Packham
2013-07-03 17:17 ` Junio C Hamano
2013-07-01 16:48 ` [RFC/PATCHv2] submodule: add ability to configure " Junio C Hamano
2013-07-02 9:59 ` Chris Packham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1372759974-19765-1-git-send-email-judge.packham@gmail.com \
--to=judge.packham@gmail.com \
--cc=Jens.Lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvoigt@hvoigt.net \
--cc=iveqy@iveqy.com \
--cc=stefan.naewe@atlas-elektronik.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).