#! /usr/bin/perl # $Id: rm-id-conflicts,v 1.1 2001/05/11 19:44:42 bko Exp $ # find all conflict files and resolve $Id: rm-id-conflicts,v 1.1 2001/05/11 19:44:42 bko Exp $ conflicts ONLY open(FILELIST, "cvs update|") || die "cannot run cvs update: $!"; while() { chomp; if(s/^C //) { push (@filelist, $_); } } close(FILELIST); foreach $file ( @filelist) { open(OUT, ">$file.removed-id-conflict") || die "can't open $file.new for writing: $!"; open(FILE, "$file") || die "can't open $file: $!"; $file =~ /\/?([^\/]*)$/; $basename = $1; print $basename, "\n"; $in_conflict = 0; while() { if(/^\<\<\<\<\<\<\< $basename/) { # in a conflict $in_conflict = 1; $first = ""; $second = ""; $first_count = 0; $second_count = 0; # print "in conflict: $basename\n"; $start = $_; } elsif( $in_conflict && /^\>\>\>\>\>\>\> /) { $in_conflict = 0; if($first_count == 1 && $second_count == 1 && $first =~ /\$Id\:[^\$]*\$/ && $second =~ /\$Id\:[^\$]*\$/) { print OUT $first; } else { print OUT $start; print OUT $first; print OUT "=======\n"; print OUT $second; print OUT $_; } } elsif ($in_conflict && /^=======$/ ) { # switching $in_conflict = 2; } elsif ($in_conflict == 1) { $first .= $_; $first_count++; } elsif ($in_conflict == 2) { $second .= $_; $second_count++; } else { print OUT; } } close(FILE); close(OUT); $diff = `diff $file $file.removed-id-conflict`; if(!$diff) { unlink "$file.removed-id-conflict"; } }