Received: (at 21120) by debbugs.gnu.org; 30 Jul 2015 16:09:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jul 30 12:09:10 2015 Received: from localhost ([127.0.0.1]:34939 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ZKqOL-0004b6-Vy for submit <at> debbugs.gnu.org; Thu, 30 Jul 2015 12:09:10 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:34089) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <meyering@HIDDEN>) id 1ZKqOJ-0004av-MB for 21120 <at> debbugs.gnu.org; Thu, 30 Jul 2015 12:09:08 -0400 Received: by iojj196 with SMTP id j196so4312678ioj.1 for <21120 <at> debbugs.gnu.org>; Thu, 30 Jul 2015 09:09:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=UbIQqx4X+J9k3S4br/vo68gFoEgg44L81xS3k0aRsmY=; b=jU4+Qlrlpof9Z7c8uOfedt1GmpiuwFiwlhy5VuL2abh8z9Hbf2kyw1dlCMz4Mpf42g 6RHgcncurb/j0zvoZWgfkEplXWBPsAvBe59qlq4+o6upl4a3uhWThCw7AQbzBOYfDwIU zh/tLTS3YHSrKfEqGFe7yelHbohuekkNNb7l83Ql+I6Se2dG0bK2U0xJWTj8dA4hVYu+ SW/vuzyXNPxIL5XwdddSF71mhX1ccuiCfZAVhFgGsSskZk+p7zpjCONZDRChVqbnIhbQ chvWosW10R6JExsOFqqwukTqobscJjN4z3knWTLOmILKex2s8JvTB6cES/yZp2iAwv+r SZQg== X-Received: by 10.107.168.222 with SMTP id e91mr4347059ioj.181.1438272546976; Thu, 30 Jul 2015 09:09:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.10.72 with HTTP; Thu, 30 Jul 2015 09:08:47 -0700 (PDT) In-Reply-To: <20150729234401.GB6640@HIDDEN> References: <55B02D47.5060203@HIDDEN> <CA+8g5KGjCtDmhB8QmAAO6x2=ixNRJxY7S_V9UbRimYmub0bM6A@HIDDEN> <20150729234401.GB6640@HIDDEN> From: Jim Meyering <jim@HIDDEN> Date: Thu, 30 Jul 2015 09:08:47 -0700 X-Google-Sender-Auth: umBRzOSKtvdKsz79bu71LMssttE Message-ID: <CA+8g5KEmfup0GbDBLixXoPxXT_M3MSM4F40LHebNzMFkhpTo3A@HIDDEN> Subject: Re: [Bug-vc-dwim] bug#21120: vc-chlog fails if git submodules are dirty To: Assaf Gordon <assafgordon@HIDDEN> Content-Type: text/plain; charset=UTF-8 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 21120 Cc: 21120 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) On Wed, Jul 29, 2015 at 4:44 PM, Assaf Gordon <assafgordon@HIDDEN> wrote: > Hello, > > On Mon, Jul 27, 2015 at 10:22:08PM -0700, Jim Meyering wrote: >> >> On Wed, Jul 22, 2015 at 4:54 PM, Assaf Gordon <assafgordon@HIDDEN> >> wrote: >>> >>> it seems that if a project using git has a submodule that is dirty, >>> vc-chlog >>> will fail to print the information about all the files. > > <...> > >>> Another possible thing is to make 'vc-dwim' abort if there are dirty >>> submodules, on the assumption that 'vc-dwim' is meant to prevent >>> problematic >>> commits, and a dirty submodule is a hint of a potential problem. > > >> Issuing a warning does have a little more appeal to me, but I would be >> happy >> with a complete patch implementing either behavior (i.e., updating NEWS >> and adding a test). > > For starters, attached is the simpler approach of silently ignoring dirty > git submodules with `vc-dwim --diff`. Very nice work. A perfect patch :-) Pushed verbatim. Thank you!
bug-vc-dwim@HIDDEN
:bug#21120
; Package vc-dwim
.
Full text available.Received: (at 21120) by debbugs.gnu.org; 29 Jul 2015 23:44:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jul 29 19:44:36 2015 Received: from localhost ([127.0.0.1]:33994 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ZKb1Y-0006pa-8z for submit <at> debbugs.gnu.org; Wed, 29 Jul 2015 19:44:36 -0400 Received: from mail-qk0-f181.google.com ([209.85.220.181]:36002) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <assafgordon@HIDDEN>) id 1ZKb1W-0006pS-CY for 21120 <at> debbugs.gnu.org; Wed, 29 Jul 2015 19:44:35 -0400 Received: by qkdv3 with SMTP id v3so12651331qkd.3 for <21120 <at> debbugs.gnu.org>; Wed, 29 Jul 2015 16:44:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=gQqsh+fuyYsaQDRycNCD5rPpqUbkk5cXSo71VGuwCYU=; b=CKiWYkpV9SSPFejql+5o2SXmtki/KOILgz2ybtmWG4HKCyylUNCUgCy7b0lwMIGo4J 3m8/MOWT1SMGe4shf6unP9BiQV1AuSgSvPr+Ao80RGstXb1DmCBLFkQWJtX1GSc7IQPl GaY2wmW07qxm0JfClDpmq5DqyOaZ9T9jurPRpRE6QKIUNJt+asrdMK9WICYf90Ga+hfu liTECL6qNCo4g8xNgJqypLoIWcUiTVi399Qtf8Jx0SBeU55Y4hi2TuD8a9+kxGDtzuvA j4xIP50/t8cvv03IVZAusSVNqbpxlXERk3vUD+fNO8JOA9Fw08tVmeckcJNwuqP9KkIH qOTA== X-Received: by 10.55.21.205 with SMTP id 74mr65822088qkv.19.1438213473855; Wed, 29 Jul 2015 16:44:33 -0700 (PDT) Received: from gmail.com (housegordon.org. [104.236.108.240]) by smtp.gmail.com with ESMTPSA id 99sm14902914qku.20.2015.07.29.16.44.33 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 29 Jul 2015 16:44:33 -0700 (PDT) Date: Wed, 29 Jul 2015 23:44:02 +0000 From: Assaf Gordon <assafgordon@HIDDEN> To: Jim Meyering <jim@HIDDEN> Subject: Re: [Bug-vc-dwim] bug#21120: vc-chlog fails if git submodules are dirty Message-ID: <20150729234401.GB6640@HIDDEN> References: <55B02D47.5060203@HIDDEN> <CA+8g5KGjCtDmhB8QmAAO6x2=ixNRJxY7S_V9UbRimYmub0bM6A@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="FCuugMFkClbJLl1L" Content-Disposition: inline In-Reply-To: <CA+8g5KGjCtDmhB8QmAAO6x2=ixNRJxY7S_V9UbRimYmub0bM6A@HIDDEN> User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 21120 Cc: 21120 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) --FCuugMFkClbJLl1L Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline Hello, On Mon, Jul 27, 2015 at 10:22:08PM -0700, Jim Meyering wrote: >On Wed, Jul 22, 2015 at 4:54 PM, Assaf Gordon <assafgordon@HIDDEN> wrote: >> it seems that if a project using git has a submodule that is dirty, vc-chlog >> will fail to print the information about all the files. <...> >> Another possible thing is to make 'vc-dwim' abort if there are dirty >> submodules, on the assumption that 'vc-dwim' is meant to prevent problematic >> commits, and a dirty submodule is a hint of a potential problem. >Issuing a warning does have a little more appeal to me, but I would be happy >with a complete patch implementing either behavior (i.e., updating NEWS >and adding a test). For starters, attached is the simpler approach of silently ignoring dirty git submodules with `vc-dwim --diff`. Comments welcomed, -assaf --FCuugMFkClbJLl1L Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="vc-dwim-ignore-git-submodules.patch" From a4e3c56b2a8e546e8d5d7243b83a5718cac3ad24 Mon Sep 17 00:00:00 2001 From: Assaf Gordon <assafgordon@HIDDEN> Date: Wed, 29 Jul 2015 19:31:52 -0400 Subject: [PATCH] vc-dwim: silently ignore dirty git submodules * NEWS: mention it. * VC.pm: ignore git submodules. * tests/ignore-dirty-submodules: new file. * tests/Makefile.am (TESTS): add it. Discussed in http://bugs.gnu.org/21120 --- NEWS | 2 ++ VC.pm | 5 ++-- tests/Makefile.am | 3 ++- tests/ignore-dirty-submodules | 55 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) create mode 100755 tests/ignore-dirty-submodules diff --git a/NEWS b/NEWS index 5129e3e..e7cb290 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,8 @@ vc-dwim NEWS -*- outline -*- vc-dwim now supports darcs. + vc-dwim now silently ignores dirty git submodules + * Noteworthy changes in release 1.7 (2013-03-15) [stable] diff --git a/VC.pm b/VC.pm index 81a2390..039f312 100644 --- a/VC.pm +++ b/VC.pm @@ -57,8 +57,9 @@ my $vc_cmd = GIT() => { AUTHOR_FMT => '--author=%s', - DIFF_COMMAND => [qw(git diff -B -C HEAD --)], - DIFF_PRISTINE => [qw(git diff --no-ext-diff -B -C HEAD --)], + DIFF_COMMAND => [qw(git diff --ignore-submodules=all -B -C HEAD --)], + DIFF_PRISTINE => [qw(git diff --ignore-submodules=all --no-ext-diff + -B -C HEAD --)], VALID_DIFF_EXIT_STATUS => {0 => 1}, COMMIT_COMMAND => [qw(git commit -q -F)], # is-version-controlled-file: true, if "git cat-file -t HEAD:$file" diff --git a/tests/Makefile.am b/tests/Makefile.am index 52671b5..2ff6375 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -28,6 +28,7 @@ TESTS = \ subdir-cvs \ t-vc-chlog \ multiple-chlogs \ - dirty-workdir + dirty-workdir \ + ignore-dirty-submodules include $(srcdir)/check.mk diff --git a/tests/ignore-dirty-submodules b/tests/ignore-dirty-submodules new file mode 100755 index 0000000..c2bc52d --- /dev/null +++ b/tests/ignore-dirty-submodules @@ -0,0 +1,55 @@ +#!/bin/sh + +# Ensure dirty git submodules are ignored by 'vc-dwim --diff' + +. "${srcdir=.}/init.sh"; path_prepend_ .. +print_ver_ vc-dwim + +require_git_ + +fail=0 + +## +## Create two git repositories (a,b), +## add 'a' as submodule of 'b', +## then modify 'a'. +## +mkdir a b || framework_failure_ +(cd a \ + && git init \ + && echo a > a \ + && git add a \ + && git commit -m a ) >/dev/null || framework_failure_ +(cd b \ + && git init \ + && echo b > b \ + && git add b \ + && git commit -m b ) >/dev/null || framework_failure_ +(cd b \ + && git submodule add ../a \ + && git commit -m "submodule added") >/dev/null || framework_failure_ + +## Sanity check: ensure no diffs, either with git or with vc-dwim +cd b +A=$(git diff) || framework_failure_ +test -z "$A" || framework_failure_ +B=$(vc-dwim --diff) || framework_failure_ +test -z "$B" || framework_failure_ + +## Modify the submodule +echo >> a/a || framework_failure_ + +## git diff should report a dirty submodule +git diff | grep -q '^\+Subproject commit [0-9a-f]*-dirty$' \ + || framework_failure_ + +## git diff with ignore flag should not report anything +## (if this doesn't work as expected, vc-dwim will fail too) +C=$(git diff --ignore-submodules=all) || framework_failure_ +test -z "$C" || framework_failure_ + +## Now test vc-dwim +D=$(vc-dwim --diff) || framework_failure_ +test -z "$D" || fail=1 + +Exit $fail -- 1.9.1 --FCuugMFkClbJLl1L--
bug-vc-dwim@HIDDEN
:bug#21120
; Package vc-dwim
.
Full text available.Received: (at 21120) by debbugs.gnu.org; 28 Jul 2015 05:22:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jul 28 01:22:31 2015 Received: from localhost ([127.0.0.1]:60622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ZJxLS-0007B9-8f for submit <at> debbugs.gnu.org; Tue, 28 Jul 2015 01:22:30 -0400 Received: from mail-ig0-f175.google.com ([209.85.213.175]:34712) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <meyering@HIDDEN>) id 1ZJxLP-0007B1-VK for 21120 <at> debbugs.gnu.org; Tue, 28 Jul 2015 01:22:28 -0400 Received: by igk11 with SMTP id 11so91867221igk.1 for <21120 <at> debbugs.gnu.org>; Mon, 27 Jul 2015 22:22:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=jVtjOwZPwxyF/I9AZNSFRry60tFrrunIJ3o+zx7cmTc=; b=TEgKhkJySbh2MWbbUNsuj9KfrvlE+1kLZF9hV9EsqB9ojwBtoRDY+wBKogxOareVtz FG45Enxds/P05YxnRMRc/mLUNCrozf00fRNcPzOK4sSQJv1KIjg8d9ZBtkQUyj4GixbG 7Y85b+vDxFoHhCA31RH827i3CEVtvOe9qcA7e8nO2C8H6XLb662crdj5n4nm6CZNF36N SqHCF2Hbp60aS9INNMXbul4r+Z41H2cZFnCgVZlldPZSwB2GCF+OHBwgt1RcrxIfTsEx VqsFY5tqha0ZV7hPA7o03CbGY+blwPmPUf8twXRSIABiJ2/37aBAKmnNkooTxQ1MrZVM K/qw== X-Received: by 10.107.26.203 with SMTP id a194mr47379909ioa.62.1438060947378; Mon, 27 Jul 2015 22:22:27 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.10.72 with HTTP; Mon, 27 Jul 2015 22:22:08 -0700 (PDT) In-Reply-To: <55B02D47.5060203@HIDDEN> References: <55B02D47.5060203@HIDDEN> From: Jim Meyering <jim@HIDDEN> Date: Mon, 27 Jul 2015 22:22:08 -0700 X-Google-Sender-Auth: glpfBQxk1x4XXO2KKie2IW632sw Message-ID: <CA+8g5KGjCtDmhB8QmAAO6x2=ixNRJxY7S_V9UbRimYmub0bM6A@HIDDEN> Subject: Re: [Bug-vc-dwim] bug#21120: vc-chlog fails if git submodules are dirty To: Assaf Gordon <assafgordon@HIDDEN> Content-Type: text/plain; charset=UTF-8 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 21120 Cc: 21120 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.7 (/) On Wed, Jul 22, 2015 at 4:54 PM, Assaf Gordon <assafgordon@HIDDEN> wrote: > Hello, > > it seems that if a project using git has a submodule that is dirty, vc-chlog > will fail to print the information about all the files. > > To reproduce: > ==== > git clone git://git.sv.gnu.org/hello.git > cd hello/ > ./bootstrap > echo >> bootstrap.conf > echo >> gnulib/cfg.mk > echo >> src/hello.c > ==== > > The diff looks like this: > === > $ git diff > diff --git a/bootstrap.conf b/bootstrap.conf > index 9e6b005..79d4c5b 100644 > --- a/bootstrap.conf > +++ b/bootstrap.conf > @@ -119,3 +119,4 @@ bootstrap_epilogue() > done > fi > } > + > diff --git a/gnulib b/gnulib > --- a/gnulib > +++ b/gnulib > @@ -1 +1 @@ > -Subproject commit b9bfe78424b871f5b92e5ee9e7d21ef951a6801d > +Subproject commit b9bfe78424b871f5b92e5ee9e7d21ef951a6801d-dirty > diff --git a/src/hello.c b/src/hello.c > index 8e6cfbd..f0d12de 100644 > --- a/src/hello.c > +++ b/src/hello.c > @@ -187,3 +187,4 @@ License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html>\n\ > This is free software: you are free to change and redistribute it.\n\ > There is NO WARRANTY, to the extent permitted by law.\n"), COPYRIGHT_YEAR); > } > + > === > > But vc-chlog will stop after the gnulib submodule: > === > $ vc-chlog > 2015-07-22 gordon <gordon@hostname> > > * bootstrap.conf: > * gnulib: > === > > A bit of debugging seems to show that in 'vc-chlog', the output of > 'processed-diff()' is: > bootstrap.conf 1 3 9 0-0-122-122 > gnulib 1 11 15 1-1-1-1 > src/hello.c 1 18 24 0-0-190-190 > > Then 'func_extract_identifiers()' calls 'func_apply_tmp_patch()' which runs > 'patch', and patch fails. > One possible work-around is to ignore submodules in 'vc-dwim' (attached > patch). > > Another possible thing is to make 'vc-dwim' abort if there are dirty > submodules, on the assumption that 'vc-dwim' is meant to prevent problematic > commits, and a dirty submodule is a hint of a potential problem. > related to this approach, there was a discussion couple of months about > about adding a server-side git hook in savannah to prevent such commits, but > it was decided against such forcible approach. perhaps warning about dirty > submodules in 'vc-dwim' is more polite? > http://lists.gnu.org/archive/html/coreutils/2015-04/msg00017.html Hi Assaf, Wow. Thank you for diving in and writing all of that. Issuing a warning does have a little more appeal to me, but I would be happy with a complete patch implementing either behavior (i.e., updating NEWS and adding a test). Are you inclined to write that?
bug-vc-dwim@HIDDEN
:bug#21120
; Package vc-dwim
.
Full text available.Received: (at submit) by debbugs.gnu.org; 23 Jul 2015 00:10:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jul 22 20:10:42 2015 Received: from localhost ([127.0.0.1]:56776 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ZI45w-0007PP-FC for submit <at> debbugs.gnu.org; Wed, 22 Jul 2015 20:10:41 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42268) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <assafgordon@HIDDEN>) id 1ZI45u-0007PH-Cd for submit <at> debbugs.gnu.org; Wed, 22 Jul 2015 20:10:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <assafgordon@HIDDEN>) id 1ZI45s-0008EI-KB for submit <at> debbugs.gnu.org; Wed, 22 Jul 2015 20:10:37 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:42605) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <assafgordon@HIDDEN>) id 1ZI45s-0008EA-Fl for submit <at> debbugs.gnu.org; Wed, 22 Jul 2015 20:10:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55757) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <assafgordon@HIDDEN>) id 1ZI45r-00076O-AB for bug-vc-dwim@HIDDEN; Wed, 22 Jul 2015 20:10:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <assafgordon@HIDDEN>) id 1ZI45m-0008BD-95 for bug-vc-dwim@HIDDEN; Wed, 22 Jul 2015 20:10:35 -0400 Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]:35305) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <assafgordon@HIDDEN>) id 1ZI3qR-0001N4-Nv for bug-vc-dwim@HIDDEN; Wed, 22 Jul 2015 19:54:39 -0400 Received: by qkbm65 with SMTP id m65so109725166qkb.2 for <bug-vc-dwim@HIDDEN>; Wed, 22 Jul 2015 16:54:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; bh=9JKpu0z4/biIFLLHz4hhRaP1NRAnPGRmYA7qIWHHoKo=; b=Nc4GfjPnfUtwqs7DKCCtjTlAMDhjTQN9hyoGHDC8hN5IPdqLmqzdl6n8JKvG+Nemex aZytlWWy2waIWOG2ov8PX6DOfxy4lvokflmpVSIKAPK1TXqqIJU/VUi7zbrJZbdLBPNE ccn9wVOjhjYfs/tJgopZPs1O8yylFYSpwqnAXnH9E1IMieTw+AN3jdqih87Bh1oPJTMb kjG3FGwtVz+mJ2bKtt0kgp4uAWoMIwyiLQwIO3HHC3DvNwhGZTsM+ahoy+mUarOFJimF HKHdgcymG2wETjY52kHUPBMliljr2wFAkEUlAyCXemhEpeCFLcsbxJK1QdVZdA6GjMzp 2nCg== X-Received: by 10.55.25.35 with SMTP id k35mr7734431qkh.76.1437609278290; Wed, 22 Jul 2015 16:54:38 -0700 (PDT) Received: from disco.erlich.nygenome.org ([162.212.111.2]) by smtp.googlemail.com with ESMTPSA id f4sm1560128qga.5.2015.07.22.16.54.37 for <bug-vc-dwim@HIDDEN> (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Jul 2015 16:54:37 -0700 (PDT) Message-ID: <55B02D47.5060203@HIDDEN> Date: Wed, 22 Jul 2015 19:54:47 -0400 From: Assaf Gordon <assafgordon@HIDDEN> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: bug-vc-dwim@HIDDEN Subject: vc-chlog fails if git submodules are dirty Content-Type: multipart/mixed; boundary="------------040506060208040001080901" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -4.0 (----) This is a multi-part message in MIME format. --------------040506060208040001080901 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hello, it seems that if a project using git has a submodule that is dirty, vc-chlog will fail to print the information about all the files. To reproduce: ==== git clone git://git.sv.gnu.org/hello.git cd hello/ ./bootstrap echo >> bootstrap.conf echo >> gnulib/cfg.mk echo >> src/hello.c ==== The diff looks like this: === $ git diff diff --git a/bootstrap.conf b/bootstrap.conf index 9e6b005..79d4c5b 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -119,3 +119,4 @@ bootstrap_epilogue() done fi } + diff --git a/gnulib b/gnulib --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit b9bfe78424b871f5b92e5ee9e7d21ef951a6801d +Subproject commit b9bfe78424b871f5b92e5ee9e7d21ef951a6801d-dirty diff --git a/src/hello.c b/src/hello.c index 8e6cfbd..f0d12de 100644 --- a/src/hello.c +++ b/src/hello.c @@ -187,3 +187,4 @@ License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\ This is free software: you are free to change and redistribute it.\n\ There is NO WARRANTY, to the extent permitted by law.\n"), COPYRIGHT_YEAR); } + === But vc-chlog will stop after the gnulib submodule: === $ vc-chlog 2015-07-22 gordon <gordon@hostname> * bootstrap.conf: * gnulib: === A bit of debugging seems to show that in 'vc-chlog', the output of 'processed-diff()' is: bootstrap.conf 1 3 9 0-0-122-122 gnulib 1 11 15 1-1-1-1 src/hello.c 1 18 24 0-0-190-190 Then 'func_extract_identifiers()' calls 'func_apply_tmp_patch()' which runs 'patch', and patch fails. One possible work-around is to ignore submodules in 'vc-dwim' (attached patch). Another possible thing is to make 'vc-dwim' abort if there are dirty submodules, on the assumption that 'vc-dwim' is meant to prevent problematic commits, and a dirty submodule is a hint of a potential problem. related to this approach, there was a discussion couple of months about about adding a server-side git hook in savannah to prevent such commits, but it was decided against such forcible approach. perhaps warning about dirty submodules in 'vc-dwim' is more polite? http://lists.gnu.org/archive/html/coreutils/2015-04/msg00017.html regards, - assaf --------------040506060208040001080901 Content-Type: text/x-diff; name="vc-dwim-ignore-git-submodules.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="vc-dwim-ignore-git-submodules.patch" From fb509424ca4b2b5f69f4ab52959d1cb03e7ebd5a Mon Sep 17 00:00:00 2001 From: Assaf Gordon <assafgordon@HIDDEN> Date: Wed, 22 Jul 2015 19:40:52 -0400 Subject: [PATCH] VC.pm: ignore changes in git submodules --- VC.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/VC.pm b/VC.pm index 81a2390..039f312 100644 --- a/VC.pm +++ b/VC.pm @@ -57,8 +57,9 @@ my $vc_cmd = GIT() => { AUTHOR_FMT => '--author=%s', - DIFF_COMMAND => [qw(git diff -B -C HEAD --)], - DIFF_PRISTINE => [qw(git diff --no-ext-diff -B -C HEAD --)], + DIFF_COMMAND => [qw(git diff --ignore-submodules=all -B -C HEAD --)], + DIFF_PRISTINE => [qw(git diff --ignore-submodules=all --no-ext-diff + -B -C HEAD --)], VALID_DIFF_EXIT_STATUS => {0 => 1}, COMMIT_COMMAND => [qw(git commit -q -F)], # is-version-controlled-file: true, if "git cat-file -t HEAD:$file" -- 1.9.1 --------------040506060208040001080901--
Assaf Gordon <assafgordon@HIDDEN>
:bug-vc-dwim@HIDDEN
.
Full text available.bug-vc-dwim@HIDDEN
:bug#21120
; Package vc-dwim
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.