Fossil SCM

Fixes to "export --git". Changes spaces in tag names to "_" since Git cannot deal with spaces in tag names. Make sure the name of the committer is well-formed according to git's definition of well-formedness.

drh 2011-06-17 15:13 trunk
Commit b707622f29b6081daa275b315ae60c5a0be7ceda
1 file changed +10 -3
+10 -3
--- src/export.c
+++ src/export.c
@@ -39,11 +39,11 @@
3939
db_bind_text(&q, ":user", zUser);
4040
if( db_step(&q)!=SQLITE_ROW ){
4141
db_reset(&q);
4242
for(i=0; zUser[i] && zUser[i]!='>' && zUser[i]!='<'; i++){}
4343
if( zUser[i]==0 ){
44
- printf(" <%s>", zUser);
44
+ printf(" %s <%s>", zUser, zUser);
4545
return;
4646
}
4747
zName = mprintf("%s", zUser);
4848
for(i=j=0; zName[i]; i++){
4949
if( zName[i]!='<' && zName[i]!='>' ){
@@ -56,11 +56,11 @@
5656
return;
5757
}
5858
zContact = db_column_text(&q, 0);
5959
for(i=0; zContact[i] && zContact[i]!='>' && zContact[i]!='<'; i++){}
6060
if( zContact[i]==0 ){
61
- printf(" %s <%s>", zContact, zUser);
61
+ printf(" %s <%s>", zContact[0] ? zContact : zUser, zUser);
6262
db_reset(&q);
6363
return;
6464
}
6565
if( zContact[i]=='<' ){
6666
zEmail = mprintf("%s", &zContact[i]);
@@ -196,17 +196,24 @@
196196
" FROM tagxref JOIN tag USING(tagid)"
197197
" WHERE tagtype=1 AND tagname GLOB 'sym-*'"
198198
);
199199
while( db_step(&q)==SQLITE_ROW ){
200200
const char *zTagname = db_column_text(&q, 0);
201
+ char *zEncoded = 0;
201202
int rid = db_column_int(&q, 1);
202203
const char *zSecSince1970 = db_column_text(&q, 2);
204
+ int i;
203205
if( rid==0 || !bag_find(&vers, rid) ) continue;
204206
zTagname += 4;
205
- printf("tag %s\n", zTagname);
207
+ zEncoded = mprintf("%s", zTagname);
208
+ for(i=0; zEncoded[i]; i++){
209
+ if( !fossil_isalnum(zEncoded[i]) ) zEncoded[i] = '_';
210
+ }
211
+ printf("tag %s\n", zEncoded);
206212
printf("from :%d\n", rid+firstCkin);
207213
printf("tagger <tagger> %s +0000\n", zSecSince1970);
208214
printf("data 0\n");
215
+ fossil_free(zEncoded);
209216
}
210217
db_finalize(&q);
211218
bag_clear(&vers);
212219
}
213220
--- src/export.c
+++ src/export.c
@@ -39,11 +39,11 @@
39 db_bind_text(&q, ":user", zUser);
40 if( db_step(&q)!=SQLITE_ROW ){
41 db_reset(&q);
42 for(i=0; zUser[i] && zUser[i]!='>' && zUser[i]!='<'; i++){}
43 if( zUser[i]==0 ){
44 printf(" <%s>", zUser);
45 return;
46 }
47 zName = mprintf("%s", zUser);
48 for(i=j=0; zName[i]; i++){
49 if( zName[i]!='<' && zName[i]!='>' ){
@@ -56,11 +56,11 @@
56 return;
57 }
58 zContact = db_column_text(&q, 0);
59 for(i=0; zContact[i] && zContact[i]!='>' && zContact[i]!='<'; i++){}
60 if( zContact[i]==0 ){
61 printf(" %s <%s>", zContact, zUser);
62 db_reset(&q);
63 return;
64 }
65 if( zContact[i]=='<' ){
66 zEmail = mprintf("%s", &zContact[i]);
@@ -196,17 +196,24 @@
196 " FROM tagxref JOIN tag USING(tagid)"
197 " WHERE tagtype=1 AND tagname GLOB 'sym-*'"
198 );
199 while( db_step(&q)==SQLITE_ROW ){
200 const char *zTagname = db_column_text(&q, 0);
 
201 int rid = db_column_int(&q, 1);
202 const char *zSecSince1970 = db_column_text(&q, 2);
 
203 if( rid==0 || !bag_find(&vers, rid) ) continue;
204 zTagname += 4;
205 printf("tag %s\n", zTagname);
 
 
 
 
206 printf("from :%d\n", rid+firstCkin);
207 printf("tagger <tagger> %s +0000\n", zSecSince1970);
208 printf("data 0\n");
 
209 }
210 db_finalize(&q);
211 bag_clear(&vers);
212 }
213
--- src/export.c
+++ src/export.c
@@ -39,11 +39,11 @@
39 db_bind_text(&q, ":user", zUser);
40 if( db_step(&q)!=SQLITE_ROW ){
41 db_reset(&q);
42 for(i=0; zUser[i] && zUser[i]!='>' && zUser[i]!='<'; i++){}
43 if( zUser[i]==0 ){
44 printf(" %s <%s>", zUser, zUser);
45 return;
46 }
47 zName = mprintf("%s", zUser);
48 for(i=j=0; zName[i]; i++){
49 if( zName[i]!='<' && zName[i]!='>' ){
@@ -56,11 +56,11 @@
56 return;
57 }
58 zContact = db_column_text(&q, 0);
59 for(i=0; zContact[i] && zContact[i]!='>' && zContact[i]!='<'; i++){}
60 if( zContact[i]==0 ){
61 printf(" %s <%s>", zContact[0] ? zContact : zUser, zUser);
62 db_reset(&q);
63 return;
64 }
65 if( zContact[i]=='<' ){
66 zEmail = mprintf("%s", &zContact[i]);
@@ -196,17 +196,24 @@
196 " FROM tagxref JOIN tag USING(tagid)"
197 " WHERE tagtype=1 AND tagname GLOB 'sym-*'"
198 );
199 while( db_step(&q)==SQLITE_ROW ){
200 const char *zTagname = db_column_text(&q, 0);
201 char *zEncoded = 0;
202 int rid = db_column_int(&q, 1);
203 const char *zSecSince1970 = db_column_text(&q, 2);
204 int i;
205 if( rid==0 || !bag_find(&vers, rid) ) continue;
206 zTagname += 4;
207 zEncoded = mprintf("%s", zTagname);
208 for(i=0; zEncoded[i]; i++){
209 if( !fossil_isalnum(zEncoded[i]) ) zEncoded[i] = '_';
210 }
211 printf("tag %s\n", zEncoded);
212 printf("from :%d\n", rid+firstCkin);
213 printf("tagger <tagger> %s +0000\n", zSecSince1970);
214 printf("data 0\n");
215 fossil_free(zEncoded);
216 }
217 db_finalize(&q);
218 bag_clear(&vers);
219 }
220

Keyboard Shortcuts

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