︙ | | | ︙ | |
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
proc collectMergeData {top} {
global eskil
set eskil($top,leftMergeData) {}
set eskil($top,rightMergeData) {}
set eskil($top,mergeSelection,AnyConflict) 0
if {![info exists eskil($top,changes)]} {
set eskil($top,changes) {}
}
prepareFiles $top
set ch1 [open $eskil($top,leftFile) r]
set ch2 [open $eskil($top,rightFile) r]
|
|
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
proc collectMergeData {top} {
global eskil
set eskil($top,leftMergeData) {}
set eskil($top,rightMergeData) {}
set eskil($top,mergeSelection,AnyConflict) 0
if { ! [info exists eskil($top,changes)]} {
set eskil($top,changes) {}
}
prepareFiles $top
set ch1 [open $eskil($top,leftFile) r]
set ch2 [open $eskil($top,rightFile) r]
|
︙ | | | ︙ | |
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
$w delete 1.0 end
set marks {}
set t 0
set firstConflict -1
foreach {commLeft diffLeft} $eskil($top,leftMergeData) \
{commRight diffRight} $eskil($top,rightMergeData) {
$w insert end $commRight
if {![info exists eskil($top,mergeSelection,$t)]} continue
$w mark set merges$t insert
$w mark gravity merges$t left
switch $eskil($top,mergeSelection,$t) {
1 { $w insert end $diffLeft merge$t }
2 { $w insert end $diffRight merge$t }
12 { $w insert end $diffLeft merge$t
$w insert end $diffRight merge$t }
|
|
|
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
$w delete 1.0 end
set marks {}
set t 0
set firstConflict -1
foreach {commLeft diffLeft} $eskil($top,leftMergeData) \
{commRight diffRight} $eskil($top,rightMergeData) {
$w insert end $commRight
if { ! [info exists eskil($top,mergeSelection,$t)]} continue
$w mark set merges$t insert
$w mark gravity merges$t left
switch $eskil($top,mergeSelection,$t) {
1 { $w insert end $diffLeft merge$t }
2 { $w insert end $diffRight merge$t }
12 { $w insert end $diffLeft merge$t
$w insert end $diffRight merge$t }
|
︙ | | | ︙ | |
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
|
set eskil($top,rightMergeData) {}
array unset eskil $top,mergeSelection,*
}
# Create a window to display merge result.
proc makeMergeWin {top} {
collectMergeData $top
if {![info exists ::eskil($top,mergetranslation)]} {
if {$::tcl_platform(platform) eq "windows"} {
set ::eskil($top,mergetranslation) crlf
} else {
set ::eskil($top,mergetranslation) lf
}
}
set w $top.merge
if {![winfo exists $w]} {
toplevel $w
} else {
destroy {*}[winfo children $w]
}
set anyC $::eskil($top,mergeSelection,AnyConflict)
wm title $w "Merge result: [TitleTail $top]"
|
|
|
|
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
|
set eskil($top,rightMergeData) {}
array unset eskil $top,mergeSelection,*
}
# Create a window to display merge result.
proc makeMergeWin {top} {
collectMergeData $top
if { ! [info exists ::eskil($top,mergetranslation)]} {
if {$::tcl_platform(platform) eq "windows"} {
set ::eskil($top,mergetranslation) crlf
} else {
set ::eskil($top,mergetranslation) lf
}
}
set w $top.merge
if { ! [winfo exists $w]} {
toplevel $w
} else {
destroy {*}[winfo children $w]
}
set anyC $::eskil($top,mergeSelection,AnyConflict)
wm title $w "Merge result: [TitleTail $top]"
|
︙ | | | ︙ | |
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
|
ttk::button $w.f.bs -text "Save" -command "saveMerge $top"
ttk::button $w.f.bq -text "Close" -command "closeMerge $top"
wm protocol $w WM_DELETE_WINDOW "closeMerge $top"
grid $w.f.rb1 $w.f.rb2 $w.f.rb3 $w.f.rb4 x $w.f.b1 $w.f.b2 x \
$w.f.bl $w.f.br x $w.f.bs $w.f.bq -sticky we -padx 1
if {!$anyC} {
grid forget $w.f.bl $w.f.br
}
grid columnconfigure $w.f {4 7 10} -minsize 10
grid columnconfigure $w.f 10 -weight 1
grid columnconfigure $w.f {0 1 2 3} -uniform a
grid columnconfigure $w.f {5 6 8 9 11 12} -uniform b
#grid columnconfigure $w.f {11 13 14} -uniform c
|
|
|
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
|
ttk::button $w.f.bs -text "Save" -command "saveMerge $top"
ttk::button $w.f.bq -text "Close" -command "closeMerge $top"
wm protocol $w WM_DELETE_WINDOW "closeMerge $top"
grid $w.f.rb1 $w.f.rb2 $w.f.rb3 $w.f.rb4 x $w.f.b1 $w.f.b2 x \
$w.f.bl $w.f.br x $w.f.bs $w.f.bq -sticky we -padx 1
if { ! $anyC} {
grid forget $w.f.bl $w.f.br
}
grid columnconfigure $w.f {4 7 10} -minsize 10
grid columnconfigure $w.f 10 -weight 1
grid columnconfigure $w.f {0 1 2 3} -uniform a
grid columnconfigure $w.f {5 6 8 9 11 12} -uniform b
#grid columnconfigure $w.f {11 13 14} -uniform c
|
︙ | | | ︙ | |
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
|
grid rowconfigure $w 1 -weight 1
fillMergeWindow $top
}
# Compare each file against an ancestor file for three-way merge
proc collectAncestorInfo {top dFile1 dFile2 opts} {
if {![info exists ::eskil($top,mergetranslation)]} {
# Try to autodetect line endings in ancestor file
detectLineEnd $top $::eskil($top,ancestorFile) mergetranslation lf
}
array unset ::eskil $top,ancestorLeft,*
array unset ::eskil $top,ancestorRight,*
set differrA1 [catch {DiffUtil::diffFiles {*}$opts \
$::eskil($top,ancestorFile) $dFile1} diffresA1]
|
|
|
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
|
grid rowconfigure $w 1 -weight 1
fillMergeWindow $top
}
# Compare each file against an ancestor file for three-way merge
proc collectAncestorInfo {top dFile1 dFile2 opts} {
if { ! [info exists ::eskil($top,mergetranslation)]} {
# Try to autodetect line endings in ancestor file
detectLineEnd $top $::eskil($top,ancestorFile) mergetranslation lf
}
array unset ::eskil $top,ancestorLeft,*
array unset ::eskil $top,ancestorRight,*
set differrA1 [catch {DiffUtil::diffFiles {*}$opts \
$::eskil($top,ancestorFile) $dFile1} diffresA1]
|
︙ | | | ︙ | |
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
|
if {[array size right] == 0} {
# No changes to the right, so deleted to the left : Keep left side
set comment "Left: Delete"
return 1
}
# Is it deleted on the left side?
set delLeft [info exists ::eskil($top,ancestorLeft,d$line1)]
if {!$delLeft} {
# It is inserted to the right : Keep right side
set comment "Right: Add"
return 2
}
# Deleted to left and changed to the right : ?? (right for now)
# FIXA
set comment "*** Left: Delete, Right: Change"
|
|
|
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
|
if {[array size right] == 0} {
# No changes to the right, so deleted to the left : Keep left side
set comment "Left: Delete"
return 1
}
# Is it deleted on the left side?
set delLeft [info exists ::eskil($top,ancestorLeft,d$line1)]
if { ! $delLeft} {
# It is inserted to the right : Keep right side
set comment "Right: Add"
return 2
}
# Deleted to left and changed to the right : ?? (right for now)
# FIXA
set comment "*** Left: Delete, Right: Change"
|
︙ | | | ︙ | |
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
|
if {[array size left] == 0} {
# No changes to the left, so deleted to the right : Keep right side
set comment "Right: Delete"
return 2
}
# Is it deleted on the right side?
set delRight [info exists ::eskil($top,ancestorRight,d$line2)]
if {!$delRight} {
# It is inserted to the left : Keep left side
set comment "Left: Add"
return 1
}
# Deleted to right and changed to the left : ?? (right for now)
# FIXA
set comment "*** Left: Change, Right: Delete"
|
|
|
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
|
if {[array size left] == 0} {
# No changes to the left, so deleted to the right : Keep right side
set comment "Right: Delete"
return 2
}
# Is it deleted on the right side?
set delRight [info exists ::eskil($top,ancestorRight,d$line2)]
if { ! $delRight} {
# It is inserted to the left : Keep left side
set comment "Left: Add"
return 1
}
# Deleted to right and changed to the left : ?? (right for now)
# FIXA
set comment "*** Left: Change, Right: Delete"
|
︙ | | | ︙ | |