&| 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 | 20167-0811-30 (version 2.7.34) |&
&| Contact | peter dot spjuth at gmail dot com |&
[http://eskil.tcl.tk/index.html/doc/trunk/htdocs/eskil1.png]
[http://eskil.tcl.tk/index.html/doc/trunk/htdocs/eskil2.png]
[http://eskil.tcl.tk/index.html/doc/trunk/htdocs/eskil3.png]
By [Peter Spjuth]
A similar but unrelated application is [tkdiff].
----
**Revision Control Support**
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**
The Directory Diff can directly compare revisions. Currently [Fossil], [Git] and [Subversion] are supported.
======
eskil <dir>
eskil -r 45ef34 -r 6783ef <dir>
======
----
**Patch view**
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**
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**
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 **
If you have a need to extract/preprocess from a file before diffing, you can do
it in an Eskil plugin.
----
**Comments about eskil**
(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.
I highly recommend eskil over tkdiff.
[LV] 2009 Oct 10
How can I configure eskil so that it does not display lines that are identical in the two files?
[Peter Spjuth]: Zero context is supported as of version 2.5.
[LV] 2007 Aug 06
Observations regarding eskil...
When I first attempted to invoke eskil, I got the following:
$ 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.5a4
After 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 [starkit]s, 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 [starkit]s and [starpack]s 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.
<<categories>> Application | Dev. Tools