Eskil

Check-in [6fef3f1b96]
Login

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

Overview
Comment:Use hglist extension for better hg dir diff
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 6fef3f1b96a1d5d4575b9052e4e075a0a645871b
User & Date: peter 2015-03-17 23:39:42.709
Context
2015-03-18
21:01
Added flag -pluginallow check-in: ff7f4e9633 user: peter tags: trunk
2015-03-17
23:39
Use hglist extension for better hg dir diff check-in: 6fef3f1b96 user: peter tags: trunk
23:39
Document -sep flag check-in: 6a4c3347f1 user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to doc/revision.txt.
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<pre>fossil settings gmerge-command 'eskil -fine -a "%baseline" "%merge" "%original" -o "%output"' -global</pre>

<ul>Mercurial</ul>

For Mercurial -r works as in "hg cat -r".
However, Eskil interprets zero or negative numbers as going back from the tip, i.e. -1 is one step back, corresponding to -2 in Mercurial.

Mercurial is supported in the Directory Diff, however the displayed file sizes
and dates are faked since the current implementation cannot extract that
information from the repository. The fake numbers are taken from the file's
sha1 and thus is unique per file and gives a correct result in comparison.

To use Eskil for conflict resolution these config settings can be used.

[merge-tools]
eskil.args = -fine -a $base $other $local -o $output
eskil.priority = 1








|
|
<
|







78
79
80
81
82
83
84
85
86

87
88
89
90
91
92
93
94
<pre>fossil settings gmerge-command 'eskil -fine -a "%baseline" "%merge" "%original" -o "%output"' -global</pre>

<ul>Mercurial</ul>

For Mercurial -r works as in "hg cat -r".
However, Eskil interprets zero or negative numbers as going back from the tip, i.e. -1 is one step back, corresponding to -2 in Mercurial.

Mercurial is supported in the Directory Diff, but needs the hglist extension to
display correct file sizes and dates. If not they are faked using the file's

sha1 and thus unique per file and gives a correct result in comparison.

To use Eskil for conflict resolution these config settings can be used.

[merge-tools]
eskil.args = -fine -a $base $other $local -o $output
eskil.priority = 1

Changes to htdocs/changes.wiki.
1






2
3
4
5
6
7
8
<title>Changes</title>







Changes in v2.7 (2015-03-09):

  *  Directory Diff support for GIT, Fossil and Subversion.
     Directly browse and compare two revisions.
  *  Plugins in Directory Diff.
  *  Added option -printFont to select font for PDF generation.

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
<title>Changes</title>

Upcoming changes (not yet released):

  *  Mercurial support for Directory Diff, Commit, Revert and Log.
  *  Plugins can read ::argv to know the given command line.
  *  New plugin for CSV files

Changes in v2.7 (2015-03-09):

  *  Directory Diff support for GIT, Fossil and Subversion.
     Directly browse and compare two revisions.
  *  Plugins in Directory Diff.
  *  Added option -printFont to select font for PDF generation.
Changes to htdocs/revision.wiki.
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<pre>fossil settings gmerge-command 'eskil -fine -a "%baseline" "%merge" "%original" -o "%output"' -global</pre>

<h2>Mercurial</h2>

For Mercurial -r mostly works as in "hg cat -r".
However, Eskil interprets zero or negative numbers as going back from the tip, i.e. -1 is one step back, corresponding to -2 in Mercurial.

Mercurial is supported in the Directory Diff, however the displayed file sizes
and dates are faked since the current implementation cannot extract that
information from the repository. The fake numbers are taken from the file's
sha1 and thus is unique per file and gives a correct result in comparison.

To use Eskil for conflict resolution these config settings can be used.

[merge-tools]
eskil.args = -fine -a $base $other $local -o $output
eskil.priority = 1








|
|
<
|







115
116
117
118
119
120
121
122
123

124
125
126
127
128
129
130
131
<pre>fossil settings gmerge-command 'eskil -fine -a "%baseline" "%merge" "%original" -o "%output"' -global</pre>

<h2>Mercurial</h2>

For Mercurial -r mostly works as in "hg cat -r".
However, Eskil interprets zero or negative numbers as going back from the tip, i.e. -1 is one step back, corresponding to -2 in Mercurial.

Mercurial is supported in the Directory Diff, but needs the hglist extension to
display correct file sizes and dates. If not they are faked using the file's

sha1 and thus unique per file and gives a correct result in comparison.

To use Eskil for conflict resolution these config settings can be used.

[merge-tools]
eskil.args = -fine -a $base $other $local -o $output
eskil.priority = 1

Changes to src/vcsvfs.tcl.
387
388
389
390
391
392
393

394





395










396
397
398
399
400
401
402
            dict set finfo $parentStr child $dirPath 1
            dict set finfo $parentStr isfile 0
            dict set finfo $parentStr isdir 1
            dict set finfo $parentStr type directory
            set parentStr [file join $parentStr $dirPath]
        }
    }







    # TBD: Any way to get file sizes and mtimes from HG?











    cd $oldpwd

    # Generate a mount point.
    set tail [string range $dir [string length $root] end]
    set mountpoint "${root} ($rev)"








>

>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>







387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
            dict set finfo $parentStr child $dirPath 1
            dict set finfo $parentStr isfile 0
            dict set finfo $parentStr isdir 1
            dict set finfo $parentStr type directory
            set parentStr [file join $parentStr $dirPath]
        }
    }
    # TBD: Any way to get file sizes and mtimes from HG?

    # Try using the hglist extension
    set cmd [list hg ls --template "{size} {date} {name}\n" -a \
                     --recursive -r $rev]
    if {![catch {exec {*}$cmd} allfiles]} {
        # Expected line format:
        # size date name
        foreach line [split $allfiles \n] {
            if {[regexp {^(\d+)\s+(\d+)\S*\s+(\S.*)$} $line -> size mtime fName]} {
                # Check that it matches something filled in from the manifest
                if {[dict exists $finfo $fName]} {
                    dict set finfo $fName "mtime" $mtime
                    dict set finfo $fName "size"  $size
                }
            }
        }
    }

    cd $oldpwd

    # Generate a mount point.
    set tail [string range $dir [string length $root] end]
    set mountpoint "${root} ($rev)"