The unified diff between revisions [6420622a..] and [e5ee75e6..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "database.ml"
# from [ac1947491023a5029bdf385e23f5496d77484070]
# to [53eba58747f8fa175f28249ae3b4d1676a699bfe]
#
# patch "database.mli"
# from [adea7c4edcb55913177145025fc45d57bad3c1b0]
# to [75341955c92f554a0d2ae21b5975591afdcb4416]
#
# patch "view.ml"
# from [1939b8c99f699eb33005125453a29933794bbb90]
# to [3bebbdc77835caaaeaac35f5668ba26a8bca06f4]
#
============================================================
--- database.ml ac1947491023a5029bdf385e23f5496d77484070
+++ database.ml 53eba58747f8fa175f28249ae3b4d1676a699bfe
@@ -65,8 +65,11 @@ let fetch_branches base64 db =
let fetch_branches base64 db =
List.sort compare
(Sqlite3.fetch db
- "SELECT DISTINCT value FROM revision_certs WHERE name = 'branch'"
- (acc_one_col base64)
+ "SELECT value, COUNT(id) FROM revision_certs WHERE name = 'branch' GROUP BY value"
+ (fun acc s ->
+ let b = blob_col base64 s 0 in
+ let n = Sqlite3.column_int s 1 in
+ (b, n) :: acc)
[])
let view_name_domain = "ids_of_branch"
============================================================
--- database.mli adea7c4edcb55913177145025fc45d57bad3c1b0
+++ database.mli 75341955c92f554a0d2ae21b5975591afdcb4416
@@ -11,7 +11,7 @@ val get_filename : t -> string
val get_filename : t -> string
-val fetch_branches : t -> string list
+val fetch_branches : t -> (string * int) list
val fetch_ancestry_graph : t -> query -> agraph
val fetch_revision : t -> string -> node_data
val fetch_certs_and_revision : t -> string -> node_data
============================================================
--- view.ml 1939b8c99f699eb33005125453a29933794bbb90
+++ view.ml 3bebbdc77835caaaeaac35f5668ba26a8bca06f4
@@ -390,6 +390,7 @@ module Branch_selector = struct
type t = {
store : GTree.tree_store ;
branch_column : string GTree.column ;
+ count_column : int GTree.column ;
in_view_column : bool GTree.column ;
vis_column : bool GTree.column ;
w : [`CANCEL|`DELETE_EVENT|`VIEW] GWindow.dialog ;
@@ -406,6 +407,7 @@ module Branch_selector = struct
(* The model containing branch names *)
let cl = new GTree.column_list in
let branch_column = cl#add Gobject.Data.string in
+ let count_column = cl#add Gobject.Data.int in
let in_view_column = cl#add Gobject.Data.boolean in
let vis_column = cl#add Gobject.Data.boolean in
let model = GTree.tree_store cl in
@@ -458,6 +460,14 @@ module Branch_selector = struct
ignore (view#append_column vc) ;
view#set_expander_column (Some vc)
end ;
+ begin
+ let vc = GTree.view_column ~title:"Count" () in
+ let r = GTree.cell_renderer_text [`XALIGN 1.] in
+ vc#pack r ;
+ vc#add_attribute r "text" count_column ;
+ vc#add_attribute r "visible" count_column ;
+ ignore (view#append_column vc)
+ end ;
(* The radio buttons for the date limit *)
let packing = Ui.category "Date limit" packing in
@@ -494,6 +504,7 @@ module Branch_selector = struct
{ store = model ;
branch_column = branch_column ;
+ count_column = count_column ;
in_view_column = in_view_column ;
vis_column = vis_column ;
view = view ;
@@ -674,9 +685,10 @@ module Branch_selector = struct
let rec loop kl parent t =
let m, parent =
match t with
- | Trie.N (v, m) ->
+ | Trie.N ((v, n), m) ->
let row = s.store#append ?parent () in
s.store#set ~row ~column:s.branch_column v ;
+ s.store#set ~row ~column:s.count_column n ;
s.store#set ~row ~column:s.vis_column true ;
m, Some row
| Trie.B m when kl <> [] && at_least_two m ->
@@ -695,10 +707,10 @@ module Branch_selector = struct
assert (s.store#get_iter_first = None) ;
(* branch names are theoretically unstructured but
in practice . is used as delimiter. (NDQF) *)
- List.map (fun b -> string_split '.' b, b) br
+ List.map (fun ((b, _) as v) -> string_split '.' b, v) br
++
List.fold_left
- (fun acc (bl, b) -> Trie.insert acc bl b)
+ (fun acc (bl, v) -> Trie.insert acc bl v)
Trie.empty
++
fill_store_from_trie s