Fossil SCM
A control artifact which modifies an already existing valid check-in (e.g. moving it to another branch), should fire the (commit) hook for the changed manifest.
Commit
52861df1e93f5c5b1a36d83a2887cd7b08d985ce
Parent
0ffe1b08fa9071c…
1 file changed
+13
-7
+13
-7
| --- src/manifest.c | ||
| +++ src/manifest.c | ||
| @@ -1949,33 +1949,39 @@ | ||
| 1949 | 1949 | if( p->type==CFTYPE_CONTROL ){ |
| 1950 | 1950 | Blob comment; |
| 1951 | 1951 | int i; |
| 1952 | 1952 | const char *zName; |
| 1953 | 1953 | const char *zValue; |
| 1954 | - const char *zUuid; | |
| 1954 | + const char *zTagUuid; | |
| 1955 | 1955 | int branchMove = 0; |
| 1956 | 1956 | blob_zero(&comment); |
| 1957 | 1957 | if( p->zComment ){ |
| 1958 | 1958 | blob_appendf(&comment, " %s.", p->zComment); |
| 1959 | 1959 | } |
| 1960 | 1960 | /* Next loop expects tags to be sorted on UUID, so sort it. */ |
| 1961 | 1961 | qsort(p->aTag, p->nTag, sizeof(p->aTag[0]), tag_compare); |
| 1962 | 1962 | for(i=0; i<p->nTag; i++){ |
| 1963 | - zUuid = p->aTag[i].zUuid; | |
| 1964 | - if( !zUuid ) continue; | |
| 1965 | - if( i==0 || fossil_strcmp(zUuid, p->aTag[i-1].zUuid)!=0 ){ | |
| 1963 | + zTagUuid = p->aTag[i].zUuid; | |
| 1964 | + if( !zTagUuid ) continue; | |
| 1965 | + if( i==0 || fossil_strcmp(zTagUuid, p->aTag[i-1].zUuid)!=0 ){ | |
| 1966 | 1966 | blob_appendf(&comment, |
| 1967 | 1967 | " Edit [%S]:", |
| 1968 | - zUuid); | |
| 1968 | + zTagUuid); | |
| 1969 | 1969 | branchMove = 0; |
| 1970 | + if( db_exists("SELECT event.type FROM event, blob" | |
| 1971 | + " WHERE event.type='ci' AND event.objid=blob.rid" | |
| 1972 | + " AND blob.uuid='%s'", zTagUuid) ){ | |
| 1973 | + zScript = xfer_commit_code(); | |
| 1974 | + zUuid = zTagUuid; | |
| 1975 | + } | |
| 1970 | 1976 | } |
| 1971 | 1977 | zName = p->aTag[i].zName; |
| 1972 | 1978 | zValue = p->aTag[i].zValue; |
| 1973 | 1979 | if( strcmp(zName, "*branch")==0 ){ |
| 1974 | 1980 | blob_appendf(&comment, |
| 1975 | 1981 | " Move to branch [/timeline?r=%h&nd&dp=%S | %h].", |
| 1976 | - zValue, zUuid, zValue); | |
| 1982 | + zValue, zTagUuid, zValue); | |
| 1977 | 1983 | branchMove = 1; |
| 1978 | 1984 | continue; |
| 1979 | 1985 | }else if( strcmp(zName, "*bgcolor")==0 ){ |
| 1980 | 1986 | blob_appendf(&comment, |
| 1981 | 1987 | " Change branch background color to \"%h\".", zValue); |
| @@ -2036,11 +2042,11 @@ | ||
| 2036 | 2042 | p->rDate, rid, p->zUser, blob_str(&comment)+1 |
| 2037 | 2043 | ); |
| 2038 | 2044 | blob_reset(&comment); |
| 2039 | 2045 | } |
| 2040 | 2046 | db_end_transaction(0); |
| 2041 | - if( flags & MC_PERMIT_HOOKS ){ | |
| 2047 | + if( zScript && (flags & MC_PERMIT_HOOKS) ){ | |
| 2042 | 2048 | result = xfer_run_common_script(); |
| 2043 | 2049 | if( result==TH_OK ){ |
| 2044 | 2050 | result = xfer_run_script(zScript, zUuid); |
| 2045 | 2051 | } |
| 2046 | 2052 | } |
| 2047 | 2053 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -1949,33 +1949,39 @@ | |
| 1949 | if( p->type==CFTYPE_CONTROL ){ |
| 1950 | Blob comment; |
| 1951 | int i; |
| 1952 | const char *zName; |
| 1953 | const char *zValue; |
| 1954 | const char *zUuid; |
| 1955 | int branchMove = 0; |
| 1956 | blob_zero(&comment); |
| 1957 | if( p->zComment ){ |
| 1958 | blob_appendf(&comment, " %s.", p->zComment); |
| 1959 | } |
| 1960 | /* Next loop expects tags to be sorted on UUID, so sort it. */ |
| 1961 | qsort(p->aTag, p->nTag, sizeof(p->aTag[0]), tag_compare); |
| 1962 | for(i=0; i<p->nTag; i++){ |
| 1963 | zUuid = p->aTag[i].zUuid; |
| 1964 | if( !zUuid ) continue; |
| 1965 | if( i==0 || fossil_strcmp(zUuid, p->aTag[i-1].zUuid)!=0 ){ |
| 1966 | blob_appendf(&comment, |
| 1967 | " Edit [%S]:", |
| 1968 | zUuid); |
| 1969 | branchMove = 0; |
| 1970 | } |
| 1971 | zName = p->aTag[i].zName; |
| 1972 | zValue = p->aTag[i].zValue; |
| 1973 | if( strcmp(zName, "*branch")==0 ){ |
| 1974 | blob_appendf(&comment, |
| 1975 | " Move to branch [/timeline?r=%h&nd&dp=%S | %h].", |
| 1976 | zValue, zUuid, zValue); |
| 1977 | branchMove = 1; |
| 1978 | continue; |
| 1979 | }else if( strcmp(zName, "*bgcolor")==0 ){ |
| 1980 | blob_appendf(&comment, |
| 1981 | " Change branch background color to \"%h\".", zValue); |
| @@ -2036,11 +2042,11 @@ | |
| 2036 | p->rDate, rid, p->zUser, blob_str(&comment)+1 |
| 2037 | ); |
| 2038 | blob_reset(&comment); |
| 2039 | } |
| 2040 | db_end_transaction(0); |
| 2041 | if( flags & MC_PERMIT_HOOKS ){ |
| 2042 | result = xfer_run_common_script(); |
| 2043 | if( result==TH_OK ){ |
| 2044 | result = xfer_run_script(zScript, zUuid); |
| 2045 | } |
| 2046 | } |
| 2047 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -1949,33 +1949,39 @@ | |
| 1949 | if( p->type==CFTYPE_CONTROL ){ |
| 1950 | Blob comment; |
| 1951 | int i; |
| 1952 | const char *zName; |
| 1953 | const char *zValue; |
| 1954 | const char *zTagUuid; |
| 1955 | int branchMove = 0; |
| 1956 | blob_zero(&comment); |
| 1957 | if( p->zComment ){ |
| 1958 | blob_appendf(&comment, " %s.", p->zComment); |
| 1959 | } |
| 1960 | /* Next loop expects tags to be sorted on UUID, so sort it. */ |
| 1961 | qsort(p->aTag, p->nTag, sizeof(p->aTag[0]), tag_compare); |
| 1962 | for(i=0; i<p->nTag; i++){ |
| 1963 | zTagUuid = p->aTag[i].zUuid; |
| 1964 | if( !zTagUuid ) continue; |
| 1965 | if( i==0 || fossil_strcmp(zTagUuid, p->aTag[i-1].zUuid)!=0 ){ |
| 1966 | blob_appendf(&comment, |
| 1967 | " Edit [%S]:", |
| 1968 | zTagUuid); |
| 1969 | branchMove = 0; |
| 1970 | if( db_exists("SELECT event.type FROM event, blob" |
| 1971 | " WHERE event.type='ci' AND event.objid=blob.rid" |
| 1972 | " AND blob.uuid='%s'", zTagUuid) ){ |
| 1973 | zScript = xfer_commit_code(); |
| 1974 | zUuid = zTagUuid; |
| 1975 | } |
| 1976 | } |
| 1977 | zName = p->aTag[i].zName; |
| 1978 | zValue = p->aTag[i].zValue; |
| 1979 | if( strcmp(zName, "*branch")==0 ){ |
| 1980 | blob_appendf(&comment, |
| 1981 | " Move to branch [/timeline?r=%h&nd&dp=%S | %h].", |
| 1982 | zValue, zTagUuid, zValue); |
| 1983 | branchMove = 1; |
| 1984 | continue; |
| 1985 | }else if( strcmp(zName, "*bgcolor")==0 ){ |
| 1986 | blob_appendf(&comment, |
| 1987 | " Change branch background color to \"%h\".", zValue); |
| @@ -2036,11 +2042,11 @@ | |
| 2042 | p->rDate, rid, p->zUser, blob_str(&comment)+1 |
| 2043 | ); |
| 2044 | blob_reset(&comment); |
| 2045 | } |
| 2046 | db_end_transaction(0); |
| 2047 | if( zScript && (flags & MC_PERMIT_HOOKS) ){ |
| 2048 | result = xfer_run_common_script(); |
| 2049 | if( result==TH_OK ){ |
| 2050 | result = xfer_run_script(zScript, zUuid); |
| 2051 | } |
| 2052 | } |
| 2053 |