[#13] Added option helping with SRC repo migration.
authorStanislaw Klekot <dozzie@jarowit.net>
Wed, 26 Oct 2011 20:41:57 +0000 (22:41 +0200)
committerStanislaw Klekot <dozzie@jarowit.net>
Wed, 26 Oct 2011 20:47:09 +0000 (22:47 +0200)
cronbuilder

index c526389..5046342 100755 (executable)
@@ -113,6 +113,10 @@ Options:
 --rebuild
     The same as setting build.rebuild in config. Runs build command even if
     destination was built from up-to-date sources. Overriden by --no-build.
+--ignore-previous-builds
+    Ignore information on any previous build, just like when no previous build
+    was done. Option intended mainly for migrating source repository to some
+    other place, or possibly to other repository type.
 EOF
 }
 
@@ -126,6 +130,8 @@ my %opts = (
 
   inform  => 0,
   rebuild => 0,
+
+  ignore_previous_builds => 0,
 );
 
 my $result = GetOptions(
@@ -137,6 +143,7 @@ my $result = GetOptions(
   "debug"     => sub { $opts{commit}=0; $opts{clean}=0; $opts{inform}=1; },
   "inform"    => \$opts{inform},
   "rebuild"   => \$opts{rebuild},
+  "ignore-previous-builds" => \$opts{ignore_previous_builds},
 );
 
 if (not $result) {
@@ -218,6 +225,9 @@ if (true $config{build}{rebuild}) {
 } elsif (not defined $last_build) {
   # if last build is undef, there was no (recent enough) build
   $should_build = 1;
+} elsif ($opts{ignore_previous_builds}) {
+  # if information on last build should be ignored (this implies rebuild)
+  $should_build = 1;
 } elsif ($last_build ne $current_source) {
   # if last build is different (git hashes can't be compared lexically! just
   # checking difference) than current source version, do build
@@ -266,7 +276,7 @@ if ($build_status != 0) {
 #-----------------------------------------------------------------------------
 
 my $additional_comment;
-if (defined $last_build) {
+if (defined $last_build && !$opts{ignore_previous_builds}) {
   # from oldest to newest, killing possible commits from cronbuilder itself
   # (possible if DEST is a sub-repo of SRC)
   my @past_builds = grep { not $src->is_instance_prefix($_->{short_descr}) }
@@ -284,6 +294,8 @@ if (defined $last_build) {
   } else {
     $additional_comment = join "\n", map { $_->{short_descr} } @past_builds;
   }
+} elsif ($opts{ignore_previous_builds}) {
+  $additional_comment = "Starting fresh with builds.";
 } else {
   $additional_comment = "No previous build.";
 }