Eskil

Check-in [d0b469ea11]
Login

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

Overview
Comment:Moved mount to rev, making dirdiff support extendable to other vcs
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d0b469ea11e03a5adeaea3e44872f34ba377f4d1
User & Date: peter 2014-11-13 23:12:04.149
Context
2014-11-14
00:14
Added SVN support to VFS and dirdiff check-in: 0827ab89b0 user: peter tags: trunk
2014-11-13
23:12
Moved mount to rev, making dirdiff support extendable to other vcs check-in: d0b469ea11 user: peter tags: trunk
22:53
Moved experiment to dirdiff src check-in: b94817f6ae user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/dirdiff.tcl.
1244
1245
1246
1247
1248
1249
1250
1251


1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
        set ::dirdiff(rightDir) ""
    }

    # Experiment to support -r for directory diff
    # Currently only Fossil is supported
    if {[info exists opts(doptrev1)] && $opts(doptrev1) ne ""} {
        set fullname $::dirdiff(leftDir)
        if {[detectRevSystem $fullname] eq "FOSSIL"} {


            set revs [list $opts(doptrev1)]
            if {[info exists opts(doptrev2)] && $opts(doptrev2) ne ""} {
                lappend revs $opts(doptrev2)
            }
            set revs [eskil::rev::FOSSIL::ParseRevs $fullname $revs]
            set rev1 [lindex $revs 0]
            set rev2 [lindex $revs 1]
            set d1 [vcsvfs::fossil::mount $fullname $rev1]
            set ::dirdiff(leftDir) $d1
            if {$rev2 ne ""} {
                set d2 [vcsvfs::fossil::mount $fullname $rev2]
                set ::dirdiff(rightDir) $d2
            }
        }
    }

    destroy .dirdiff
    DirDiff .dirdiff







|
>
>




|


|


|







1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
        set ::dirdiff(rightDir) ""
    }

    # Experiment to support -r for directory diff
    # Currently only Fossil is supported
    if {[info exists opts(doptrev1)] && $opts(doptrev1) ne ""} {
        set fullname $::dirdiff(leftDir)
        set type [detectRevSystem $fullname]
        # Is this a revision system with dirdiff support?
        if {[info commands eskil::rev::${type}::mount] ne ""} {
            set revs [list $opts(doptrev1)]
            if {[info exists opts(doptrev2)] && $opts(doptrev2) ne ""} {
                lappend revs $opts(doptrev2)
            }
            set revs [eskil::rev::${type}::ParseRevs $fullname $revs]
            set rev1 [lindex $revs 0]
            set rev2 [lindex $revs 1]
            set d1 [eskil::rev::${type}::mount $fullname $rev1]
            set ::dirdiff(leftDir) $d1
            if {$rev2 ne ""} {
                set d2 [eskil::rev::${type}::mount $fullname $rev2]
                set ::dirdiff(rightDir) $d2
            }
        }
    }

    destroy .dirdiff
    DirDiff .dirdiff
Changes to src/rev.tcl.
67
68
69
70
71
72
73





74
75
76
77
78
79
80
# If no files are given, all edited files are reverted.

# eskil::rev::XXX::viewLog {top filename revs}
#
# If implemented, enables the log feature when comparing revisions.
# View log between displayed versions






namespace eval eskil::rev::CVS {}
namespace eval eskil::rev::RCS {}
namespace eval eskil::rev::CT {}
namespace eval eskil::rev::GIT {}
namespace eval eskil::rev::FOSSIL {}
namespace eval eskil::rev::SVN {}
namespace eval eskil::rev::HG {}







>
>
>
>
>







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# If no files are given, all edited files are reverted.

# eskil::rev::XXX::viewLog {top filename revs}
#
# If implemented, enables the log feature when comparing revisions.
# View log between displayed versions

# eskil::rev::XXX::mount {dir rev}
#
# If implemented, directory diff can view revisions for this system.
# Mounts a directory revision as a VFS, and returns the mount point

namespace eval eskil::rev::CVS {}
namespace eval eskil::rev::RCS {}
namespace eval eskil::rev::CT {}
namespace eval eskil::rev::GIT {}
namespace eval eskil::rev::FOSSIL {}
namespace eval eskil::rev::SVN {}
namespace eval eskil::rev::HG {}
1073
1074
1075
1076
1077
1078
1079





1080
1081
1082
1083
1084
1085
1086
    }
    set gitmsg [string trim $gitmsg]
    if {$sts} {
        tk_messageBox -icon error -title "GIT revert error" -message $gitmsg \
                -parent $top
    }
}






# View log between displayed versions
proc eskil::rev::CVS::viewLog {top filename revs} {
    set cmd [list exec cvs -q log -N]
    if {[llength $revs] > 1} {
        lappend cmd -r[join $revs ":"]
    } else {







>
>
>
>
>







1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
    }
    set gitmsg [string trim $gitmsg]
    if {$sts} {
        tk_messageBox -icon error -title "GIT revert error" -message $gitmsg \
                -parent $top
    }
}

# Mount a directory revision as a VFS, and return the mount point
proc eskil::rev::FOSSIL::mount {dir rev} {
    return [vcsvfs::fossil::mount $dir $rev]
}

# View log between displayed versions
proc eskil::rev::CVS::viewLog {top filename revs} {
    set cmd [list exec cvs -q log -N]
    if {[llength $revs] > 1} {
        lappend cmd -r[join $revs ":"]
    } else {