What | Eskil |
Where | http://eskil.tcl.tk/ |
Description | Eskil is a GUI frontend to diff. It supports several version control systems. It also does directory diff, conflict merge and more. |
Updated | 2017-11-30 (version 2.7.4) |
Contact | peter dot spjuth at gmail dot com |
Revision Control Support edit
Several revision control systems are supported for displaying differences between file revisions. When comparing uncommited changes to latest version, you can commit directly from Eskil (in some systems).Currently Fossil, Git, Subversion, RCS, CVS, Bazaar, Mercurial, ClearCase and Perforce are supported.eskil <file> eskil -r 45ef34 -r 6783ef <file> eskil -review eskil -review <file1> <file2>...
Revision Control Support in Directory Diff edit
The Directory Diff can directly compare revisions. Currently Fossil, Git and Subversion are supported.eskil <dir> eskil -r 45ef34 -r 6783ef <dir>
Patch view edit
Eskil can display a patch, either from a file, from stdin, pasted from clipboard or generated from Revision Control Support.eskil -patch <file> someother | eskil - git diff -p --diff-filter=M master | eskil - fossil diff -r trunk | eskil -' eskil -review
Directory Diff edit
Directory comparison is supported.Eskil is starkit aware and will allow you to compare starkits/starpacks or, by comparing one to itself, browse kits. The kit needs to be either mentioned on the command line or called *.kit for it to work.Conflict resolution edit
You can resolve merge conflicts using Eskil, including full 3-way merge. It can pick up conflict marks as typically left by revision control systems' merge.eskil -conflict <file> eskil -a <ancestor> <file1> <file2>
Pluggable Preprocessing edit
If you have a need to extract/preprocess from a file before diffing, you can do it in an Eskil plugin.Comments about eskil edit
(Comment moved from the TkDiff page.) tjk 2005-08-03: Eskil is another Tcl/Tk based diff that includes:- Highlights changes within a line.
- Matches similar lines within a changed block to better show changed lines that are adjacent to added/removed lines.
- Directory diff.
- CVS/RCS/ClearCase diff. CVS conflict merge.
- View patch file.
- Print to postscript.
- "Clip diff"
- Alignment and block diff functions for tricky diffs.
- Edit and Save file from diff window.
$ tclkit eskil22.kit extra characters after close-brace while executing "return [uplevel 1 [list [namespace origin mcunknown] $Locale $src {*}$args]] " (procedure "mc" line 24) invoked from within "mc $lab" (procedure "tk::MessageBox" line 79) invoked from within "tk::MessageBox {*}$args" (procedure "tk_messageBox" line 2) invoked from within "tk_messageBox -icon error -message $msg -title "Fatal error"" (procedure "panic" line 4) invoked from within "panic $::errorInfo" (procedure "starkit::header" line 10) invoked from within "starkit::header mk4 -readonly" (file "eskil22.kit" line 5) $ sdx.kit version /projects/sprs_lwv/tcl85/bin/tclkit 2005/09/27 03:31:11 54267-20834 /projects/sprs_lwv/tcl85/bin/tclkit $ /projects/sprs_lwv/tcl85/bin/tclkit % info patchlevel 8.5a4After a comment by Peter, I began to wonder if perhaps it was a tclkit error, rather than an eskil, so I tried eskil with an older tclkit and that worked just fine.I then tried to use eskil with ActiveTcl 8.5's base-tk (which is, for a subset of starkits, a substitute) and found another issue. This time, I found that eskil includes only snit version 1 - but the snit toplevel, when it sees it is running under Tcl/Tk 8.5, attempts to use snit version 2.Because that isn't included in eskil, a fatal error is generated.Just a head's up if someone else runs into this problem. The current solution is either to update the snit in eskil to include both versions, or to go download an older version of a tclkit.This should work in Eskil 2.3.
Anyone have a comparison of eskil versus http://www.winmerge.org/ ? While winmerge isn't written in Tcl, it has been recommended to me as a very good tool. I'm just curious how functionality matches.Peter Spjuth: I haven't used winmerge but a quick glance shows they are roughly equal. Neither of them has a full 3-way merge, but Eskil has a separate merge window which I find friendlier. I don't see anything like Eskil's hierarchical directory diff in winmerge but I guess they must have something similar. I'm quite sure Eskil is alone in supporting comparison of starkits and starpacks though ;-)MHo 2009-10-30: Just tried the newest winmerge. Unfortunally, it doesn't load. Some external dependencies don't resolve at my PC (VC redist 8.x). I hate those tools, which require me to load six new different runtimes each time I update...
LV From what I can tell, eskil 2.4 requires a tclkit with themed tk in it - probably Tk 8.5.
MSH 2014-10-10 I have tried to download the latest version of Eskil from the http://eskil.tcl.tk/index.html/doc/trunk/htdocs/download.html site but non of the links there work and Sourceforge no longer has the project. Are there any working links to Eskil ?arjen (2016-08-16) Works for me.
yyamasak 2018-06-06 I have been using the enhanced version of WinMerge. Comparing WinMerge 2.14.0+-jp-152 vs Eskil 2.8.2, I had my impression that WinMerge wins in performance while Eskil wins in diff quality. Eskil's Directory Diff window is very slow when I tried to scroll the hierarchical view.