1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/usr/bin/env perl
- #-------------------------------------------------------------------------------
- # (C) Crown copyright Met Office. All rights reserved.
- # For further details please refer to the file COPYRIGHT.txt
- # which you should have received as part of this distribution.
- #-------------------------------------------------------------------------------
- use strict;
- use warnings;
- my ($base, $mine, $older, $yours) = @ARGV;
- # FCM_GRAPHIC_MERGE is the graphical merge tool command
- my $cmd = (exists $ENV{FCM_GRAPHIC_MERGE} ? $ENV{FCM_GRAPHIC_MERGE} : 'xxdiff');
- my $rc = 2;
- my $out = '';
- if ($cmd eq 'xxdiff') {
- # Launch xxdiff
- my @command = ($cmd, qw/-m -M/, $base, qw/-O -X/, $mine, $older, $yours);
- my ($cmd_out) = qx(@command);
- my $cmd_rc = $?;
- # Parse output from xxdiff
- if ($cmd_out) {
- chomp $cmd_out;
- if ($cmd_out eq 'NODECISION') {
- $out = 'made no decision';
- $rc = 1;
- } elsif ($cmd_out eq 'MERGED' and $cmd_rc) {
- $out = 'not resolved all the conflicts';
- $rc = 1;
- } else {
- $out = lc ($cmd_out);
- $rc = 0;
- }
- } else {
- print STDERR $cmd, ': failed, abort.', "\n";
- }
- } else {
- # Throw error for unknown/undefined graphic merge tool
- print STDERR ($cmd ? $cmd . ': ' : ''),
- 'unknown/undefined graphic merge tool, abort.', "\n";
- }
- if ($rc == 1) {
- # Merge unresolved
- print 'You have ', $out, '.', "\n";
- } elsif ($rc == 0) {
- # Merge resolved
- print 'You ', $out, ' all the changes.', "\n";
- }
- exit $rc;
- __END__
- =head1 NAME
- fcm_graphic_merge
- =head1 SYNOPSIS
- fcm_graphic_merge BASE MINE OLDER YOURS
- =head1 DESCRIPTION
- Wrapper script which invokes a graphical merge tool. It returns 0 on
- success, 1 if conflicts not resolved or 2 on failure. (This is similar to
- GNU diff3.) BASE is the file you want to save the merge result into. MINE
- is the original file. YOURS is the file you want MINE to merge with. OLDER
- is the common ancestor of MINE and YOURS.
- =head1 COPYRIGHT
- (C) Crown copyright Met Office. All rights reserved.
- =cut
|