@@ -39,15 +39,16 @@
39 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
40 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The undocumented --script FILENAME option causes the Tk script to
41 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be written into the FILENAME instead of being run. This is used
42 42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for testing and debugging. */
43 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTempFile = find_option("script",0,1);
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- bDebug = find_option("debug",0,0)!=0;
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bDebug = find_option("tkdebug",0,0)!=0;
45 45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
46 46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
47 47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&script);
48 48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&script, "set ncontext %d\n", nContext);
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&script, "set fossilexe {\"%/\"}\n", g.nameOfExe);
49 50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&script, "set fossilcmd {| \"%/\" merge-info}\n",
50 51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.nameOfExe);
51 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&script, "set filelist [list");
52 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc==2 ){
53 54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* No files named on the command-line. Use every file mentioned
@@ -136,12 +137,19 @@
136 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** command associated with file "zFName". zFName must be the filename
137 138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** relative to the root of the check-in - in other words a "tree name".
138 139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
139 140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When this routine is called, we know that the mergestat table
140 141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** exists, but we do not know if zFName is mentioned in that table.
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The diffMode variable has these values:
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0 Standard 3-way diff
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 12 2-way diff between baseline and local
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 13 2-way diff between baseline and merge-in
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 23 2-way diff between local and merge-in
141 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void merge_info_tcl(const char *zFName, int nContext){
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void merge_info_tcl(const char *zFName, int nContext, int diffMode){
143 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTreename;/* Name of the file in the tree */
144 152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q; /* To query the MERGESTAT table */
145 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MergeBuilder mb; /* The merge builder object */
146 154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob pivot,v1,v2,out; /* Blobs for holding content */
147 155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFN; /* A filename */
@@ -162,82 +170,117 @@
162 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
163 171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mergebuilder_init_tcl(&mb);
165 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mb.nContext = nContext;
166 174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Set up the pivot */
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zFN = db_column_text(&q, 0);
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zFN==0 ){
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* No pivot because the file was added */
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zPivot = "(no baseline)";
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&pivot);
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zPivot = mprintf("%s (baseline)", file_tail(zFN));
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rid = db_column_int(&q, 1);
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_get(rid, &pivot);
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.pPivot = &pivot;
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Set up the merge-in as V2 */
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zFN = db_column_text(&q, 5);
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zFN==0 ){
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* File deleted in the merged-in branch */
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zV2 = "(deleted file)";
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&v2);
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zV2 = mprintf("%s (merge-in)", file_tail(zFN));
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rid = db_column_int(&q, 6);
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_get(rid, &v2);
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.pV2 = &v2;
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Set up the local content as V1 */
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zFN = db_column_text(&q, 2);
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zFN==0 ){
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* File added by merge */
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zV1 = "(no original)";
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&v1);
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zV1 = mprintf("%s (local)", file_tail(zFN));
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rid = db_column_int(&q, 3);
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sz = db_column_int(&q, 4);
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rid==0 && sz>0 ){
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The origin file had been edited so we'll have to pull its
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** original content out of the undo buffer */
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Stmt q2;
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q2,
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT content FROM undo"
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE pathname=%Q AND octet_length(content)=%d",
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zFN, sz
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&v1);
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( db_step(&q2)==SQLITE_ROW ){
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_column_blob(&q2, 0, &v1);
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zV1 = "(local content missing)";
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_finalize(&q2);
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* The origin file was unchanged when the merge first occurred */
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_get(rid, &v1);
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.pV1 = &v1;
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Set up the output */
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zFN = db_column_text(&q, 7);
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zFN==0 ){
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zOut = "(Merge Result)";
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.zOut = mprintf("%s (after merge)", file_tail(zFN));
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&out);
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mb.pOut = &out;
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- merge_three_blobs(&mb);
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_write_to_file(&out, "-");
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&pivot);
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode!=23 ){
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set up the pivot or baseline */
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = db_column_text(&q, 0);
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFN==0 ){
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* No pivot because the file was added */
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zPivot = "(no baseline)";
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zPivot = mprintf("%s (baseline)", file_tail(zFN));
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_column_int(&q, 1);
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(rid, &pivot);
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.pPivot = &pivot;
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&v2);
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode!=12 ){
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set up the merge-in as V2 */
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = db_column_text(&q, 5);
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFN==0 ){
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* File deleted in the merged-in branch */
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zV2 = "(deleted file)";
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zV2 = mprintf("%s (merge-in)", file_tail(zFN));
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_column_int(&q, 6);
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(rid, &v2);
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.pV2 = &v2;
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&v1);
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode!=13 ){
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set up the local content as V1 */
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = db_column_text(&q, 2);
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFN==0 ){
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* File added by merge */
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zV1 = "(no original)";
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zV1 = mprintf("%s (local)", file_tail(zFN));
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid = db_column_int(&q, 3);
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz = db_column_int(&q, 4);
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rid==0 && sz>0 ){
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The origin file had been edited so we'll have to pull its
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** original content out of the undo buffer */
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q2;
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q2,
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT content FROM undo"
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE pathname=%Q AND octet_length(content)=%d",
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN, sz
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&v1);
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db_step(&q2)==SQLITE_ROW ){
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_column_blob(&q2, 0, &v1);
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zV1 = "(local content missing)";
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q2);
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The origin file was unchanged when the merge first occurred */
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(rid, &v1);
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.pV1 = &v1;
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&out);
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode==0 ){
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set up the output and do a 3-way diff */
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFN = db_column_text(&q, 7);
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFN==0 ){
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zOut = "(Merge Result)";
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.zOut = mprintf("%s (after merge)", file_tail(zFN));
248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mb.pOut = &out;
250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ merge_three_blobs(&mb);
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Set up to do a two-way diff */
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob *pLeft, *pRight;
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTagLeft, *zTagRight;
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig cfg;
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&cfg, 0, sizeof(cfg));
257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cfg.diffFlags = DIFF_TCL;
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cfg.nContext = mb.nContext;
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode==12 || diffMode==13 ){
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLeft = &pivot;
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTagLeft = "baseline";
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLeft = &v1;
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTagLeft = "local";
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode==12 ){
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRight = &v1;
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTagRight = "local";
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRight = &v2;
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTagRight = "merge-in";
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cfg.azLabel[0] = mprintf("%s (%s)", zFName, zTagLeft);
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cfg.azLabel[1] = mprintf("%s (%s)", zFName, zTagRight);
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_print_filenames("", "", &cfg, &out);
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text_diff(pLeft, pRight, &out, &cfg);
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free((char*)cfg.azLabel[0]);
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free((char*)cfg.azLabel[1]);
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_write_to_file(&out, "-");
239 282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mb.xDestroy(&mb);
240 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&pivot);
241 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&v1);
242 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&v2);
243 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&out);
@@ -257,21 +300,26 @@
257 300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** lines are shown
258 301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -c|--context N Show N lines of context around each change,
259 302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with negative N meaning show all content. Only
260 303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** meaningful in combination with --tcl or --tk.
261 304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --dark Use dark mode for the Tcl/Tk-based GUI
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --tk Bring up a Tcl/Tk GUI that shows the changes
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** associated with the most recent merge.
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Options used internally by --tk:
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --diff12 FILE Bring up a separate --tk diff for just the baseline
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and local variants of FILE.
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --diff13 FILE Like --diff12 but for baseline versus merge-in
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --diff23 FILE Like --diff12 but for local versus merge-in
262 313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --tcl FILE Generate (to stdout) a TCL list containing
263 314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** information needed to display the changes to
264 315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** FILE caused by the most recent merge. FILE must
265 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be a pathname relative to the root of the check-out.
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** --tk Bring up a Tcl/Tk GUI that shows the changes
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** associated with the most recent merge.
268 317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Additional debugging options available only when --tk is used:
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** --debug Show sub-commands run to implement --tk
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Debugging options available only when --tk is used:
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --tkdebug Show sub-commands run to implement --tk
271 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --script FILE Write script used to implement --tk into FILE
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
273 321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
274 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void merge_info_cmd(void){
275 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCnt;
276 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTcl;
277 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bTk;
@@ -279,23 +327,29 @@
279 327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bAll;
280 328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nContext;
281 329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
282 330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zWhere;
283 331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cnt = 0;
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDiff2 = 0;
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int diffMode = 0;
284 334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
285 335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_must_be_within_tree();
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zTcl = find_option("tcl", 0, 1);
287 336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bTk = find_option("tk", 0, 0)!=0;
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTcl = find_option("tcl", 0, 1);
288 338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zCnt = find_option("context", "c", 1);
289 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bDark = find_option("dark", 0, 0)!=0;
290 340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bAll = find_option("all", "a", 0)!=0;
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( bTk==0 ){
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- verify_all_options();
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.argc>2 ){
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- usage("[OPTIONS]");
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (zDiff2 = find_option("diff12", 0, 1))!=0 ){
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diffMode = 12;
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (zDiff2 = find_option("diff13", 0, 1))!=0 ){
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diffMode = 13;
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (zDiff2 = find_option("diff23", 0, 1))!=0 ){
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diffMode = 23;
296 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
297 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zCnt ){
298 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nContext = atoi(zCnt);
299 353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nContext<0 ) nContext = 0xfffffff;
300 354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
301 355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nContext = 6;
@@ -311,13 +365,28 @@
311 365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bTk ){
312 366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
merge_info_tk(bDark, bAll, nContext);
313 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
314 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
315 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zTcl ){
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- merge_info_tcl(zTcl, nContext);
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode ) zTcl = zDiff2;
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ merge_info_tcl(zTcl, nContext, diffMode);
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffMode ){
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zCmd;
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCmd = mprintf("merge-info --diff%d %!$ -c %d%s",
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diffMode, zDiff2, nContext, bDark ? " --dark" : "");
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_tk(zCmd, g.argc);
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zCmd);
317 380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
318 381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ verify_all_options();
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.argc>2 ){
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ usage("[OPTIONS]");
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
319 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bAll ){
320 389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWhere = "";
321 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
322 391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zWhere = "WHERE op IN ('MERGE','CONFLICT','ERROR')";
323 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
324 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!