Eskil

Check-in [11415d1712]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Added Plugins documentation. Some doc polish
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 11415d1712bcf035b8fdea2c0d7af45e5ec82084
User & Date: peter 2015-02-23 23:30:07.509
Context
2015-02-24
00:00
Added doc for revision control check-in: 66d536992b user: peter tags: trunk
2015-02-23
23:30
Added Plugins documentation. Some doc polish check-in: 11415d1712 user: peter tags: trunk
22:53
Typo check-in: e8a8492f44 user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to doc/revision.txt.
13
14
15
16
17
18
19






20
21
22

23
24
25
26
27
28
29
<pre>eskil -r rev file.txt</pre>
  Compare file.txt with the specified version.
<pre>eskil -r rev1 -r rev2 file.txt</pre>
  Compare the two revisions. This does not involve the local copy of file.txt.

The -r options are also available in the GUI in the "Rev 1" and "Rev 2" fields.







<ul>Commit support</ul>

When comparing a file with the latest checked in version, some of the systems have support for committing directly from Eskil.  If supported, the Commit button will be enabled.


<ul>Priority between systems</ul>

If multiple systems are used within a directory Git/Hg/Bzr will be detected before CVS/SVN.  Command line options -cvs and -svn can be used to put preference on one of those systems.

<ul>Pipe a patch</ul>








>
>
>
>
>
>



>







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<pre>eskil -r rev file.txt</pre>
  Compare file.txt with the specified version.
<pre>eskil -r rev1 -r rev2 file.txt</pre>
  Compare the two revisions. This does not involve the local copy of file.txt.

The -r options are also available in the GUI in the "Rev 1" and "Rev 2" fields.

<ul>Directory Diff</ul>

Eskil can also browse and compare revisions for some systems directly in the
directory diff. It works just like for files, but give a directory on the
command line. Currently Git, Fossil and Subversion are supported.

<ul>Commit support</ul>

When comparing a file with the latest checked in version, some of the systems have support for committing directly from Eskil.  If supported, the Commit button will be enabled.
It is also possible to revert the local changes using the Revert button.

<ul>Priority between systems</ul>

If multiple systems are used within a directory Git/Hg/Bzr will be detected before CVS/SVN.  Command line options -cvs and -svn can be used to put preference on one of those systems.

<ul>Pipe a patch</ul>

Changes to htdocs/fossil.wiki.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35





36
37
38
39
40
41
42
<title>Fossil Support</title>
<h1 align="center">Fossil Support</h1>

<h2>Introduction</h2>

Eskil can compare versions in meny revision control systems including
[http://www.fossil-scm.org | Fossil].

If you specify only one file on the command line to Eskil, it will
automatically detect if the file is under revision control and enter revision
control mode.

By default the local file is compared against the latest checked in version.
This is for the common case when you just want to know what you have changed
before checking in.

You can use the -r option to select which versions to compare.
The -r option works as in fossil finfo. If a revision is a negative integer,

the log is searched backwards for earlier versions. E.g. -1 gives the second
to last version. The search follows the current branch from the current version.


Examples:

Compare file.txt with the latest checked in version:
<pre>eskil file.txt</pre>

Compare file.txt with the specified version:
<pre>eskil -r rev file.txt</pre>

Compare the two revisions. This does not involve the local copy of file.txt.
<pre>eskil -r rev1 -r rev2 file.txt</pre>

The -r options are also available in the GUI in the "Rev 1" and "Rev 2" fields.






<h2>Commit support</h2>

When comparing a file with the latest checked in version, Eskil can commit
directly to Fossil.

<h2>View all changes</h2>


|















|
>

















>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<title>Fossil Support</title>
<h1>Fossil Support</h1>

<h2>Introduction</h2>

Eskil can compare versions in meny revision control systems including
[http://www.fossil-scm.org | Fossil].

If you specify only one file on the command line to Eskil, it will
automatically detect if the file is under revision control and enter revision
control mode.

By default the local file is compared against the latest checked in version.
This is for the common case when you just want to know what you have changed
before checking in.

You can use the -r option to select which versions to compare.
The -r option works as in fossil finfo. If a revision is zero or a negative
integer,
the log is searched backwards for earlier versions. E.g. -1 gives the second
to last version. The search follows the current branch from the current version.


Examples:

Compare file.txt with the latest checked in version:
<pre>eskil file.txt</pre>

Compare file.txt with the specified version:
<pre>eskil -r rev file.txt</pre>

Compare the two revisions. This does not involve the local copy of file.txt.
<pre>eskil -r rev1 -r rev2 file.txt</pre>

The -r options are also available in the GUI in the "Rev 1" and "Rev 2" fields.

<h2>Directory Diff</h2>

Eskil can also browse and compare Fossil revisions in the directory diff.
It works just like for files, but give a directory on the command line.

<h2>Commit support</h2>

When comparing a file with the latest checked in version, Eskil can commit
directly to Fossil.

<h2>View all changes</h2>

50
51
52
53
54
55
56
57


committed directly from Eskil.

<h2>Conflict merging</h2>
Eskil can be used as the conflict resolution tool for Fossil by configuring
the gmerge-command setting like this:

<pre>fossil settings gmerge-command 'eskil -fine -a "%baseline" "%merge" "%original" -o "%output"' -global</pre>











>
>
56
57
58
59
60
61
62
63
64
65
committed directly from Eskil.

<h2>Conflict merging</h2>
Eskil can be used as the conflict resolution tool for Fossil by configuring
the gmerge-command setting like this:

<pre>fossil settings gmerge-command 'eskil -fine -a "%baseline" "%merge" "%original" -o "%output"' -global</pre>



Changes to htdocs/index.html.
1
2
3
4
5

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<div class='fossil-doc' data-title='A graphical view of file and directory differences'>

<div class="submenu">
<a class="label" href="changes.wiki">Changes</a>
<a class="label" href="download.html">Download</a>

</div>

<h3>About Eskil</h3>
Eskil is a graphical tool to view the differences between files and directories. It supports version management and patch files and has various preprocessing and alignment options to improve the display of tricky diffs.
<p>
Pronunciation: The E is short, like in "set", the rest is like "skill".
<p>
Any feedback, good or bad, can be sent to
&lt;peter <i>dot</i> spjuth <i>at</i> gmail <i>dot</i> com&gt; or added as a <a href='../../../reportlist'>Ticket</a>.
<p>
It is similar but unrelated to <a href="http://wiki.tcl.tk/tkdiff">TkDiff</a>.

<a name="EskilFeatures"></a><h3>Features</h3>

<ul>
<li>Highlights changes within a line.</li>
<li>Matches similar lines within a changed block to better show changed
lines that are adjacent to added/removed lines.</li>
<li>Recursive directory diff.</li>
<li><a href="fossil.wiki">Fossil</a>/CVS/RCS/ClearCase/GIT/SVN/BZR/HG/Perforce diff.</li>
<li>Conflict merge and three-way merge.</li>
<li>Commit changes directly from Eskil.</li>
<li>View patch, from file or clipboard.</li>
<li>Print to PDF.</li>
<li>"Clip diff"</li>
<li>Plugins for preprocessing files.</li> 
<li>Alignment and block diff functions for tricky diffs.</li>
<li>Edit and Save file from diff window.</li>
<li><a href="http://wiki.tcl.tk/starkit">Starkit</a> browsing.</li>
</ul>

<a name="EskilScreenshots"></a><h3>Screenshots</h3>




<

>








|
















|







1
2
3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<div class='fossil-doc' data-title='A graphical view of file and directory differences'>

<div class="submenu">

<a class="label" href="download.html">Download</a>
<a class="label" href="changes.wiki">Changes</a>
</div>

<h3>About Eskil</h3>
Eskil is a graphical tool to view the differences between files and directories. It supports version management and patch files and has various preprocessing and alignment options to improve the display of tricky diffs.
<p>
Pronunciation: The E is short, like in "set", the rest is like "skill".
<p>
Any feedback, good or bad, can be sent to
&lt;peter <i>dot</i> spjuth <i>at</i> gmail <i>dot</i> com&gt; or added as a <a href='../../../ticket'>Ticket</a>.
<p>
It is similar but unrelated to <a href="http://wiki.tcl.tk/tkdiff">TkDiff</a>.

<a name="EskilFeatures"></a><h3>Features</h3>

<ul>
<li>Highlights changes within a line.</li>
<li>Matches similar lines within a changed block to better show changed
lines that are adjacent to added/removed lines.</li>
<li>Recursive directory diff.</li>
<li><a href="fossil.wiki">Fossil</a>/CVS/RCS/ClearCase/GIT/SVN/BZR/HG/Perforce diff.</li>
<li>Conflict merge and three-way merge.</li>
<li>Commit changes directly from Eskil.</li>
<li>View patch, from file or clipboard.</li>
<li>Print to PDF.</li>
<li>"Clip diff"</li>
<li><a href="plugins.wiki">Plugins</a> for preprocessing files.</li> 
<li>Alignment and block diff functions for tricky diffs.</li>
<li>Edit and Save file from diff window.</li>
<li><a href="http://wiki.tcl.tk/starkit">Starkit</a> browsing.</li>
</ul>

<a name="EskilScreenshots"></a><h3>Screenshots</h3>

Added htdocs/plugins.wiki.


















































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
89
<title>Plugins</title>

<h1>Introduction</h1>

Eskil provides a plugin system where a plugin can preprocess data
before being compared and displayed.

A plugin is a Tcl script that must follow a specific format.
Example plugins are included in the kit.
Dump one of the included plugins to see what it looks like.

When searching for a plugin "x", files "x" and "x.tcl" will
match. The search path is current directory, "plugins" directory,
the directory where Eskil is installed, "plugins" directory where
Eskil is installed, and also the internal "plugins" wrapped into Eskil.

<h1>Usage</h1>

The command line options for plugins are:
  *  -plugin plugin     : Use plugin
  *  -plugininfo info   : Pass info to plugin (plugin specific)
  *  -plugindump plugin : Dump plugin source to stdout
  *  -pluginlist        : List known plugins

<h1>General Format</h1>

A plugin is a Tcl script file that must start with the verbatim sequence
"##Eskil Plugin :". A plugin is sourced and used in its own safe
interpreter and thus have free access to its own global space. Hookup
points are defined by declaring specifically named procedures as specified
below, and apart from those, a plugin can define and do whatever within
the limits of a safe interpreter.

In addition to the standard safe interpreter environment, a plugin has
access to stdout as well.

A plugin is set up with these global variables filled in:
  *  ::WhoAmI : The name of the plugin
  *  ::Info   : The contents of -plugininfo parameter
  *  ::Pref   : A copy if Eskil's internal preferences array.

<h1>File plugin</h1>

To process the files being compared, the following procedure should be
defined in the plugin file:

<pre>proc PreProcess {side chi cho} {...}</pre>

The arguments given to PrePrecess are:

  *  side : left or right, indicating which file is being handled
  *  chi : An input channel for reading the original file
  *  cho : An output channel for writing the processed file

A plugin may give a result that has a line-by-line correspondence to
the original, in which case the preprocessed data is used for comparing
while the original is used for displaying.  The PreProcess procedure
should return 0 to signify this case.

If the PreProcess procedure returns 1, the processed data is used also for
displaying.

<h1>Directory plugin</h1>

To be used for file comparison in a directory diff, the following procedure
should be defined in the plugin file:

<pre>proc FileCompare {ch1 ch2 info1 info2} {...}</pre>

The arguments given to FileCompare are:

  *  ch1:  An input channel for reading the first file.
  *  ch2:  An input channel for reading the second file.
  *  info1: A dictionary with info about the first file.
  *  info2: A dictionary with info about the second file.

Info dictionaries contain at least elements "name" and "size".

The FileCompare procedure can give the following return values:

  *  0 : Files are not equal
  *  1 : Files are equal
  *  2 : Files are equal as far as the channels have been read.
         Let the normal comparison finish the job.