X-Loop: help-debbugs@HIDDEN Subject: bug#21120: vc-chlog fails if git submodules are dirty Resent-From: Assaf Gordon <assafgordon@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-vc-dwim@HIDDEN Resent-Date: Thu, 23 Jul 2015 00:11:02 +0000 Resent-Message-ID: <handler.21120.B.143761024228489 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 21120 X-GNU-PR-Package: vc-dwim X-GNU-PR-Keywords: To: 21120 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-vc-dwim@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.143761024228489 (code B ref -1); Thu, 23 Jul 2015 00:11:02 +0000 Received: (at submit) by debbugs.gnu.org; 23 Jul 2015 00:10:42 +0000 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 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-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--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Assaf Gordon <assafgordon@HIDDEN> Subject: bug#21120: Acknowledgement (vc-chlog fails if git submodules are dirty) Message-ID: <handler.21120.B.143761024228489.ack <at> debbugs.gnu.org> References: <55B02D47.5060203@HIDDEN> X-Gnu-PR-Message: ack 21120 X-Gnu-PR-Package: vc-dwim Reply-To: 21120 <at> debbugs.gnu.org Date: Thu, 23 Jul 2015 00:11:03 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-vc-dwim@HIDDEN If you wish to submit further information on this problem, please send it to 21120 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 21120: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D21120 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#21120: [Bug-vc-dwim] bug#21120: vc-chlog fails if git submodules are dirty Resent-From: Jim Meyering <jim@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-vc-dwim@HIDDEN Resent-Date: Tue, 28 Jul 2015 05:23:02 +0000 Resent-Message-ID: <handler.21120.B21120.143806095127604 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 21120 X-GNU-PR-Package: vc-dwim X-GNU-PR-Keywords: To: Assaf Gordon <assafgordon@HIDDEN> Cc: 21120 <at> debbugs.gnu.org Received: via spool by 21120-submit <at> debbugs.gnu.org id=B21120.143806095127604 (code B ref 21120); Tue, 28 Jul 2015 05:23:02 +0000 Received: (at 21120) by debbugs.gnu.org; 28 Jul 2015 05:22:31 +0000 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> Content-Type: text/plain; charset=UTF-8 X-Spam-Score: -0.7 (/) 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?
X-Loop: help-debbugs@HIDDEN Subject: bug#21120: [Bug-vc-dwim] bug#21120: vc-chlog fails if git submodules are dirty Resent-From: Assaf Gordon <assafgordon@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-vc-dwim@HIDDEN Resent-Date: Wed, 29 Jul 2015 23:45:02 +0000 Resent-Message-ID: <handler.21120.B21120.143821347626266 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 21120 X-GNU-PR-Package: vc-dwim X-GNU-PR-Keywords: To: Jim Meyering <jim@HIDDEN> Cc: 21120 <at> debbugs.gnu.org Received: via spool by 21120-submit <at> debbugs.gnu.org id=B21120.143821347626266 (code B ref 21120); Wed, 29 Jul 2015 23:45:02 +0000 Received: (at 21120) by debbugs.gnu.org; 29 Jul 2015 23:44:36 +0000 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> 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-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--
X-Loop: help-debbugs@HIDDEN Subject: bug#21120: [Bug-vc-dwim] bug#21120: vc-chlog fails if git submodules are dirty Resent-From: Jim Meyering <jim@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-vc-dwim@HIDDEN Resent-Date: Thu, 30 Jul 2015 16:10:02 +0000 Resent-Message-ID: <handler.21120.B21120.143827255017680 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 21120 X-GNU-PR-Package: vc-dwim X-GNU-PR-Keywords: To: Assaf Gordon <assafgordon@HIDDEN> Cc: 21120 <at> debbugs.gnu.org Received: via spool by 21120-submit <at> debbugs.gnu.org id=B21120.143827255017680 (code B ref 21120); Thu, 30 Jul 2015 16:10:02 +0000 Received: (at 21120) by debbugs.gnu.org; 30 Jul 2015 16:09:10 +0000 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> Content-Type: text/plain; charset=UTF-8 X-Spam-Score: -0.7 (/) 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!
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.