Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Langhoff <martin@catalyst.net.nz>2005-09-04 14:55:06 +0400
committerJunio C Hamano <junkio@cox.net>2005-09-04 21:28:43 +0400
commit3292ae4794012994560816e6111d27c809f5e86a (patch)
tree3eb0ef958add3445a13ebe0757faca3f57352014 /git-archimport-script
parentce726ec8d80ccce4e4956a026d807cb02bdc6de9 (diff)
[PATCH] archimport autodetects import status, supports incremental imports
If there is no GIT directory, archimport will assume it is an initial import. It now also supports incremental imports, skipping "seen" commits. You can now run it repeatedly to pull new commits from the Arch repository. Signed-off-by: Martin Langhoff <martin@catalyst.net.nz> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-archimport-script')
-rwxr-xr-xgit-archimport-script37
1 files changed, 20 insertions, 17 deletions
diff --git a/git-archimport-script b/git-archimport-script
index 6ff5d7dce0..3c8aab74be 100755
--- a/git-archimport-script
+++ b/git-archimport-script
@@ -49,12 +49,12 @@ $SIG{'PIPE'}="IGNORE";
$ENV{'TZ'}="UTC";
our($opt_h,$opt_v, $opt_T,
- $opt_C,$opt_t, $opt_i);
+ $opt_C,$opt_t);
sub usage() {
print STDERR <<END;
Usage: ${\basename $0} # fetch/update GIT from Arch
- [ -h ] [ -v ] [ -i ] [ -T ]
+ [ -h ] [ -v ] [ -T ]
[ -C GIT_repository ] [ -t tempdir ]
repository/arch-branch [ repository/arch-branch] ...
END
@@ -173,21 +173,19 @@ foreach my $root (@arch_roots) {
## TODO cleanup irrelevant patches
## and put an initial import
## or a full tag
-
-if ($opt_i) { # initial import
+my $import = 0;
+unless (-d '.git') { # initial import
if ($psets[0]{type} eq 'i' || $psets[0]{type} eq 't') {
print "Starting import from $psets[0]{id}\n";
+ `git-init-db`;
+ die $! if $?;
+ $import = 1;
} else {
die "Need to start from an import or a tag -- cannot use $psets[0]{id}";
}
- `git-init-db`;
- die $! if $?;
}
-# process
-my $lastbranch = branchname($psets[0]{id}); # only good for initial import
-my $importseen = $opt_i ? 0 : 1; # start at 1 if opt_i
-
+# process patchsets
foreach my $ps (@psets) {
$ps->{branch} = branchname($ps->{id});
@@ -201,14 +199,22 @@ foreach my $ps (@psets) {
}
die $! if $?;
+ #
+ # skip commits already in repo
+ #
+ if (ptag($ps->{id})) {
+ $opt_v && print "Skipping already imported: $ps->{id}\n";
+ next;
+ }
+
#
# create the branch if needed
#
- if ($ps->{type} eq 'i' && $importseen) {
- die "Should not have more than one 'Initial import' per GIT import";
+ if ($ps->{type} eq 'i' && !$import) {
+ die "Should not have more than one 'Initial import' per GIT import: $ps->{id}";
}
- unless ($opt_i && !$importseen) { # skip for first commit
+ unless ($import) { # skip for import
if ( -e ".git/refs/heads/$ps->{branch}") {
# we know about this branch
`git checkout $ps->{branch}`;
@@ -225,13 +231,12 @@ foreach my $ps (@psets) {
die $! if $?;
}
-
#
# Apply the import/changeset/merge into the working tree
#
if ($ps->{type} eq 'i' || $ps->{type} eq 't') {
- $importseen = 1;
apply_import($ps) or die $!;
+ $import=0;
} elsif ($ps->{type} eq 's') {
apply_cset($ps);
}
@@ -577,8 +582,6 @@ sub ptag {
} else { # read
# if the tag isn't there, return 0
unless ( -s ".git/archimport/tags/$tag") {
- warn "Could not find tag $tag -- perhaps it isn't in the repos we have?\n"
- if $opt_v;
return 0;
}
open(C,"<.git/archimport/tags/$tag")