GNU bug report logs - #38334
adding --dry-run option to vc-dwim [patch]

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: vc-dwim; Reported by: Karl Berry <karl@HIDDEN>; Keywords: patch; dated Fri, 22 Nov 2019 22:52:05 UTC; Maintainer for vc-dwim is bug-vc-dwim@HIDDEN.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 22 Nov 2019 22:51:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 22 17:51:44 2019
Received: from localhost ([127.0.0.1]:55681 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1iYHmB-0006gk-Mo
	for submit <at> debbugs.gnu.org; Fri, 22 Nov 2019 17:51:44 -0500
Received: from lists.gnu.org ([209.51.188.17]:48819)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <karl@HIDDEN>) id 1iYHlu-0006gA-2f
 for submit <at> debbugs.gnu.org; Fri, 22 Nov 2019 17:51:33 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:45905)
 by lists.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <karl@HIDDEN>) id 1iYHlq-0003hu-Q0
 for bug-vc-dwim@HIDDEN; Fri, 22 Nov 2019 17:51:25 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_MED,
 URIBL_BLOCKED autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <karl@HIDDEN>) id 1iYHlo-00063g-QZ
 for bug-vc-dwim@HIDDEN; Fri, 22 Nov 2019 17:51:22 -0500
Received: from freefriends.org ([96.88.95.60]:56020)
 by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)
 (Exim 4.71) (envelope-from <karl@HIDDEN>)
 id 1iYHlo-00062F-F1
 for bug-vc-dwim@HIDDEN; Fri, 22 Nov 2019 17:51:20 -0500
X-Envelope-From: karl@HIDDEN
X-Envelope-To: <bug-vc-dwim@HIDDEN>
Received: from freefriends.org (freefriends.org [96.88.95.60])
 by freefriends.org (8.14.7/8.14.7) with ESMTP id xAMMpHHQ004484
 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)
 for <bug-vc-dwim@HIDDEN>; Fri, 22 Nov 2019 15:51:17 -0700
Received: (from apache@localhost)
 by freefriends.org (8.14.7/8.14.7/Submit) id xAMMpH9u004483;
 Fri, 22 Nov 2019 15:51:17 -0700
Date: Fri, 22 Nov 2019 15:51:17 -0700
Message-Id: <201911222251.xAMMpH9u004483@HIDDEN>
From: Karl Berry <karl@HIDDEN>
To: bug-vc-dwim@HIDDEN
Subject: adding --dry-run option to vc-dwim [patch]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
 [fuzzy]
X-Received-From: 96.88.95.60
X-Spam-Score: -1.4 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
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: -2.4 (--)

Possible NEWS entry, under "New features":

  vc-dwim accepts a new option: --dry-run (-n)

Several of the changes are just replacing
  <code>
with
  if ($dry_run) {
    print "msg";
 } else {
   <code>
 }
hence they look longer than they actually are.

2019-11-14  Karl Berry  <karl@HIDDEN>

	vc-dwim: New option vc-dwim --dry-run (aka -n).

	* vc-dwim.pl ($dry_run): new variable.
	(GetOptions): set it.
	(run_command): conditionalize system call and INHIBIT_STDOUT.
	(main): conditionalize initialize operations, rename, symlink.
	* doc/vc-dwim.texi (vc-dwim Invocation): document it.

--- doc/vc-dwim.texi	2019-11-13 17:36:14.920575492 -0800
+++ n.texi	2019-11-17 18:23:06.972699737 -0800
@@ -252,4 +252,8 @@
 Perform the commit, too.
 
+@item -n
+@itemx --dry-run
+Print the commands that would be run instead of running them.
+
 @item --diff
 Determine which version control system manages the first
--- vc-dwim.pl	2019-11-17 18:43:44.673256552 -0800
+++ n.pl	2019-11-21 18:14:13.250781876 -0800
@@ -61,4 +61,5 @@
 my $verbose = 0;
 my $debug = 0;
+my $dry_run = 0;
 
 sub usage ($)
@@ -248,5 +249,5 @@
      DIE_UPON_FAILURE => 1,
      INHIBIT_STDERR => 0,
-     INHIBIT_STDOUT => 1,
+     INHIBIT_STDOUT => ! $dry_run, # keep stdout if just printing
     );
 
@@ -292,5 +293,11 @@
 
   my $fail = 1;
-  my $rc = 0xffff & system @cmd;
+  my $rc;
+  if ($dry_run) {
+    print "$ME: would run: @cmd\n";
+    $rc = 0;
+  } else {
+    $rc = 0xffff & system @cmd;
+  }
 
   # Restore stdout.
@@ -734,4 +741,6 @@
      'print-vc-list' =>
        sub { print join (' ', VC::supported_vc_names()), "\n"; exit },
+     n => \$dry_run,
+     'dry-run' => \$dry_run,
      debug => \$debug,
      verbose => \$verbose,
@@ -757,13 +766,21 @@
       do_at ($adm, sub
       {
-        ! (mkdir ('c') || $! == EEXIST)
-          and die "$ME: failed to create $adm/c: $!\n";
-        chdir 'c' or die "$ME: failed to chdir to $adm/c: $!\n";
+        if ($dry_run) {
+          print "$ME: would mkdir 'c' in $adm\n";
+        } else {
+          ! (mkdir ('c') || $! == EEXIST)
+            and die "$ME: failed to create $adm/c: $!\n";
+          chdir 'c' or die "$ME: failed to chdir to $adm/c: $!\n";
+        }
 
         # touch ChangeLog || die
-        open FH, '>>', $cl
-          or die "$ME: failed to open '$cl' for writing: $!\n";
-        close FH
-          or die "$ME: failed to write '$cl': $!\n";
+        if ($dry_run) {
+          print "$ME: would touch $cl in $adm\n";
+        } else {
+          open FH, '>>', $cl
+            or die "$ME: failed to open '$cl' for writing: $!\n";
+          close FH
+            or die "$ME: failed to write '$cl': $!\n";
+        }
 
         # Initialize the git repo, add ChangeLog and commit it.
@@ -775,11 +792,21 @@
 
       # If a ChangeLog file exists in the current directory, rename it
-      # to ChangeLog~, deliberately ignoring any rename failure.
-      rename $cl, "$cl~";
+      # deliberately ignoring any rename failure. (But only report the
+      # rename for dry runs if it does exist.)
+      my $cl_top = "../../$cl";
+      if ($dry_run && -e $cl_top) {
+        print "$ME: would rename($cl_top, $cl_top~)\n";
+      } else {
+        rename $cl_top, "$cl_top~";
+      }
 
       # Create the top-level ChangeLog symlink into $adm/c:
       my $cl_sub = "$adm/c/$cl";
-      symlink $cl_sub, $cl
-        or die "$ME: failed to create symlink, $cl, to $cl_sub: $!\n";
+      if ($dry_run) {
+        print "$ME: would symlink($cl_sub, $cl_top)\n";
+      } else {
+        symlink $cl_sub, $cl_top
+          or die "$ME: failed to create symlink, $cl, to $cl_sub: $!\n";
+      }
 
       exit 0;
@@ -799,5 +826,10 @@
         and verbose_cmd \@cmd;
 
-      exec @cmd;
+      if ($dry_run) {
+        print "$ME: would run: @cmd\n";
+        exit 0;
+      } else {
+        exec @cmd;
+      }
       exit 1;
     }




Acknowledgement sent to Karl Berry <karl@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-vc-dwim@HIDDEN. Full text available.
Report forwarded to bug-vc-dwim@HIDDEN:
bug#38334; Package vc-dwim. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.