Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Centralized some revsion control and conflict code. Added "Revision diff" menu instead of CVS/RCS Diff menus. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
816965deae2a047f0dec5ba074848a91 |
User & Date: | peter 2004-07-03 16:38:46.000 |
Context
2004-07-03
| ||
16:42 | Updated Revision Diff and Rev fields. check-in: d045126745 user: peter tags: trunk | |
16:38 | Centralized some revsion control and conflict code. Added "Revision diff" menu instead of CVS/RCS Diff menus. check-in: 816965deae user: peter tags: trunk | |
15:53 | *** empty log message *** check-in: 19ce785f85 user: peter tags: trunk | |
Changes
Changes to src/eskil.tcl.
︙ | ︙ | |||
47 48 49 50 51 52 53 | # Add a dummy if it does not exist. proc addBalloon {args} {} } else { namespace import -force psballoon::addBalloon } set debug 0 | | < | < | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | # Add a dummy if it does not exist. proc addBalloon {args} {} } else { namespace import -force psballoon::addBalloon } set debug 0 set diffver "Version 2.0.4+ 2004-07-03" set thisScript [file join [pwd] [info script]] set thisDir [file dirname $thisScript] # Follow any link set tmplink $thisScript while {[file type $tmplink] eq "link"} { set tmplink [file readlink $tmplink] set tmplink [file normalize [file join $thisDir $tmplink]] set thisDir [file dirname $tmplink] } unset tmplink set ::util(diffexe) diff # Diff functionality is in the DiffUtil package. package require DiffUtil # Help DiffUtil to find a diff executable, if needed catch {DiffUtil::LocateDiffExe $thisScript} # Figure out a place to store temporary files. locateTmp ::diff(tmpdir) if {$tcl_platform(platform) eq "windows"} { # Locate CVS if it is in c:/bin if {[auto_execok cvs] eq "" && [file exists "c:/bin/cvs.exe"]} { set env(PATH) "$env(PATH);c:\\bin" auto_reset } } # Debug function to be able to reread the source even when wrapped in a kit. proc EskilRereadSource {} { set this $::thisScript |
︙ | ︙ | |||
804 805 806 807 808 809 810 811 812 813 814 815 816 817 | } } } ##################################### # Special cases. Conflict/patch ##################################### # Read a conflict file and extract the two versions. proc prepareConflict {top} { global Pref set ::diff($top,leftFile) [tmpFile] set ::diff($top,rightFile) [tmpFile] | > > > > > > > > > > > > > > > | 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 | } } } ##################################### # Special cases. Conflict/patch ##################################### proc startConflictDiff {top file} { set ::diff($top,mode) "conflict" set ::diff($top,modetype) "" set ::diff($top,conflictFile) $file set ::diff($top,rightDir) [file dirname $file] set ::diff($top,rightOK) 1 set ::diff($top,rightLabel) $file set ::diff($top,leftLabel) $file set ::diff($top,leftOK) 0 # Turn off ignore set ::Pref(ignore) " " set ::Pref(nocase) 0 } # Read a conflict file and extract the two versions. proc prepareConflict {top} { global Pref set ::diff($top,leftFile) [tmpFile] set ::diff($top,rightFile) [tmpFile] |
︙ | ︙ | |||
1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 | close $ch } ##################################### # Revision control systems support ##################################### # Get a CVS revision proc getCvsRev {filename outfile {rev {}}} { set old "" set dir [file dirname $filename] if {$dir != "."} { set old [pwd] | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 | close $ch } ##################################### # Revision control systems support ##################################### # Figure out what revision control system a file is under # Returns "CVS", "RCS", "CT" if detectd, or "" if none. proc DetectRevSystem {file} { set dir [file dirname $file] # CVS if {[file isdirectory [file join $dir CVS]]} { if {[auto_execok cvs] ne ""} { return "CVS" } # Error? } # ClearCase # Maybe cd to dir first? FIXA if {[auto_execok cleartool] != ""} { if {![catch {exec cleartool pwv -s} view] && $view != "** NONE **"} { return "CT" } } # RCS if {[file isdirectory [file join $dir RCS]] || [file exists $file,v]} { if {[auto_execok rcs] ne ""} { return "RCS" } # Error? } return } # Initialise revision control mode # The file name should be an absolute normalized path. proc startRevMode {top rev file} { set ::diff($top,mode) "rev" set ::diff($top,modetype) $rev set ::diff($top,rightDir) [file dirname $file] set ::diff($top,RevFile) $file set ::diff($top,rightLabel) $file set ::diff($top,rightFile) $file set ::diff($top,rightOK) 1 set ::diff($top,leftLabel) $rev set ::diff($top,leftOK) 0 } # Get a CVS revision proc getCvsRev {filename outfile {rev {}}} { set old "" set dir [file dirname $filename] if {$dir != "."} { set old [pwd] |
︙ | ︙ | |||
1697 1698 1699 1700 1701 1702 1703 | doDiff $top } } proc openConflict {top} { global Pref if {[doOpenRight $top]} { | < < < < | | | | > > | < | < | < < < < < < | < < | 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 | doDiff $top } } proc openConflict {top} { global Pref if {[doOpenRight $top]} { startConflictDiff $top $::diff($top,rightFile) set ::diff($top,mergeFile) "" doDiff $top } } proc openPatch {top} { global Pref if {[doOpenLeft $top]} { set ::diff($top,mode) "patch" set Pref(ignore) " " set Pref(nocase) 0 set ::diff($top,patchFile) $::diff($top,leftFile) doDiff $top } } proc openRev {top} { if {[doOpenRight $top]} { set rev [DetectRevSystem $::diff($top,rightFile)] if {$rev eq ""} { tk_messageBox -icon error -title "Eskil Error" -message \ "Could not figure out which revison control system\ \"$::diff($top,rightFile)\" is under." -type ok return } startRevMode $top $rev $::diff($top,rightFile) doDiff $top } } proc openBoth {top forget} { if {[doOpenLeft $top]} { if {[doOpenRight $top $forget]} { |
︙ | ︙ | |||
2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 | -command [list openBoth $top 0] $top.mf.m add command -label "Open Both (forget)..." \ -command [list openBoth $top 1] $top.mf.m add command -label "Open Left File..." \ -command [list openLeft $top] $top.mf.m add command -label "Open Right File..." \ -command [list openRight $top] $top.mf.m add command -label "Open Conflict File..." \ -command [list openConflict $top] $top.mf.m add command -label "Open Patch File..." \ -command [list openPatch $top] | > < | | < < < < < | 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 | -command [list openBoth $top 0] $top.mf.m add command -label "Open Both (forget)..." \ -command [list openBoth $top 1] $top.mf.m add command -label "Open Left File..." \ -command [list openLeft $top] $top.mf.m add command -label "Open Right File..." \ -command [list openRight $top] $top.mf.m add separator $top.mf.m add command -label "Open Conflict File..." \ -command [list openConflict $top] $top.mf.m add command -label "Open Patch File..." \ -command [list openPatch $top] $top.mf.m add command -label "Revision Diff..." -underline 0 \ -command [list openRev $top] $top.mf.m add separator $top.mf.m add command -label "Print..." -underline 0 \ -command [list doPrint $top] $top.mf.m add separator $top.mf.m add command -label "Close" -underline 0 \ -command [list cleanupAndExit $top] $top.mf.m add separator |
︙ | ︙ | |||
4583 4584 4585 4586 4587 4588 4589 | set dodir 1 } elseif {$arg eq "-clip"} { set doclip 1 } elseif {$arg eq "-browse"} { set autobrowse 1 } elseif {$arg eq "-conflict"} { set opts(mode) "conflict" | < < < | 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 | set dodir 1 } elseif {$arg eq "-clip"} { set doclip 1 } elseif {$arg eq "-browse"} { set autobrowse 1 } elseif {$arg eq "-conflict"} { set opts(mode) "conflict" } elseif {$arg eq "-print"} { set nextArg printFile } elseif {$arg eq "-server"} { if {$::tcl_platform(platform) eq "windows"} { catch { package require dde dde servername Eskil |
︙ | ︙ | |||
4664 4665 4666 4667 4668 4669 4670 | set ::diff($top,$item) $val } if {$len == 1} { set fullname [file join [pwd] [lindex $files 0]] set fulldir [file dirname $fullname] if {$::diff($top,mode) eq "conflict"} { | < < < | < < < < < < | > | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 | set ::diff($top,$item) $val } if {$len == 1} { set fullname [file join [pwd] [lindex $files 0]] set fulldir [file dirname $fullname] if {$::diff($top,mode) eq "conflict"} { startConflictDiff $top $fullname after idle [list doDiff $top] return } if {!$autobrowse} { # Check for revision control set rev [DetectRevSystem $fullname] if {$rev ne ""} { startRevMode $top $rev $fullname if {$noautodiff} { enableRedo $top } else { after idle [list doDiff $top] } return } } # No revision control. Is it a patch file? set ::diff($top,leftDir) $fulldir set ::diff($top,leftFile) $fullname set ::diff($top,leftLabel) $fullname set ::diff($top,leftOK) 1 if {[regexp {\.(diff|patch)$} $fullname]} { |
︙ | ︙ | |||
4778 4779 4780 4781 4782 4783 4784 | } # If we cancel the second file and detect CVS, ask about it. if {$::diff($top,leftOK) && !$::diff($top,rightOK) && \ [llength [glob -nocomplain [file join $fulldir CVS]]]} { if {[tk_messageBox -title Diff -icon question \ -message "Do CVS diff?" -type yesno] eq "yes"} { | < < < < | < < < < | 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 | } # If we cancel the second file and detect CVS, ask about it. if {$::diff($top,leftOK) && !$::diff($top,rightOK) && \ [llength [glob -nocomplain [file join $fulldir CVS]]]} { if {[tk_messageBox -title Diff -icon question \ -message "Do CVS diff?" -type yesno] eq "yes"} { set fullname $::diff($top,leftFile) set ::diff($top,leftOK) 0 startRevMode $top "CVS" $fullname after idle [list doDiff $top] } } } } proc saveOptions {top} { |
︙ | ︙ |