diff options
-rwxr-xr-x | Master/tlpkg/bin/tl-update-tlpdb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/Master/tlpkg/bin/tl-update-tlpdb b/Master/tlpkg/bin/tl-update-tlpdb index 363d7c0c66c..d3467a3973a 100755 --- a/Master/tlpkg/bin/tl-update-tlpdb +++ b/Master/tlpkg/bin/tl-update-tlpdb @@ -38,12 +38,14 @@ my $opt_save_anyway = 0; my $opt_tlpsrc_from_cmdline = 0; my $opt_w32warning; my $opt_tlpdb_options_from_tlpsrc = 0; +my $opt_keep_revisions = 0; TeXLive::TLUtils::process_logging_options(); GetOptions( "catalogue=s" => \$opt_catalogue, "dry-run|n", => \$opt_dry_run, "fix-reverse-revisions!" => \$opt_fix_reverse_revisions, + "keep-revisions" => \$opt_keep_revisions, "from-files" => \$opt_fromfiles, "master=s" => \$opt_master, "no-bin-split!" => \$opt_nobinsplit, @@ -94,7 +96,12 @@ sub main finish ($newtlpdb, $pkgcount); } if ($opt_no_revision_check) { - info ("$progname: Not checking increasing revisions due to --no-reverse-revision-check\n"); + if ($opt_keep_revisions) { + move_revisions_over($oldtlpdb, $newtlpdb); + info ("$progname: Keeping old revisions due to --keep-revisions\n"); + } else { + info ("$progname: Not checking increasing revisions due to --no-reverse-revision-check\n"); + } finish ($newtlpdb, $pkgcount); } # compare_tlpdbs returns true if some reversed revisions have been found. @@ -152,6 +159,18 @@ sub main } +sub move_revisions_over +{ + my ($oldtlpdb, $newtlpdb) = @_; + for my $pkg ($newtlpdb->list_packages) { + my $oldtlp = $oldtlpdb->get_package($pkg); + if (defined($oldtlp)) { + $newtlpdb->get_package($pkg)->revision($oldtlp->revision); + } + } +} + + sub compare_and_fix_tlpdbs { my ($oldtlpdb, $newtlpdb) = @_; |