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 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 NNTP newsgroup(s).