public inbox for patchutils-list@sourceware.org
 help / color / mirror / Atom feed
* [patch 0/1] New feature for splitdiff
@ 2009-02-02 22:14 Wolfram Sang
  2009-02-02 22:14 ` [patch 1/1] splitdiff: add option to extract the whole tree of subdiffs Wolfram Sang
  0 siblings, 1 reply; 3+ messages in thread
From: Wolfram Sang @ 2009-02-02 22:14 UTC (permalink / raw)
  To: patchutils-list

Hello,

I missed a feature for splitdiff and took an hour to implement it. Now, using
the option "-t", you can recreate the directory structure from a combined set
of diffs. See the description of the patch for more information. Hope you like
it and consider it for inclusion.

Kind regards,

   Wolfram Sang

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [patch 1/1] splitdiff: add option to extract the whole tree of subdiffs
  2009-02-02 22:14 [patch 0/1] New feature for splitdiff Wolfram Sang
@ 2009-02-02 22:14 ` Wolfram Sang
  2009-02-03 11:12   ` [patch v2] " Wolfram Sang
  0 siblings, 1 reply; 3+ messages in thread
From: Wolfram Sang @ 2009-02-02 22:14 UTC (permalink / raw)
  To: patchutils-list; +Cc: Wolfram Sang

[-- Attachment #1: splitdiff_create_tree --]
[-- Type: text/plain, Size: 2027 bytes --]

Sometimes I get a huge patch blob (a couple of MB) which touches several files
all over a base directory (in this case the linux kernel tree). This new option
to splitdiff creates the path for every subdiff inside the blob and extracts it
to there. So, in the end, you get a directory tree you are familiar with and
can easily find the small diffs which are of interest to you. Also, useful for
grepping in certain parts of the tree.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
 splitdiff.in |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

Index: splitdiff.in
===================================================================
--- splitdiff.in.orig
+++ splitdiff.in
@@ -18,7 +18,10 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 use Getopt::Std;
-getopts('p:v-:ad', \%opts);
+use File::Basename;
+use File::Path;
+
+getopts('p:v-:adt', \%opts);
 if ($opts{'-'} && $opts{'-'} eq 'version') {
     print "splitdiff - patchutils version @VERSION@\n";
     exit 0;
@@ -29,6 +32,7 @@ if ($opts{'-'} && $opts{'-'} eq 'help') 
     print "  -a              split out every single file-level patch\n";
     print "  -p N            pathname components to ignore\n";
     print "  -d              use output filenames like a_b.c for a/b.c\n";
+    print "  -t              create the whole tree of subdiffs (selects -a, drops -d)";
     exit 0;
 }
 
@@ -44,6 +48,10 @@ sub process {
     if ($opts{d}) {
 	$out = $_[2];
 	$out =~ s,/,_,g;
+    } elsif ($opts{t})  {
+    	my (undef, $dir) = fileparse($_[2]);
+    	mkpath $dir;
+    	$out = "$_[2].diff";
     } else {
 	$out = sprintf ("%s.part%03d", $ARGV[0], $part);
     }
@@ -66,6 +74,12 @@ if($#ARGV != 0) {
 $getlist = 'lsdiff -n ';
 $getlist .= '--strip='.$opts{p}.' ' if ($opts{p});
 $getlist .= $ARGV[0]; # Yuck.  How do you do this properly in perl?
+
+if ($opts{t}) {
+    $opts{a} = 1;
+    undef $opts{d};
+}
+
 open(LIST, '-|', $getlist) or die "Can't run lsdiff";
 @list = <LIST>;
 close LIST;

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [patch v2] splitdiff: add option to extract the whole tree of  subdiffs
  2009-02-02 22:14 ` [patch 1/1] splitdiff: add option to extract the whole tree of subdiffs Wolfram Sang
@ 2009-02-03 11:12   ` Wolfram Sang
  0 siblings, 0 replies; 3+ messages in thread
From: Wolfram Sang @ 2009-02-03 11:12 UTC (permalink / raw)
  To: patchutils-list

[-- Attachment #1: Type: text/plain, Size: 2331 bytes --]

Sometimes I get a huge patch blob (a couple of MB) which touches several files
all over a base directory (in this case the linux kernel tree). This new option
to splitdiff creates the path for every subdiff inside the blob and extracts it
to there. So, in the end, you get a directory tree you are familiar with and
can easily find the small diffs which are of interest to you. Also, useful for
grepping in certain parts of the tree.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---

Changes since V1:

  - make it a p1-patch
  - add '\n' to help-test

Stupid mistakes, sorry for the noise.

 splitdiff.in |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

Index: splitdiff.in
===================================================================
--- a/splitdiff.in.orig
+++ b/splitdiff.in
@@ -18,7 +18,10 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 use Getopt::Std;
-getopts('p:v-:ad', \%opts);
+use File::Basename;
+use File::Path;
+
+getopts('p:v-:adt', \%opts);
 if ($opts{'-'} && $opts{'-'} eq 'version') {
     print "splitdiff - patchutils version @VERSION@\n";
     exit 0;
@@ -29,6 +32,7 @@ if ($opts{'-'} && $opts{'-'} eq 'help') 
     print "  -a              split out every single file-level patch\n";
     print "  -p N            pathname components to ignore\n";
     print "  -d              use output filenames like a_b.c for a/b.c\n";
+    print "  -t              create the whole tree of subdiffs (selects -a, drops -d)\n";
     exit 0;
 }
 
@@ -44,6 +48,10 @@ sub process {
     if ($opts{d}) {
 	$out = $_[2];
 	$out =~ s,/,_,g;
+    } elsif ($opts{t})  {
+    	my (undef, $dir) = fileparse($_[2]);
+    	mkpath $dir;
+    	$out = "$_[2].diff";
     } else {
 	$out = sprintf ("%s.part%03d", $ARGV[0], $part);
     }
@@ -66,6 +74,12 @@ if($#ARGV != 0) {
 $getlist = 'lsdiff -n ';
 $getlist .= '--strip='.$opts{p}.' ' if ($opts{p});
 $getlist .= $ARGV[0]; # Yuck.  How do you do this properly in perl?
+
+if ($opts{t}) {
+    $opts{a} = 1;
+    undef $opts{d};
+}
+
 open(LIST, '-|', $getlist) or die "Can't run lsdiff";
 @list = <LIST>;
 close LIST;


-- 
  Dipl.-Ing. Wolfram Sang | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-02-03 11:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-02 22:14 [patch 0/1] New feature for splitdiff Wolfram Sang
2009-02-02 22:14 ` [patch 1/1] splitdiff: add option to extract the whole tree of subdiffs Wolfram Sang
2009-02-03 11:12   ` [patch v2] " Wolfram Sang

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 read-only IMAP folder(s) and NNTP newsgroup(s).