Fossil SCM

Add support for "magic" tags "ckout", "prev" and "next". Show the version updating to when performing an "update".

drh 2010-11-11 22:04 UTC trunk
Commit 5ea9ad379da5635fbf6782f7fe85e6e7471a1ad7
+1 -1
--- src/checkin.c
+++ src/checkin.c
@@ -130,11 +130,11 @@
130130
printf("repository: %s\n", db_lget("repository",""));
131131
printf("local-root: %s\n", g.zLocalRoot);
132132
printf("server-code: %s\n", db_get("server-code", ""));
133133
vid = db_lget_int("checkout", 0);
134134
if( vid ){
135
- show_common_info(vid, "checkout:", 0);
135
+ show_common_info(vid, "checkout:", 1, 1);
136136
}
137137
changes_cmd();
138138
}
139139
140140
/*
141141
--- src/checkin.c
+++ src/checkin.c
@@ -130,11 +130,11 @@
130 printf("repository: %s\n", db_lget("repository",""));
131 printf("local-root: %s\n", g.zLocalRoot);
132 printf("server-code: %s\n", db_get("server-code", ""));
133 vid = db_lget_int("checkout", 0);
134 if( vid ){
135 show_common_info(vid, "checkout:", 0);
136 }
137 changes_cmd();
138 }
139
140 /*
141
--- src/checkin.c
+++ src/checkin.c
@@ -130,11 +130,11 @@
130 printf("repository: %s\n", db_lget("repository",""));
131 printf("local-root: %s\n", g.zLocalRoot);
132 printf("server-code: %s\n", db_get("server-code", ""));
133 vid = db_lget_int("checkout", 0);
134 if( vid ){
135 show_common_info(vid, "checkout:", 1, 1);
136 }
137 changes_cmd();
138 }
139
140 /*
141
+37 -28
--- src/info.c
+++ src/info.c
@@ -49,11 +49,16 @@
4949
** * The UUID
5050
** * The record ID
5151
** * mtime and ctime
5252
** * who signed it
5353
*/
54
-void show_common_info(int rid, const char *zUuidName, int showComment){
54
+void show_common_info(
55
+ int rid, /* The rid for the check-in to display info for */
56
+ const char *zUuidName, /* Name of the UUID */
57
+ int showComment, /* True to show the check-in comment */
58
+ int showFamily /* True to show parents and children */
59
+){
5560
Stmt q;
5661
char *zComment = 0;
5762
char *zTags;
5863
char *zDate;
5964
char *zUuid;
@@ -68,38 +73,42 @@
6873
free(zUuid);
6974
free(zDate);
7075
}
7176
if( zUuid && showComment ){
7277
zComment = db_text(0,
73
- "SELECT coalesce(ecomment,comment) || ' (user: ' || coalesce(euser,user,'?') || ')' FROM event WHERE objid=%d",
78
+ "SELECT coalesce(ecomment,comment) || "
79
+ " ' (user: ' || coalesce(euser,user,'?') || ')' "
80
+ " FROM event WHERE objid=%d",
7481
rid
7582
);
7683
}
77
- db_prepare(&q, "SELECT uuid, pid FROM plink JOIN blob ON pid=rid "
78
- " WHERE cid=%d", rid);
79
- while( db_step(&q)==SQLITE_ROW ){
80
- const char *zUuid = db_column_text(&q, 0);
81
- zDate = db_text("",
82
- "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
83
- db_column_int(&q, 1)
84
- );
85
- printf("parent: %s %s\n", zUuid, zDate);
86
- free(zDate);
87
- }
88
- db_finalize(&q);
89
- db_prepare(&q, "SELECT uuid, cid FROM plink JOIN blob ON cid=rid "
90
- " WHERE pid=%d", rid);
91
- while( db_step(&q)==SQLITE_ROW ){
92
- const char *zUuid = db_column_text(&q, 0);
93
- zDate = db_text("",
94
- "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
95
- db_column_int(&q, 1)
96
- );
97
- printf("child: %s %s\n", zUuid, zDate);
98
- free(zDate);
99
- }
100
- db_finalize(&q);
84
+ if( showFamily ){
85
+ db_prepare(&q, "SELECT uuid, pid FROM plink JOIN blob ON pid=rid "
86
+ " WHERE cid=%d", rid);
87
+ while( db_step(&q)==SQLITE_ROW ){
88
+ const char *zUuid = db_column_text(&q, 0);
89
+ zDate = db_text("",
90
+ "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
91
+ db_column_int(&q, 1)
92
+ );
93
+ printf("parent: %s %s\n", zUuid, zDate);
94
+ free(zDate);
95
+ }
96
+ db_finalize(&q);
97
+ db_prepare(&q, "SELECT uuid, cid FROM plink JOIN blob ON cid=rid "
98
+ " WHERE pid=%d", rid);
99
+ while( db_step(&q)==SQLITE_ROW ){
100
+ const char *zUuid = db_column_text(&q, 0);
101
+ zDate = db_text("",
102
+ "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
103
+ db_column_int(&q, 1)
104
+ );
105
+ printf("child: %s %s\n", zUuid, zDate);
106
+ free(zDate);
107
+ }
108
+ db_finalize(&q);
109
+ }
101110
zTags = info_tags_of_checkin(rid, 0);
102111
if( zTags && zTags[0] ){
103112
printf("tags: %s\n", zTags);
104113
}
105114
free(zTags);
@@ -153,19 +162,19 @@
153162
printf("server-code: %s\n", db_get("server-code", ""));
154163
vid = db_lget_int("checkout", 0);
155164
if( vid==0 ){
156165
printf("checkout: nil\n");
157166
}else{
158
- show_common_info(vid, "checkout:", 1);
167
+ show_common_info(vid, "checkout:", 1, 1);
159168
}
160169
}else{
161170
int rid;
162171
rid = name_to_rid(g.argv[2]);
163172
if( rid==0 ){
164173
fossil_panic("no such object: %s\n", g.argv[2]);
165174
}
166
- show_common_info(rid, "uuid:", 1);
175
+ show_common_info(rid, "uuid:", 1, 1);
167176
}
168177
}
169178
170179
/*
171180
** Show information about all tags on a given node.
172181
--- src/info.c
+++ src/info.c
@@ -49,11 +49,16 @@
49 ** * The UUID
50 ** * The record ID
51 ** * mtime and ctime
52 ** * who signed it
53 */
54 void show_common_info(int rid, const char *zUuidName, int showComment){
 
 
 
 
 
55 Stmt q;
56 char *zComment = 0;
57 char *zTags;
58 char *zDate;
59 char *zUuid;
@@ -68,38 +73,42 @@
68 free(zUuid);
69 free(zDate);
70 }
71 if( zUuid && showComment ){
72 zComment = db_text(0,
73 "SELECT coalesce(ecomment,comment) || ' (user: ' || coalesce(euser,user,'?') || ')' FROM event WHERE objid=%d",
 
 
74 rid
75 );
76 }
77 db_prepare(&q, "SELECT uuid, pid FROM plink JOIN blob ON pid=rid "
78 " WHERE cid=%d", rid);
79 while( db_step(&q)==SQLITE_ROW ){
80 const char *zUuid = db_column_text(&q, 0);
81 zDate = db_text("",
82 "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
83 db_column_int(&q, 1)
84 );
85 printf("parent: %s %s\n", zUuid, zDate);
86 free(zDate);
87 }
88 db_finalize(&q);
89 db_prepare(&q, "SELECT uuid, cid FROM plink JOIN blob ON cid=rid "
90 " WHERE pid=%d", rid);
91 while( db_step(&q)==SQLITE_ROW ){
92 const char *zUuid = db_column_text(&q, 0);
93 zDate = db_text("",
94 "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
95 db_column_int(&q, 1)
96 );
97 printf("child: %s %s\n", zUuid, zDate);
98 free(zDate);
99 }
100 db_finalize(&q);
 
 
101 zTags = info_tags_of_checkin(rid, 0);
102 if( zTags && zTags[0] ){
103 printf("tags: %s\n", zTags);
104 }
105 free(zTags);
@@ -153,19 +162,19 @@
153 printf("server-code: %s\n", db_get("server-code", ""));
154 vid = db_lget_int("checkout", 0);
155 if( vid==0 ){
156 printf("checkout: nil\n");
157 }else{
158 show_common_info(vid, "checkout:", 1);
159 }
160 }else{
161 int rid;
162 rid = name_to_rid(g.argv[2]);
163 if( rid==0 ){
164 fossil_panic("no such object: %s\n", g.argv[2]);
165 }
166 show_common_info(rid, "uuid:", 1);
167 }
168 }
169
170 /*
171 ** Show information about all tags on a given node.
172
--- src/info.c
+++ src/info.c
@@ -49,11 +49,16 @@
49 ** * The UUID
50 ** * The record ID
51 ** * mtime and ctime
52 ** * who signed it
53 */
54 void show_common_info(
55 int rid, /* The rid for the check-in to display info for */
56 const char *zUuidName, /* Name of the UUID */
57 int showComment, /* True to show the check-in comment */
58 int showFamily /* True to show parents and children */
59 ){
60 Stmt q;
61 char *zComment = 0;
62 char *zTags;
63 char *zDate;
64 char *zUuid;
@@ -68,38 +73,42 @@
73 free(zUuid);
74 free(zDate);
75 }
76 if( zUuid && showComment ){
77 zComment = db_text(0,
78 "SELECT coalesce(ecomment,comment) || "
79 " ' (user: ' || coalesce(euser,user,'?') || ')' "
80 " FROM event WHERE objid=%d",
81 rid
82 );
83 }
84 if( showFamily ){
85 db_prepare(&q, "SELECT uuid, pid FROM plink JOIN blob ON pid=rid "
86 " WHERE cid=%d", rid);
87 while( db_step(&q)==SQLITE_ROW ){
88 const char *zUuid = db_column_text(&q, 0);
89 zDate = db_text("",
90 "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
91 db_column_int(&q, 1)
92 );
93 printf("parent: %s %s\n", zUuid, zDate);
94 free(zDate);
95 }
96 db_finalize(&q);
97 db_prepare(&q, "SELECT uuid, cid FROM plink JOIN blob ON cid=rid "
98 " WHERE pid=%d", rid);
99 while( db_step(&q)==SQLITE_ROW ){
100 const char *zUuid = db_column_text(&q, 0);
101 zDate = db_text("",
102 "SELECT datetime(mtime) || ' UTC' FROM event WHERE objid=%d",
103 db_column_int(&q, 1)
104 );
105 printf("child: %s %s\n", zUuid, zDate);
106 free(zDate);
107 }
108 db_finalize(&q);
109 }
110 zTags = info_tags_of_checkin(rid, 0);
111 if( zTags && zTags[0] ){
112 printf("tags: %s\n", zTags);
113 }
114 free(zTags);
@@ -153,19 +162,19 @@
162 printf("server-code: %s\n", db_get("server-code", ""));
163 vid = db_lget_int("checkout", 0);
164 if( vid==0 ){
165 printf("checkout: nil\n");
166 }else{
167 show_common_info(vid, "checkout:", 1, 1);
168 }
169 }else{
170 int rid;
171 rid = name_to_rid(g.argv[2]);
172 if( rid==0 ){
173 fossil_panic("no such object: %s\n", g.argv[2]);
174 }
175 show_common_info(rid, "uuid:", 1, 1);
176 }
177 }
178
179 /*
180 ** Show information about all tags on a given node.
181
+15
--- src/name.c
+++ src/name.c
@@ -142,10 +142,11 @@
142142
**
143143
** Memory to hold the returned string comes from malloc() and needs to
144144
** be freed by the caller.
145145
*/
146146
char *tag_to_uuid(const char *zTag){
147
+ int vid;
147148
char *zUuid =
148149
db_text(0,
149150
"SELECT blob.uuid"
150151
" FROM tag, tagxref, event, blob"
151152
" WHERE tag.tagname='sym-'||%Q "
@@ -189,10 +190,24 @@
189190
" FROM event, blob"
190191
" WHERE event.type='ci'"
191192
" AND blob.rid=event.objid"
192193
" ORDER BY event.mtime DESC"
193194
);
195
+ }
196
+ if( zUuid==0 && g.localOpen && (vid=db_lget_int("checkout",0))!=0 ){
197
+ if( strcmp(zTag, "ckout")==0 ){
198
+ zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
199
+ }else if( strcmp(zTag, "prev")==0 ){
200
+ zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid="
201
+ "(SELECT pid FROM plink WHERE cid=%d AND isprim)",
202
+ vid);
203
+ }else if( strcmp(zTag, "next")==0 ){
204
+ zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid="
205
+ "(SELECT cid FROM plink WHERE pid=%d AND isprim"
206
+ " ORDER BY mtime DESC)",
207
+ vid);
208
+ }
194209
}
195210
}
196211
return zUuid;
197212
}
198213
199214
--- src/name.c
+++ src/name.c
@@ -142,10 +142,11 @@
142 **
143 ** Memory to hold the returned string comes from malloc() and needs to
144 ** be freed by the caller.
145 */
146 char *tag_to_uuid(const char *zTag){
 
147 char *zUuid =
148 db_text(0,
149 "SELECT blob.uuid"
150 " FROM tag, tagxref, event, blob"
151 " WHERE tag.tagname='sym-'||%Q "
@@ -189,10 +190,24 @@
189 " FROM event, blob"
190 " WHERE event.type='ci'"
191 " AND blob.rid=event.objid"
192 " ORDER BY event.mtime DESC"
193 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194 }
195 }
196 return zUuid;
197 }
198
199
--- src/name.c
+++ src/name.c
@@ -142,10 +142,11 @@
142 **
143 ** Memory to hold the returned string comes from malloc() and needs to
144 ** be freed by the caller.
145 */
146 char *tag_to_uuid(const char *zTag){
147 int vid;
148 char *zUuid =
149 db_text(0,
150 "SELECT blob.uuid"
151 " FROM tag, tagxref, event, blob"
152 " WHERE tag.tagname='sym-'||%Q "
@@ -189,10 +190,24 @@
190 " FROM event, blob"
191 " WHERE event.type='ci'"
192 " AND blob.rid=event.objid"
193 " ORDER BY event.mtime DESC"
194 );
195 }
196 if( zUuid==0 && g.localOpen && (vid=db_lget_int("checkout",0))!=0 ){
197 if( strcmp(zTag, "ckout")==0 ){
198 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
199 }else if( strcmp(zTag, "prev")==0 ){
200 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid="
201 "(SELECT pid FROM plink WHERE cid=%d AND isprim)",
202 vid);
203 }else if( strcmp(zTag, "next")==0 ){
204 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid="
205 "(SELECT cid FROM plink WHERE pid=%d AND isprim"
206 " ORDER BY mtime DESC)",
207 vid);
208 }
209 }
210 }
211 return zUuid;
212 }
213
214
--- src/update.c
+++ src/update.c
@@ -113,10 +113,11 @@
113113
tid = db_int(0, "SELECT rid FROM leaves, event"
114114
" WHERE event.objid=leaves.rid"
115115
" ORDER BY event.mtime DESC");
116116
}
117117
118
+ show_common_info(tid, "update-to:", 1, 0);
118119
if( !verboseFlag && (tid==vid)) return; /* Nothing to update */
119120
db_begin_transaction();
120121
vfile_check_signature(vid, 1);
121122
if( !nochangeFlag ) undo_begin();
122123
load_vfile_from_rid(tid);
123124
--- src/update.c
+++ src/update.c
@@ -113,10 +113,11 @@
113 tid = db_int(0, "SELECT rid FROM leaves, event"
114 " WHERE event.objid=leaves.rid"
115 " ORDER BY event.mtime DESC");
116 }
117
 
118 if( !verboseFlag && (tid==vid)) return; /* Nothing to update */
119 db_begin_transaction();
120 vfile_check_signature(vid, 1);
121 if( !nochangeFlag ) undo_begin();
122 load_vfile_from_rid(tid);
123
--- src/update.c
+++ src/update.c
@@ -113,10 +113,11 @@
113 tid = db_int(0, "SELECT rid FROM leaves, event"
114 " WHERE event.objid=leaves.rid"
115 " ORDER BY event.mtime DESC");
116 }
117
118 show_common_info(tid, "update-to:", 1, 0);
119 if( !verboseFlag && (tid==vid)) return; /* Nothing to update */
120 db_begin_transaction();
121 vfile_check_signature(vid, 1);
122 if( !nochangeFlag ) undo_begin();
123 load_vfile_from_rid(tid);
124

Keyboard Shortcuts

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