Pull GIT 1.2.4 fixes from master

maint
Junio C Hamano 2006-03-01 17:42:30 -08:00
commit 3bddd7dbba
2 changed files with 25 additions and 10 deletions

View File

@ -19,23 +19,24 @@ EOT
exit(1); exit(1);
} }


my $GIT_DIR = `git rev-parse --git-dir`;
exit 1 if $?; # rev-parse would have given "not a git dir" message.
chomp($GIT_DIR);

our ($opt_n, $opt_f, $opt_h, $opt_k, $opt_v); our ($opt_n, $opt_f, $opt_h, $opt_k, $opt_v);
getopts("hnfkv") || usage; getopts("hnfkv") || usage;
usage() if $opt_h; usage() if $opt_h;
@ARGV >= 1 or usage; @ARGV >= 1 or usage;


my $GIT_DIR = `git rev-parse --git-dir`;
exit 1 if $?; # rev-parse would have given "not a git dir" message.
chomp($GIT_DIR);

my (@srcArgs, @dstArgs, @srcs, @dsts); my (@srcArgs, @dstArgs, @srcs, @dsts);
my ($src, $dst, $base, $dstDir); my ($src, $dst, $base, $dstDir);


# remove any trailing slash in arguments
for (@ARGV) { s/\/*$//; }

my $argCount = scalar @ARGV; my $argCount = scalar @ARGV;
if (-d $ARGV[$argCount-1]) { if (-d $ARGV[$argCount-1]) {
$dstDir = $ARGV[$argCount-1]; $dstDir = $ARGV[$argCount-1];
# remove any trailing slash
$dstDir =~ s/\/$//;
@srcArgs = @ARGV[0..$argCount-2]; @srcArgs = @ARGV[0..$argCount-2];


foreach $src (@srcArgs) { foreach $src (@srcArgs) {
@ -46,10 +47,14 @@ if (-d $ARGV[$argCount-1]) {
} }
} }
else { else {
if ($argCount != 2) { if ($argCount < 2) {
print "Error: need at least two arguments\n";
exit(1);
}
if ($argCount > 2) {
print "Error: moving to directory '" print "Error: moving to directory '"
. $ARGV[$argCount-1] . $ARGV[$argCount-1]
. "' not possible; not exisiting\n"; . "' not possible; not existing\n";
exit(1); exit(1);
} }
@srcArgs = ($ARGV[0]); @srcArgs = ($ARGV[0]);
@ -57,6 +62,16 @@ else {
$dstDir = ""; $dstDir = "";
} }


# normalize paths, needed to compare against versioned files and update-index
# also, this is nicer to end-users by doing ".//a/./b/.//./c" ==> "a/b/c"
for (@srcArgs, @dstArgs) {
s|^\./||;
s|/\./|/| while (m|/\./|);
s|//+|/|g;
# Also "a/b/../c" ==> "a/c"
1 while (s,(^|/)[^/]+/\.\./,$1,);
}

my (@allfiles,@srcfiles,@dstfiles); my (@allfiles,@srcfiles,@dstfiles);
my $safesrc; my $safesrc;
my (%overwritten, %srcForDst); my (%overwritten, %srcForDst);

View File

@ -99,7 +99,7 @@ static int reused_delta = 0;


static int pack_revindex_ix(struct packed_git *p) static int pack_revindex_ix(struct packed_git *p)
{ {
unsigned long ui = (unsigned long)(long)p; unsigned long ui = (unsigned long)p;
int i; int i;


ui = ui ^ (ui >> 16); /* defeat structure alignment */ ui = ui ^ (ui >> 16); /* defeat structure alignment */