Fossil SCM

Add warning to "fossil sync", when a new fork is created during this sync.

jan.nijtmans 2015-04-25 20:38 trunk merge
Commit 560483f50436c9f7edfe5399209e68968b807e83
2 files changed +29 +4
+29
--- src/merge.c
+++ src/merge.c
@@ -98,10 +98,39 @@
9898
rid = db_column_int(&q, 0);
9999
}
100100
db_finalize(&q);
101101
return rid;
102102
}
103
+
104
+/*
105
+** Check content that was received with rcvid and return true if any
106
+** fork was created.
107
+*/
108
+int fossil_any_has_fork(int rcvid){
109
+ static Stmt q;
110
+ int fForkSeen = 0;
111
+
112
+ db_static_prepare(&q,
113
+ " SELECT pid FROM plink WHERE pid>0 AND isprim"
114
+ " AND cid IN (SELECT blob.rid FROM blob"
115
+ " WHERE rcvid=:rcvid)");
116
+ db_bind_int(&q, ":rcvid", rcvid);
117
+ while( !fForkSeen && db_step(&q)==SQLITE_ROW ){
118
+ int pid = db_column_int(&q, 0);
119
+ if( count_nonbranch_children(pid)>1 ){
120
+ compute_leaves(pid,1);
121
+ if( db_int(0, "SELECT count(*) FROM leaves")>1 ){
122
+ int rid = db_int(0, "SELECT rid FROM leaves, event"
123
+ " WHERE event.objid=leaves.rid"
124
+ " ORDER BY event.mtime DESC LIMIT 1");
125
+ fForkSeen = fossil_find_nearest_fork(rid, db_open_local(0))!=0;
126
+ }
127
+ }
128
+ }
129
+ db_finalize(&q);
130
+ return fForkSeen;
131
+}
103132
104133
/*
105134
** COMMAND: merge
106135
**
107136
** Usage: %fossil merge ?OPTIONS? ?VERSION?
108137
--- src/merge.c
+++ src/merge.c
@@ -98,10 +98,39 @@
98 rid = db_column_int(&q, 0);
99 }
100 db_finalize(&q);
101 return rid;
102 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
104 /*
105 ** COMMAND: merge
106 **
107 ** Usage: %fossil merge ?OPTIONS? ?VERSION?
108
--- src/merge.c
+++ src/merge.c
@@ -98,10 +98,39 @@
98 rid = db_column_int(&q, 0);
99 }
100 db_finalize(&q);
101 return rid;
102 }
103
104 /*
105 ** Check content that was received with rcvid and return true if any
106 ** fork was created.
107 */
108 int fossil_any_has_fork(int rcvid){
109 static Stmt q;
110 int fForkSeen = 0;
111
112 db_static_prepare(&q,
113 " SELECT pid FROM plink WHERE pid>0 AND isprim"
114 " AND cid IN (SELECT blob.rid FROM blob"
115 " WHERE rcvid=:rcvid)");
116 db_bind_int(&q, ":rcvid", rcvid);
117 while( !fForkSeen && db_step(&q)==SQLITE_ROW ){
118 int pid = db_column_int(&q, 0);
119 if( count_nonbranch_children(pid)>1 ){
120 compute_leaves(pid,1);
121 if( db_int(0, "SELECT count(*) FROM leaves")>1 ){
122 int rid = db_int(0, "SELECT rid FROM leaves, event"
123 " WHERE event.objid=leaves.rid"
124 " ORDER BY event.mtime DESC LIMIT 1");
125 fForkSeen = fossil_find_nearest_fork(rid, db_open_local(0))!=0;
126 }
127 }
128 }
129 db_finalize(&q);
130 return fForkSeen;
131 }
132
133 /*
134 ** COMMAND: merge
135 **
136 ** Usage: %fossil merge ?OPTIONS? ?VERSION?
137
+4
--- src/xfer.c
+++ src/xfer.c
@@ -1971,8 +1971,12 @@
19711971
if( nErr && go==2 ){
19721972
db_multi_exec("DROP TABLE onremote");
19731973
manifest_crosslink_end(MC_PERMIT_HOOKS);
19741974
content_enable_dephantomize(1);
19751975
db_end_transaction(0);
1976
+ }
1977
+ if( (syncFlags & SYNC_CLONE)==0 && fossil_any_has_fork(g.rcvid) ){
1978
+ fossil_warning("***** WARNING: a fork has occurred ***** use "
1979
+ "\"fossil forks\" for more details.");
19761980
}
19771981
return nErr;
19781982
}
19791983
--- src/xfer.c
+++ src/xfer.c
@@ -1971,8 +1971,12 @@
1971 if( nErr && go==2 ){
1972 db_multi_exec("DROP TABLE onremote");
1973 manifest_crosslink_end(MC_PERMIT_HOOKS);
1974 content_enable_dephantomize(1);
1975 db_end_transaction(0);
 
 
 
 
1976 }
1977 return nErr;
1978 }
1979
--- src/xfer.c
+++ src/xfer.c
@@ -1971,8 +1971,12 @@
1971 if( nErr && go==2 ){
1972 db_multi_exec("DROP TABLE onremote");
1973 manifest_crosslink_end(MC_PERMIT_HOOKS);
1974 content_enable_dephantomize(1);
1975 db_end_transaction(0);
1976 }
1977 if( (syncFlags & SYNC_CLONE)==0 && fossil_any_has_fork(g.rcvid) ){
1978 fossil_warning("***** WARNING: a fork has occurred ***** use "
1979 "\"fossil forks\" for more details.");
1980 }
1981 return nErr;
1982 }
1983

Keyboard Shortcuts

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