Fossil SCM

Bugfix in the changeset class. The index from revisions to containing changesets is not 1:1, but 1:n. While only one revision changeset is possible there can also be zero or more symbol changesets.

aku 2007-11-24 04:29 trunk
Commit 8c9030e3e8a69da37e09851baeccf04a1e965524
--- tools/cvs2fossil/lib/c2f_prev.tcl
+++ tools/cvs2fossil/lib/c2f_prev.tcl
@@ -46,11 +46,11 @@
4646
4747
# Keep track of the generated changesets and of the inverse
4848
# mapping from revisions to them.
4949
lappend mychangesets $self
5050
set myidmap($myid) $self
51
- foreach r $revisions { set myrevmap($r) $self }
51
+ foreach r $revisions { lappend myrevmap($r) $self }
5252
return
5353
}
5454
5555
method id {} { return $myid }
5656
method revisions {} { return $myrevisions }
@@ -67,16 +67,20 @@
6767
($mybranchcode == [state one {
6868
SELECT type FROM symbol WHERE sid = $mysrcid
6969
}])}]
7070
}
7171
72
+ # result = dict (revision -> list (changeset))
7273
method successormap {} {
7374
# NOTE / FUTURE: Possible bottleneck.
7475
array set tmp {}
7576
foreach {rev children} [$self nextmap] {
7677
foreach child $children {
77
- lappend tmp($rev) $myrevmap($child)
78
+ # 8.5 lappend tmp($rev) {*}$myrevmap($child)
79
+ foreach cset $myrevmap($child) {
80
+ lappend tmp($rev) $cset
81
+ }
7882
}
7983
set tmp($rev) [lsort -unique $tmp($rev)]
8084
}
8185
return [array get tmp]
8286
}
@@ -84,22 +88,29 @@
8488
method successors {} {
8589
# NOTE / FUTURE: Possible bottleneck.
8690
set csets {}
8791
foreach {_ children} [$self nextmap] {
8892
foreach child $children {
89
- lappend csets $myrevmap($child)
93
+ # 8.5 lappend csets {*}$myrevmap($child)
94
+ foreach cset $myrevmap($child) {
95
+ lappend csets $cset
96
+ }
9097
}
9198
}
9299
return [lsort -unique $csets]
93100
}
94101
102
+ # result = dict (revision -> list (changeset))
95103
method predecessormap {} {
96104
# NOTE / FUTURE: Possible bottleneck.
97105
array set tmp {}
98106
foreach {rev children} [$self premap] {
99107
foreach child $children {
100
- lappend tmp($rev) $myrevmap($child)
108
+ # 8.5 lappend tmp($rev) {*}$myrevmap($child)
109
+ foreach cset $myrevmap($child) {
110
+ lappend tmp($rev) $cset
111
+ }
101112
}
102113
set tmp($rev) [lsort -unique $tmp($rev)]
103114
}
104115
return [array get tmp]
105116
}
@@ -296,11 +307,18 @@
296307
state run {
297308
DELETE FROM changeset WHERE cid = $myid;
298309
DELETE FROM csrevision WHERE cid = $myid;
299310
}
300311
}
301
- foreach r $myrevisions { unset myrevmap($r) }
312
+ foreach r $myrevisions {
313
+ if {[llength $myrevmap($r)] == 1} {
314
+ unset myrevmap($r)
315
+ } else {
316
+ set pos [lsearch -exact $myrevmap($r) $self]
317
+ set myrevmap($r) [lreplace $myrevmap($r) $pos $pos]
318
+ }
319
+ }
302320
set pos [lsearch -exact $mychangesets $self]
303321
set mychangesets [lreplace $mychangesets $pos $pos]
304322
return
305323
}
306324
@@ -670,11 +688,18 @@
670688
}
671689
672690
# # ## ### ##### ######## #############
673691
674692
typevariable mychangesets {} ; # List of all known changesets.
675
- typevariable myrevmap -array {} ; # Map from revisions to their changeset.
693
+ typevariable myrevmap -array {} ; # Map from revisions to the list
694
+ # of changesets containing
695
+ # it. NOTE: While only one
696
+ # revision changeset can contain
697
+ # the revision, there can
698
+ # however also be one or more
699
+ # additional symbol changesets
700
+ # which use it, hence a list.
676701
typevariable myidmap -array {} ; # Map from changeset id to changeset.
677702
typevariable mybranchcode {} ; # Local copy of project::sym/mybranch.
678703
679704
typemethod all {} { return $mychangesets }
680705
typemethod of {id} { return $myidmap($id) }
681706
--- tools/cvs2fossil/lib/c2f_prev.tcl
+++ tools/cvs2fossil/lib/c2f_prev.tcl
@@ -46,11 +46,11 @@
46
47 # Keep track of the generated changesets and of the inverse
48 # mapping from revisions to them.
49 lappend mychangesets $self
50 set myidmap($myid) $self
51 foreach r $revisions { set myrevmap($r) $self }
52 return
53 }
54
55 method id {} { return $myid }
56 method revisions {} { return $myrevisions }
@@ -67,16 +67,20 @@
67 ($mybranchcode == [state one {
68 SELECT type FROM symbol WHERE sid = $mysrcid
69 }])}]
70 }
71
 
72 method successormap {} {
73 # NOTE / FUTURE: Possible bottleneck.
74 array set tmp {}
75 foreach {rev children} [$self nextmap] {
76 foreach child $children {
77 lappend tmp($rev) $myrevmap($child)
 
 
 
78 }
79 set tmp($rev) [lsort -unique $tmp($rev)]
80 }
81 return [array get tmp]
82 }
@@ -84,22 +88,29 @@
84 method successors {} {
85 # NOTE / FUTURE: Possible bottleneck.
86 set csets {}
87 foreach {_ children} [$self nextmap] {
88 foreach child $children {
89 lappend csets $myrevmap($child)
 
 
 
90 }
91 }
92 return [lsort -unique $csets]
93 }
94
 
95 method predecessormap {} {
96 # NOTE / FUTURE: Possible bottleneck.
97 array set tmp {}
98 foreach {rev children} [$self premap] {
99 foreach child $children {
100 lappend tmp($rev) $myrevmap($child)
 
 
 
101 }
102 set tmp($rev) [lsort -unique $tmp($rev)]
103 }
104 return [array get tmp]
105 }
@@ -296,11 +307,18 @@
296 state run {
297 DELETE FROM changeset WHERE cid = $myid;
298 DELETE FROM csrevision WHERE cid = $myid;
299 }
300 }
301 foreach r $myrevisions { unset myrevmap($r) }
 
 
 
 
 
 
 
302 set pos [lsearch -exact $mychangesets $self]
303 set mychangesets [lreplace $mychangesets $pos $pos]
304 return
305 }
306
@@ -670,11 +688,18 @@
670 }
671
672 # # ## ### ##### ######## #############
673
674 typevariable mychangesets {} ; # List of all known changesets.
675 typevariable myrevmap -array {} ; # Map from revisions to their changeset.
 
 
 
 
 
 
 
676 typevariable myidmap -array {} ; # Map from changeset id to changeset.
677 typevariable mybranchcode {} ; # Local copy of project::sym/mybranch.
678
679 typemethod all {} { return $mychangesets }
680 typemethod of {id} { return $myidmap($id) }
681
--- tools/cvs2fossil/lib/c2f_prev.tcl
+++ tools/cvs2fossil/lib/c2f_prev.tcl
@@ -46,11 +46,11 @@
46
47 # Keep track of the generated changesets and of the inverse
48 # mapping from revisions to them.
49 lappend mychangesets $self
50 set myidmap($myid) $self
51 foreach r $revisions { lappend myrevmap($r) $self }
52 return
53 }
54
55 method id {} { return $myid }
56 method revisions {} { return $myrevisions }
@@ -67,16 +67,20 @@
67 ($mybranchcode == [state one {
68 SELECT type FROM symbol WHERE sid = $mysrcid
69 }])}]
70 }
71
72 # result = dict (revision -> list (changeset))
73 method successormap {} {
74 # NOTE / FUTURE: Possible bottleneck.
75 array set tmp {}
76 foreach {rev children} [$self nextmap] {
77 foreach child $children {
78 # 8.5 lappend tmp($rev) {*}$myrevmap($child)
79 foreach cset $myrevmap($child) {
80 lappend tmp($rev) $cset
81 }
82 }
83 set tmp($rev) [lsort -unique $tmp($rev)]
84 }
85 return [array get tmp]
86 }
@@ -84,22 +88,29 @@
88 method successors {} {
89 # NOTE / FUTURE: Possible bottleneck.
90 set csets {}
91 foreach {_ children} [$self nextmap] {
92 foreach child $children {
93 # 8.5 lappend csets {*}$myrevmap($child)
94 foreach cset $myrevmap($child) {
95 lappend csets $cset
96 }
97 }
98 }
99 return [lsort -unique $csets]
100 }
101
102 # result = dict (revision -> list (changeset))
103 method predecessormap {} {
104 # NOTE / FUTURE: Possible bottleneck.
105 array set tmp {}
106 foreach {rev children} [$self premap] {
107 foreach child $children {
108 # 8.5 lappend tmp($rev) {*}$myrevmap($child)
109 foreach cset $myrevmap($child) {
110 lappend tmp($rev) $cset
111 }
112 }
113 set tmp($rev) [lsort -unique $tmp($rev)]
114 }
115 return [array get tmp]
116 }
@@ -296,11 +307,18 @@
307 state run {
308 DELETE FROM changeset WHERE cid = $myid;
309 DELETE FROM csrevision WHERE cid = $myid;
310 }
311 }
312 foreach r $myrevisions {
313 if {[llength $myrevmap($r)] == 1} {
314 unset myrevmap($r)
315 } else {
316 set pos [lsearch -exact $myrevmap($r) $self]
317 set myrevmap($r) [lreplace $myrevmap($r) $pos $pos]
318 }
319 }
320 set pos [lsearch -exact $mychangesets $self]
321 set mychangesets [lreplace $mychangesets $pos $pos]
322 return
323 }
324
@@ -670,11 +688,18 @@
688 }
689
690 # # ## ### ##### ######## #############
691
692 typevariable mychangesets {} ; # List of all known changesets.
693 typevariable myrevmap -array {} ; # Map from revisions to the list
694 # of changesets containing
695 # it. NOTE: While only one
696 # revision changeset can contain
697 # the revision, there can
698 # however also be one or more
699 # additional symbol changesets
700 # which use it, hence a list.
701 typevariable myidmap -array {} ; # Map from changeset id to changeset.
702 typevariable mybranchcode {} ; # Local copy of project::sym/mybranch.
703
704 typemethod all {} { return $mychangesets }
705 typemethod of {id} { return $myidmap($id) }
706

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button