From: Gabriel <g2p.code@gmail.com>
To: git@vger.kernel.org
Cc: Peter Krefting <peter@softwolves.pp.se>, Gabriel <g2p.code@gmail.com>
Subject: [PATCH] import-tars: Make it possible to include the original commit ID
Date: Thu, 18 Feb 2010 16:02:12 +0100 [thread overview]
Message-ID: <1266505333-20286-1-git-send-email-g2p.code@gmail.com> (raw)
In-Reply-To: <20100218132709.8CEBA2FC07@perkele>
From: Peter Krefting <peter@softwolves.pp.se>
Add an option --readpax which makes import-tars read the commit ID
stored by git-archive, adding it to the default commit message.
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Gabriel <g2p.code@gmail.com>
---
That's a sensible patch, thanks.
A small correction; when both --readpax and --metainfo=msg are passed,
incorporate both message and original sha1. I amended your commit.
contrib/fast-import/import-tars.perl | 27 ++++++++++++++++++++++++---
1 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/contrib/fast-import/import-tars.perl b/contrib/fast-import/import-tars.perl
index a5170a1..f41480e 100755
--- a/contrib/fast-import/import-tars.perl
+++ b/contrib/fast-import/import-tars.perl
@@ -14,14 +14,20 @@
##
## echo 'This is the commit message' > myfile.tar.bz2.msg
## perl import-tars.perl --metainfo=msg myfile.tar.bz2
+##
+## Use --readpax to read the pax_global_header generated by git archive.
+## The commit ID stored in the header will be appended to the default
+## generated commit message for the imported tarball. If the parameter
+## is not given, the pax_global_header is ignored.
use strict;
use Getopt::Long;
my $metaext = '';
+my $readpax;
-die "usage: import-tars [--metainfo=extension] *.tar.{gz,bz2,lzma,xz,Z}\n"
- unless GetOptions('metainfo=s' => \$metaext) && @ARGV;
+die "usage: import-tars [--metainfo=extension] [--readpax] *.tar.{gz,bz2,lzma,xz,Z}\n"
+ unless GetOptions('metainfo=s' => \$metaext, 'readpax' => \$readpax) && @ARGV;
my $branch_name = 'import-tars';
my $branch_ref = "refs/heads/$branch_name";
@@ -61,6 +67,7 @@ foreach my $tar_file (@ARGV)
my $author_time = 0;
my $next_mark = 1;
my $have_top_dir = 1;
+ my $orig_commitid = '';
my ($top_dir, %files);
while (read(I, $_, 512) == 512) {
@@ -95,6 +102,16 @@ foreach my $tar_file (@ARGV)
$size = oct $size;
$mtime = oct $mtime;
next if $typeflag == 5; # directory
+ if (defined $readpax && $typeflag eq 'g' && $name eq 'pax_global_header')
+ {
+ while ($size > 0 && read(I, $_, 512) == 512) {
+ if (/52 comment=([0-9a-f]{40})/)
+ {
+ $orig_commitid = $1;
+ }
+ }
+ next;
+ }
print FI "blob\n", "mark :$next_mark\n";
if ($typeflag == 2) { # symbolic link
@@ -124,7 +141,7 @@ foreach my $tar_file (@ARGV)
$have_top_dir = 0 if $top_dir ne $1;
}
- my $commit_msg = "Imported from $tar_file.";
+ my $commit_msg = "Imported from $tar_file.\n";
my $this_committer_name = $committer_name;
my $this_committer_email = $committer_email;
my $this_author_name = $author_name;
@@ -154,6 +171,10 @@ foreach my $tar_file (@ARGV)
close MSG;
}
}
+ if ($orig_commitid ne '')
+ {
+ $commit_msg .= "\nThis tarball was generated by git, from commit id\n$orig_commitid.";
+ }
print FI <<EOF;
commit $branch_ref
--
1.7.0.rc2.31.g618d1
next prev parent reply other threads:[~2010-02-18 15:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-17 19:20 [PATCH] import-tars: properly import git-archive tarballs Gabriel
2010-02-18 9:40 ` Peter Krefting
2010-02-18 13:00 ` Gabriel
2010-02-18 13:24 ` [PATCH] import-tars: Make it possible to include the original commit ID Peter Krefting
2010-02-18 15:02 ` Gabriel [this message]
2010-02-19 8:12 ` Peter Krefting
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=1266505333-20286-1-git-send-email-g2p.code@gmail.com \
--to=g2p.code@gmail.com \
--cc=git@vger.kernel.org \
--cc=peter@softwolves.pp.se \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.