Eskil

Difference between version 39 and 40 - Previous - Next
&| 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 |&

[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.----
[yyamasak] 2018-06-06 I have been using http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html%|%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.

<<categories>> Application | Dev. Tools