Fossil SCM

Merged vdiff-subdir feature branch into root.

stephan 2014-01-25 16:20 trunk merge
Commit 9b1932f00e45c2ce48495b1b7ae18a0e9be56cef
1 file changed +42 -20
+42 -20
--- src/info.c
+++ src/info.c
@@ -922,10 +922,11 @@
922922
** from=TAG
923923
** to=TAG
924924
** branch=TAG
925925
** v=BOOLEAN
926926
** sbs=BOOLEAN
927
+** glob=STRING only diff files matching this glob
927928
**
928929
**
929930
** Show all differences between two checkins.
930931
*/
931932
void vdiff_page(void){
@@ -938,16 +939,15 @@
938939
const char *zBranch;
939940
const char *zFrom;
940941
const char *zTo;
941942
const char *zRe;
942943
const char *zVerbose;
944
+ const char *zGlob;
943945
ReCompiled *pRe = 0;
944
-
945946
login_check_credentials();
946947
if( !g.perm.Read ){ login_needed(); return; }
947948
login_anonymous_available();
948
-
949949
zRe = P("regex");
950950
if( zRe ) re_compile(&pRe, zRe, 0);
951951
zBranch = P("branch");
952952
if( zBranch && zBranch[0] ){
953953
cgi_replace_parameter("from", mprintf("root:%s", zBranch));
@@ -965,30 +965,43 @@
965965
if( !zVerbose ){
966966
zVerbose = P("detail"); /* deprecated */
967967
}
968968
verboseFlag = (zVerbose!=0) && !is_false(zVerbose);
969969
if( !verboseFlag && sideBySide ) verboseFlag = 1;
970
+ zGlob = P("glob");
970971
zFrom = P("from");
971972
zTo = P("to");
973
+ if(zGlob && !*zGlob){
974
+ zGlob = NULL;
975
+ }
972976
if( sideBySide || verboseFlag ){
973977
style_submenu_element("Hide Diff", "hidediff",
974
- "%R/vdiff?from=%T&to=%T&sbs=0",
975
- zFrom, zTo);
978
+ "%R/vdiff?from=%T&to=%T&sbs=0%s%T",
979
+ zFrom, zTo,
980
+ zGlob ? "&glob=" : "", zGlob ? zGlob : "");
976981
}
977982
if( !sideBySide ){
978983
style_submenu_element("Side-by-side Diff", "sbsdiff",
979
- "%R/vdiff?from=%T&to=%T&sbs=1",
980
- zFrom, zTo);
984
+ "%R/vdiff?from=%T&to=%T&sbs=1%s%T",
985
+ zFrom, zTo,
986
+ zGlob ? "&glob=" : "", zGlob ? zGlob : "");
981987
}
982988
if( sideBySide || !verboseFlag ) {
983989
style_submenu_element("Unified Diff", "udiff",
984
- "%R/vdiff?from=%T&to=%T&sbs=0&v",
985
- zFrom, zTo);
990
+ "%R/vdiff?from=%T&to=%T&sbs=0&v%s%T",
991
+ zFrom, zTo,
992
+ zGlob ? "&glob=" : "", zGlob ? zGlob : "");
986993
}
987994
style_submenu_element("Invert", "invert",
988
- "%R/vdiff?from=%T&to=%T&sbs=%d%s", zTo, zFrom,
989
- sideBySide, (verboseFlag && !sideBySide)?"&v":"");
995
+ "%R/vdiff?from=%T&to=%T&sbs=%d%s%s%T", zTo, zFrom,
996
+ sideBySide, (verboseFlag && !sideBySide)?"&v":"",
997
+ zGlob ? "&glob=" : "", zGlob ? zGlob : "");
998
+ if( zGlob ){
999
+ style_submenu_element("Clear glob", "clearglob",
1000
+ "%R/vdiff?from=%T&to=%T&sbs=%d%s", zFrom, zTo,
1001
+ sideBySide, (verboseFlag && !sideBySide)?"&v":"");
1002
+ }
9901003
style_header("Check-in Differences");
9911004
@ <h2>Difference From:</h2><blockquote>
9921005
checkin_description(ridFrom);
9931006
@ </blockquote><h2>To:</h2><blockquote>
9941007
checkin_description(ridTo);
@@ -995,10 +1008,13 @@
9951008
@ </blockquote>
9961009
if( pRe ){
9971010
@ <p><b>Only differences that match regular expression "%h(zRe)"
9981011
@ are shown.</b></p>
9991012
}
1013
+ if( zGlob ){
1014
+ @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p>
1015
+ }
10001016
@<hr /><p>
10011017
10021018
manifest_file_rewind(pFrom);
10031019
pFileFrom = manifest_file_next(pFrom, 0);
10041020
manifest_file_rewind(pTo);
@@ -1012,27 +1028,33 @@
10121028
cmp = -1;
10131029
}else{
10141030
cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
10151031
}
10161032
if( cmp<0 ){
1017
- append_file_change_line(pFileFrom->zName,
1018
- pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
1033
+ if(!zGlob || strglob(zGlob, pFileFrom->zName)){
1034
+ append_file_change_line(pFileFrom->zName,
1035
+ pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
1036
+ }
10191037
pFileFrom = manifest_file_next(pFrom, 0);
10201038
}else if( cmp>0 ){
1021
- append_file_change_line(pFileTo->zName,
1022
- 0, pFileTo->zUuid, 0, diffFlags, pRe,
1023
- manifest_file_mperm(pFileTo));
1039
+ if(!zGlob || strglob(zGlob, pFileTo->zName)){
1040
+ append_file_change_line(pFileTo->zName,
1041
+ 0, pFileTo->zUuid, 0, diffFlags, pRe,
1042
+ manifest_file_mperm(pFileTo));
1043
+ }
10241044
pFileTo = manifest_file_next(pTo, 0);
10251045
}else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
1026
- /* No changes */
10271046
pFileFrom = manifest_file_next(pFrom, 0);
10281047
pFileTo = manifest_file_next(pTo, 0);
10291048
}else{
1030
- append_file_change_line(pFileFrom->zName,
1031
- pFileFrom->zUuid,
1032
- pFileTo->zUuid, 0, diffFlags, pRe,
1033
- manifest_file_mperm(pFileTo));
1049
+ if(!zGlob || (strglob(zGlob, pFileFrom->zName)
1050
+ || strglob(zGlob, pFileTo->zName))){
1051
+ append_file_change_line(pFileFrom->zName,
1052
+ pFileFrom->zUuid,
1053
+ pFileTo->zUuid, 0, diffFlags, pRe,
1054
+ manifest_file_mperm(pFileTo));
1055
+ }
10341056
pFileFrom = manifest_file_next(pFrom, 0);
10351057
pFileTo = manifest_file_next(pTo, 0);
10361058
}
10371059
}
10381060
manifest_destroy(pFrom);
10391061
--- src/info.c
+++ src/info.c
@@ -922,10 +922,11 @@
922 ** from=TAG
923 ** to=TAG
924 ** branch=TAG
925 ** v=BOOLEAN
926 ** sbs=BOOLEAN
 
927 **
928 **
929 ** Show all differences between two checkins.
930 */
931 void vdiff_page(void){
@@ -938,16 +939,15 @@
938 const char *zBranch;
939 const char *zFrom;
940 const char *zTo;
941 const char *zRe;
942 const char *zVerbose;
 
943 ReCompiled *pRe = 0;
944
945 login_check_credentials();
946 if( !g.perm.Read ){ login_needed(); return; }
947 login_anonymous_available();
948
949 zRe = P("regex");
950 if( zRe ) re_compile(&pRe, zRe, 0);
951 zBranch = P("branch");
952 if( zBranch && zBranch[0] ){
953 cgi_replace_parameter("from", mprintf("root:%s", zBranch));
@@ -965,30 +965,43 @@
965 if( !zVerbose ){
966 zVerbose = P("detail"); /* deprecated */
967 }
968 verboseFlag = (zVerbose!=0) && !is_false(zVerbose);
969 if( !verboseFlag && sideBySide ) verboseFlag = 1;
 
970 zFrom = P("from");
971 zTo = P("to");
 
 
 
972 if( sideBySide || verboseFlag ){
973 style_submenu_element("Hide Diff", "hidediff",
974 "%R/vdiff?from=%T&to=%T&sbs=0",
975 zFrom, zTo);
 
976 }
977 if( !sideBySide ){
978 style_submenu_element("Side-by-side Diff", "sbsdiff",
979 "%R/vdiff?from=%T&to=%T&sbs=1",
980 zFrom, zTo);
 
981 }
982 if( sideBySide || !verboseFlag ) {
983 style_submenu_element("Unified Diff", "udiff",
984 "%R/vdiff?from=%T&to=%T&sbs=0&v",
985 zFrom, zTo);
 
986 }
987 style_submenu_element("Invert", "invert",
988 "%R/vdiff?from=%T&to=%T&sbs=%d%s", zTo, zFrom,
989 sideBySide, (verboseFlag && !sideBySide)?"&v":"");
 
 
 
 
 
 
990 style_header("Check-in Differences");
991 @ <h2>Difference From:</h2><blockquote>
992 checkin_description(ridFrom);
993 @ </blockquote><h2>To:</h2><blockquote>
994 checkin_description(ridTo);
@@ -995,10 +1008,13 @@
995 @ </blockquote>
996 if( pRe ){
997 @ <p><b>Only differences that match regular expression "%h(zRe)"
998 @ are shown.</b></p>
999 }
 
 
 
1000 @<hr /><p>
1001
1002 manifest_file_rewind(pFrom);
1003 pFileFrom = manifest_file_next(pFrom, 0);
1004 manifest_file_rewind(pTo);
@@ -1012,27 +1028,33 @@
1012 cmp = -1;
1013 }else{
1014 cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
1015 }
1016 if( cmp<0 ){
1017 append_file_change_line(pFileFrom->zName,
1018 pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
 
 
1019 pFileFrom = manifest_file_next(pFrom, 0);
1020 }else if( cmp>0 ){
1021 append_file_change_line(pFileTo->zName,
1022 0, pFileTo->zUuid, 0, diffFlags, pRe,
1023 manifest_file_mperm(pFileTo));
 
 
1024 pFileTo = manifest_file_next(pTo, 0);
1025 }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
1026 /* No changes */
1027 pFileFrom = manifest_file_next(pFrom, 0);
1028 pFileTo = manifest_file_next(pTo, 0);
1029 }else{
1030 append_file_change_line(pFileFrom->zName,
1031 pFileFrom->zUuid,
1032 pFileTo->zUuid, 0, diffFlags, pRe,
1033 manifest_file_mperm(pFileTo));
 
 
 
1034 pFileFrom = manifest_file_next(pFrom, 0);
1035 pFileTo = manifest_file_next(pTo, 0);
1036 }
1037 }
1038 manifest_destroy(pFrom);
1039
--- src/info.c
+++ src/info.c
@@ -922,10 +922,11 @@
922 ** from=TAG
923 ** to=TAG
924 ** branch=TAG
925 ** v=BOOLEAN
926 ** sbs=BOOLEAN
927 ** glob=STRING only diff files matching this glob
928 **
929 **
930 ** Show all differences between two checkins.
931 */
932 void vdiff_page(void){
@@ -938,16 +939,15 @@
939 const char *zBranch;
940 const char *zFrom;
941 const char *zTo;
942 const char *zRe;
943 const char *zVerbose;
944 const char *zGlob;
945 ReCompiled *pRe = 0;
 
946 login_check_credentials();
947 if( !g.perm.Read ){ login_needed(); return; }
948 login_anonymous_available();
 
949 zRe = P("regex");
950 if( zRe ) re_compile(&pRe, zRe, 0);
951 zBranch = P("branch");
952 if( zBranch && zBranch[0] ){
953 cgi_replace_parameter("from", mprintf("root:%s", zBranch));
@@ -965,30 +965,43 @@
965 if( !zVerbose ){
966 zVerbose = P("detail"); /* deprecated */
967 }
968 verboseFlag = (zVerbose!=0) && !is_false(zVerbose);
969 if( !verboseFlag && sideBySide ) verboseFlag = 1;
970 zGlob = P("glob");
971 zFrom = P("from");
972 zTo = P("to");
973 if(zGlob && !*zGlob){
974 zGlob = NULL;
975 }
976 if( sideBySide || verboseFlag ){
977 style_submenu_element("Hide Diff", "hidediff",
978 "%R/vdiff?from=%T&to=%T&sbs=0%s%T",
979 zFrom, zTo,
980 zGlob ? "&glob=" : "", zGlob ? zGlob : "");
981 }
982 if( !sideBySide ){
983 style_submenu_element("Side-by-side Diff", "sbsdiff",
984 "%R/vdiff?from=%T&to=%T&sbs=1%s%T",
985 zFrom, zTo,
986 zGlob ? "&glob=" : "", zGlob ? zGlob : "");
987 }
988 if( sideBySide || !verboseFlag ) {
989 style_submenu_element("Unified Diff", "udiff",
990 "%R/vdiff?from=%T&to=%T&sbs=0&v%s%T",
991 zFrom, zTo,
992 zGlob ? "&glob=" : "", zGlob ? zGlob : "");
993 }
994 style_submenu_element("Invert", "invert",
995 "%R/vdiff?from=%T&to=%T&sbs=%d%s%s%T", zTo, zFrom,
996 sideBySide, (verboseFlag && !sideBySide)?"&v":"",
997 zGlob ? "&glob=" : "", zGlob ? zGlob : "");
998 if( zGlob ){
999 style_submenu_element("Clear glob", "clearglob",
1000 "%R/vdiff?from=%T&to=%T&sbs=%d%s", zFrom, zTo,
1001 sideBySide, (verboseFlag && !sideBySide)?"&v":"");
1002 }
1003 style_header("Check-in Differences");
1004 @ <h2>Difference From:</h2><blockquote>
1005 checkin_description(ridFrom);
1006 @ </blockquote><h2>To:</h2><blockquote>
1007 checkin_description(ridTo);
@@ -995,10 +1008,13 @@
1008 @ </blockquote>
1009 if( pRe ){
1010 @ <p><b>Only differences that match regular expression "%h(zRe)"
1011 @ are shown.</b></p>
1012 }
1013 if( zGlob ){
1014 @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p>
1015 }
1016 @<hr /><p>
1017
1018 manifest_file_rewind(pFrom);
1019 pFileFrom = manifest_file_next(pFrom, 0);
1020 manifest_file_rewind(pTo);
@@ -1012,27 +1028,33 @@
1028 cmp = -1;
1029 }else{
1030 cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
1031 }
1032 if( cmp<0 ){
1033 if(!zGlob || strglob(zGlob, pFileFrom->zName)){
1034 append_file_change_line(pFileFrom->zName,
1035 pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
1036 }
1037 pFileFrom = manifest_file_next(pFrom, 0);
1038 }else if( cmp>0 ){
1039 if(!zGlob || strglob(zGlob, pFileTo->zName)){
1040 append_file_change_line(pFileTo->zName,
1041 0, pFileTo->zUuid, 0, diffFlags, pRe,
1042 manifest_file_mperm(pFileTo));
1043 }
1044 pFileTo = manifest_file_next(pTo, 0);
1045 }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
 
1046 pFileFrom = manifest_file_next(pFrom, 0);
1047 pFileTo = manifest_file_next(pTo, 0);
1048 }else{
1049 if(!zGlob || (strglob(zGlob, pFileFrom->zName)
1050 || strglob(zGlob, pFileTo->zName))){
1051 append_file_change_line(pFileFrom->zName,
1052 pFileFrom->zUuid,
1053 pFileTo->zUuid, 0, diffFlags, pRe,
1054 manifest_file_mperm(pFileTo));
1055 }
1056 pFileFrom = manifest_file_next(pFrom, 0);
1057 pFileTo = manifest_file_next(pTo, 0);
1058 }
1059 }
1060 manifest_destroy(pFrom);
1061

Keyboard Shortcuts

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