War on whitespace

This uses "git-apply --whitespace=strip" to fix whitespace errors that have
crept in to our source files over time.  There are a few files that need
to have trailing whitespaces (most notably, test vectors).  The results
still passes the test, and build result in Documentation/ area is unchanged.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2007-06-07 00:04:01 -07:00
parent d44c782bbd
commit a6080a0a44
256 changed files with 645 additions and 852 deletions

View File

@ -3,19 +3,19 @@
# This tool is copyright (c) 2005, Martin Langhoff.
# It is released under the Gnu Public License, version 2.
#
# The basic idea is to walk the output of tla abrowse,
# fetch the changesets and apply them.
# The basic idea is to walk the output of tla abrowse,
# fetch the changesets and apply them.
#
=head1 Invocation
git-archimport [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
[ -D depth] [ -t tempdir ] <archive>/<branch> [ <archive>/<branch> ]
git-archimport [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
[ -D depth] [ -t tempdir ] <archive>/<branch> [ <archive>/<branch> ]
Imports a project from one or more Arch repositories. It will follow branches
and repositories within the namespaces defined by the <archive/branch>
parameters supplied. If it cannot find the remote branch a merge comes from
it will just import it as a regular commit. If it can find it, it will mark it
it will just import it as a regular commit. If it can find it, it will mark it
as a merge whenever possible.
See man (1) git-archimport for more details.
@ -25,14 +25,14 @@ See man (1) git-archimport for more details.
- create tag objects instead of ref tags
- audit shell-escaping of filenames
- hide our private tags somewhere smarter
- find a way to make "cat *patches | patch" safe even when patchfiles are missing newlines
- find a way to make "cat *patches | patch" safe even when patchfiles are missing newlines
- sort and apply patches by graphing ancestry relations instead of just
relying in dates supplied in the changeset itself.
tla ancestry-graph -m could be helpful here...
=head1 Devel tricks
Add print in front of the shell commands invoked via backticks.
Add print in front of the shell commands invoked via backticks.
=head1 Devel Notes
@ -126,16 +126,16 @@ sub do_abrowse {
my $stage = shift;
while (my ($limit, $level) = each %arch_branches) {
next unless $level == $stage;
open ABROWSE, "$TLA abrowse -fkD --merges $limit |"
open ABROWSE, "$TLA abrowse -fkD --merges $limit |"
or die "Problems with tla abrowse: $!";
my %ps = (); # the current one
my $lastseen = '';
while (<ABROWSE>) {
chomp;
# first record padded w 8 spaces
if (s/^\s{8}\b//) {
my ($id, $type) = split(m/\s+/, $_, 2);
@ -147,13 +147,13 @@ sub do_abrowse {
push (@psets, \%last_ps);
$psets{ $last_ps{id} } = \%last_ps;
}
my $branch = extract_versionname($id);
%ps = ( id => $id, branch => $branch );
if (%last_ps && ($last_ps{branch} eq $branch)) {
$ps{parent_id} = $last_ps{id};
}
$arch_branches{$branch} = 1;
$lastseen = 'id';
@ -166,16 +166,16 @@ sub do_abrowse {
$ps{type} = 't';
# read which revision we've tagged when we parse the log
$ps{tag} = $1;
} else {
} else {
warn "Unknown type $type";
}
$arch_branches{$branch} = 1;
$lastseen = 'id';
} elsif (s/^\s{10}//) {
# 10 leading spaces or more
} elsif (s/^\s{10}//) {
# 10 leading spaces or more
# indicate commit metadata
# date
if ($lastseen eq 'id' && m/^(\d{4}-\d\d-\d\d \d\d:\d\d:\d\d)/){
$ps{date} = $1;
@ -186,12 +186,12 @@ sub do_abrowse {
} elsif ($lastseen eq 'merges' && s/^\s{2}//) {
my $id = $_;
push (@{$ps{merges}}, $id);
# aggressive branch finding:
if ($opt_D) {
my $branch = extract_versionname($id);
my $repo = extract_reponame($branch);
if (archive_reachable($repo) &&
!defined $arch_branches{$branch}) {
$arch_branches{$branch} = $stage + 1;
@ -208,10 +208,10 @@ sub do_abrowse {
if (@psets && $psets[$#psets]{branch} eq $ps{branch}) {
$temp{parent_id} = $psets[$#psets]{id};
}
push (@psets, \%temp);
push (@psets, \%temp);
$psets{ $temp{id} } = \%temp;
}
}
close ABROWSE or die "$TLA abrowse failed on $limit\n";
}
} # end foreach $root
@ -253,7 +253,7 @@ unless (-d $git_dir) { # initial import
while (my $file = readdir(DIR)) {
# skip non-interesting-files
next unless -f "$ptag_dir/$file";
# convert first '--' to '/' from old git-archimport to use
# as an archivename/c--b--v private tag
if ($file !~ m!,!) {
@ -275,7 +275,7 @@ sub extract_reponame {
my $fq_cvbr = shift; # archivename/[[[[category]branch]version]revision]
return (split(/\//, $fq_cvbr))[0];
}
sub extract_versionname {
my $name = shift;
$name =~ s/--(?:patch|version(?:fix)?|base)-\d+$//;
@ -283,7 +283,7 @@ sub extract_versionname {
}
# convert a fully-qualified revision or version to a unique dirname:
# normalperson@yhbt.net-05/mpd--uclinux--1--patch-2
# normalperson@yhbt.net-05/mpd--uclinux--1--patch-2
# becomes: normalperson@yhbt.net-05,mpd--uclinux--1
#
# the git notion of a branch is closer to
@ -339,7 +339,7 @@ sub git_branchname {
sub process_patchset_accurate {
my $ps = shift;
# switch to that branch if we're not already in that branch:
if (-e "$git_dir/refs/heads/$ps->{branch}") {
system('git-checkout','-f',$ps->{branch}) == 0 or die "$! $?\n";
@ -348,7 +348,7 @@ sub process_patchset_accurate {
my $rm = safe_pipe_capture('git-ls-files','--others','-z');
rmtree(split(/\0/,$rm)) if $rm;
}
# Apply the import/changeset/merge into the working tree
my $dir = sync_to_ps($ps);
# read the new log entry:
@ -361,9 +361,9 @@ sub process_patchset_accurate {
parselog($ps, \@commitlog);
if ($ps->{id} =~ /--base-0$/ && $ps->{id} ne $psets[0]{id}) {
# this should work when importing continuations
# this should work when importing continuations
if ($ps->{tag} && (my $branchpoint = eval { ptag($ps->{tag}) })) {
# find where we are supposed to branch from
if (! -e "$git_dir/refs/heads/$ps->{branch}") {
system('git-branch',$ps->{branch},$branchpoint) == 0 or die "$! $?\n";
@ -388,8 +388,8 @@ sub process_patchset_accurate {
}
# allow multiple bases/imports here since Arch supports cherry-picks
# from unrelated trees
}
}
# update the index with all the changes we got
system('git-diff-files --name-only -z | '.
'git-update-index --remove -z --stdin') == 0 or die "$! $?\n";
@ -402,7 +402,7 @@ sub process_patchset_accurate {
# does not handle permissions or any renames involving directories
sub process_patchset_fast {
my $ps = shift;
#
#
# create the branch if needed
#
if ($ps->{type} eq 'i' && !$import) {
@ -417,9 +417,9 @@ sub process_patchset_fast {
# new branch! we need to verify a few things
die "Branch on a non-tag!" unless $ps->{type} eq 't';
my $branchpoint = ptag($ps->{tag});
die "Tagging from unknown id unsupported: $ps->{tag}"
die "Tagging from unknown id unsupported: $ps->{tag}"
unless $branchpoint;
# find where we are supposed to branch from
if (! -e "$git_dir/refs/heads/$ps->{branch}") {
system('git-branch',$ps->{branch},$branchpoint) == 0 or die "$! $?\n";
@ -435,13 +435,13 @@ sub process_patchset_fast {
}
system('git-checkout',$ps->{branch}) == 0 or die "$! $?\n";
return 0;
}
}
die $! if $?;
}
}
#
# Apply the import/changeset/merge into the working tree
#
#
if ($ps->{type} eq 'i' || $ps->{type} eq 't') {
apply_import($ps) or die $!;
$stats{import_or_tag}++;
@ -455,10 +455,10 @@ sub process_patchset_fast {
# prepare update git's index, based on what arch knows
# about the pset, resolve parents, etc
#
my @commitlog = safe_pipe_capture($TLA,'cat-archive-log',$ps->{id});
my @commitlog = safe_pipe_capture($TLA,'cat-archive-log',$ps->{id});
die "Error in cat-archive-log: $!" if $?;
parselog($ps,\@commitlog);
# imports don't give us good info
@ -485,10 +485,10 @@ sub process_patchset_fast {
if (@$ren % 2) {
die "Odd number of entries in rename!?";
}
while (@$ren) {
my $from = shift @$ren;
my $to = shift @$ren;
my $to = shift @$ren;
unless (-d dirname($to)) {
mkpath(dirname($to)); # will die on err
@ -529,20 +529,20 @@ if ($opt_f) {
"Things may be a bit slow\n";
*process_patchset = *process_patchset_accurate;
}
foreach my $ps (@psets) {
# process patchsets
$ps->{branch} = git_branchname($ps->{id});
#
# ensure we have a clean state
#
# ensure we have a clean state
#
if (my $dirty = `git-diff-files`) {
die "Unclean tree when about to process $ps->{id} " .
" - did we fail to commit cleanly before?\n$dirty";
}
die $! if $?;
#
# skip commits already in repo
#
@ -559,7 +559,7 @@ foreach my $ps (@psets) {
my $tree = `git-write-tree`;
die "cannot write tree $!" if $?;
chomp $tree;
#
# Who's your daddy?
#
@ -570,18 +570,18 @@ foreach my $ps (@psets) {
close HEAD;
chomp $p;
push @par, '-p', $p;
} else {
} else {
if ($ps->{type} eq 's') {
warn "Could not find the right head for the branch $ps->{branch}";
}
}
}
if ($ps->{merges}) {
push @par, find_parents($ps);
}
#
#
# Commit, tag and clean state
#
$ENV{TZ} = 'GMT';
@ -592,14 +592,14 @@ foreach my $ps (@psets) {
$ENV{GIT_COMMITTER_EMAIL} = $ps->{email};
$ENV{GIT_COMMITTER_DATE} = $ps->{date};
my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par)
my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par)
or die $!;
print WRITER $ps->{summary},"\n\n";
print WRITER $ps->{message},"\n";
# make it easy to backtrack and figure out which Arch revision this was:
print WRITER 'git-archimport-id: ',$ps->{id},"\n";
close WRITER;
my $commitid = <READER>; # read
chomp $commitid;
@ -611,7 +611,7 @@ foreach my $ps (@psets) {
}
#
# Update the branch
#
#
open HEAD, ">","$git_dir/refs/heads/$ps->{branch}";
print HEAD $commitid;
close HEAD;
@ -640,7 +640,7 @@ exit 0;
sub sync_to_ps {
my $ps = shift;
my $tree_dir = $tmp.'/'.tree_dirname($ps->{id});
$opt_v && print "sync_to_ps($ps->{id}) method: ";
if (-d $tree_dir) {
@ -674,7 +674,7 @@ sub sync_to_ps {
safe_pipe_capture($TLA,'get','--no-pristine',$ps->{id},$tree_dir);
$stats{get_new}++;
}
# added -I flag to rsync since we're going to fast! AIEEEEE!!!!
system('rsync','-aI','--delete','--exclude',$git_dir,
# '--exclude','.arch-inventory',
@ -691,15 +691,15 @@ sub apply_import {
mkpath($tmp);
safe_pipe_capture($TLA,'get','-s','--no-pristine',$ps->{id},"$tmp/import");
die "Cannot get import: $!" if $?;
die "Cannot get import: $!" if $?;
system('rsync','-aI','--delete', '--exclude',$git_dir,
'--exclude','.arch-ids','--exclude','{arch}',
"$tmp/import/", './');
die "Cannot rsync import:$!" if $?;
rmtree("$tmp/import");
die "Cannot remove tempdir: $!" if $?;
return 1;
}
@ -712,13 +712,13 @@ sub apply_cset {
# get the changeset
safe_pipe_capture($TLA,'get-changeset',$ps->{id},"$tmp/changeset");
die "Cannot get changeset: $!" if $?;
# apply patches
if (`find $tmp/changeset/patches -type f -name '*.patch'`) {
# this can be sped up considerably by doing
# (find | xargs cat) | patch
# but that can get mucked up by patches
# with missing trailing newlines or the standard
# with missing trailing newlines or the standard
# 'missing newline' flag in the patch - possibly
# produced with an old/buggy diff.
# slow and safe, we invoke patch once per patchfile
@ -741,7 +741,7 @@ sub apply_cset {
# bring in new files
system('rsync','-aI','--exclude',$git_dir,
'--exclude','.arch-ids',
'--exclude','.arch-ids',
'--exclude', '{arch}',
"$tmp/changeset/new-files-archive/",'./');
@ -789,7 +789,7 @@ sub parselog {
removed_files => 1,
removed_directories => 1,
);
chomp (@$log);
while ($_ = shift @$log) {
if (/^Continuation-of:\s*(.*)/) {
@ -828,7 +828,7 @@ sub parselog {
}
}
}
# drop leading empty lines from the log message
while (@$log && $log->[0] eq '') {
shift @$log;
@ -842,7 +842,7 @@ sub parselog {
$ps->{summary} = $log->[0] . '...';
}
$ps->{message} = join("\n",@$log);
# skip Arch control files, unescape pika-escaped files
foreach my $k (keys %want_headers) {
next unless (defined $ps->{$k});
@ -867,7 +867,7 @@ sub parselog {
# write/read a tag
sub tag {
my ($tag, $commit) = @_;
if ($opt_o) {
$tag =~ s|/|--|g;
} else {
@ -875,7 +875,7 @@ sub tag {
$patchname =~ s/.*--//;
$tag = git_branchname ($tag) . '--' . $patchname;
}
if ($commit) {
open(C,">","$git_dir/refs/tags/$tag")
or die "Cannot create tag $tag: $!\n";
@ -902,8 +902,8 @@ sub ptag {
my ($tag, $commit) = @_;
# don't use subdirs for tags yet, it could screw up other porcelains
$tag =~ s|/|,|g;
$tag =~ s|/|,|g;
my $tag_file = "$ptag_dir/$tag";
my $tag_branch_dir = dirname($tag_file);
mkpath($tag_branch_dir) unless (-d $tag_branch_dir);
@ -915,7 +915,7 @@ sub ptag {
or die "Cannot write tag $tag: $!\n";
close(C)
or die "Cannot write tag $tag: $!\n";
$rptags{$commit} = $tag
$rptags{$commit} = $tag
unless $tag =~ m/--base-0$/;
} else { # read
# if the tag isn't there, return 0
@ -941,7 +941,7 @@ sub find_parents {
# Identify what branches are merging into me
# and whether we are fully merged
# git-merge-base <headsha> <headsha> should tell
# me what the base of the merge should be
# me what the base of the merge should be
#
my $ps = shift;
@ -963,14 +963,14 @@ sub find_parents {
}
#
# foreach branch find a merge base and walk it to the
# foreach branch find a merge base and walk it to the
# head where we are, collecting the merged patchsets that
# Arch has recorded. Keep that in @have
# Compare that with the commits on the other branch
# between merge-base and the tip of the branch (@need)
# and see if we have a series of consecutive patches
# starting from the merge base. The tip of the series
# of consecutive patches merged is our new parent for
# of consecutive patches merged is our new parent for
# that branch.
#
foreach my $branch (keys %branches) {
@ -979,13 +979,13 @@ sub find_parents {
next unless -e "$git_dir/refs/heads/$branch";
my $mergebase = `git-merge-base $branch $ps->{branch}`;
if ($?) {
# Don't die here, Arch supports one-way cherry-picking
# between branches with no common base (or any relationship
# at all beforehand)
warn "Cannot find merge base for $branch and $ps->{branch}";
next;
}
if ($?) {
# Don't die here, Arch supports one-way cherry-picking
# between branches with no common base (or any relationship
# at all beforehand)
warn "Cannot find merge base for $branch and $ps->{branch}";
next;
}
chomp $mergebase;
# now walk up to the mergepoint collecting what patches we have
@ -1010,7 +1010,7 @@ sub find_parents {
# merge what we have with what ancestors have
%have = (%have, %ancestorshave);
# see what the remote branch has - these are the merges we
# see what the remote branch has - these are the merges we
# will want to have in a consecutive series from the mergebase
my $otherbranchtip = git_rev_parse($branch);
my @needraw = `git-rev-list --topo-order $otherbranchtip ^$mergebase`;
@ -1018,7 +1018,7 @@ sub find_parents {
foreach my $needps (@needraw) { # get the psets
$needps = commitid2pset($needps);
# git-rev-list will also
# list commits merged in via earlier
# list commits merged in via earlier
# merges. we are only interested in commits
# from the branch we're looking at
if ($branch eq $needps->{branch}) {
@ -1054,7 +1054,7 @@ sub find_parents {
next unless ref $psets{$p}{merges};
my @merges = @{$psets{$p}{merges}};
foreach my $merge (@merges) {
if ($parents{$merge}) {
if ($parents{$merge}) {
delete $parents{$merge};
}
}
@ -1079,10 +1079,10 @@ sub git_rev_parse {
sub commitid2pset {
my $commitid = shift;
chomp $commitid;
my $name = $rptags{$commitid}
my $name = $rptags{$commitid}
|| die "Cannot find reverse tag mapping for $commitid";
$name =~ s|,|/|;
my $ps = $psets{$name}
my $ps = $psets{$name}
|| (print Dumper(sort keys %psets)) && die "Cannot find patchset for $name";
return $ps;
}
@ -1112,7 +1112,7 @@ sub archive_reachable {
my $archive = shift;
return 1 if $reachable{$archive};
return 0 if $unreachable{$archive};
if (system "$TLA whereis-archive $archive >/dev/null") {
if ($opt_a && (system($TLA,'register-archive',
"http://mirrors.sourcecontrol.net/$archive") == 0)) {
@ -1127,4 +1127,3 @@ sub archive_reachable {
return 1;
}
}