„Svn“ iš anksto prisiima kablys, kad išjungtų svn: mergeinfo kitose nei šaknų kataloguose

Norėčiau naudoti privalomąjį įsipareigojimą, kuris neleidžia kūrėjams įdiegti svn: mergeinfo į katalogus, išskyrus root. Tai yra, noriu užtikrinti, kad svn: mergeinfo būtų galima įdiegti tik tokiuose kataloguose kaip „kamieno“ arba „filialo / filialo pavadinimas“. Kartais kūrėjams reikia priminti, kad nerekomenduojama naudoti šakninio katalogo kaip sujungimo tikslo (pagal čia išvardytus pažangius metodus). Ar kas nors turi tokį scenarijų kabliuką arba žino, kur galiu jį rasti? Aš esu „Windows“ aplinkoje, taigi būtų geriau nei partijos ar įgaliojimai, bet viskas būtų naudinga.

18
22 июля '10 в 7:00 2010-07-22 07:00 „Stuart > liepos 22 d., 10 val., 07:00, 2010-07-22 07:00

Visų pirma norėčiau rekomenduoti naudoti perl arba python užduotį, nes >

Norėdami pradėti, galite naudoti scenarijaus pavyzdį iš http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ . Pvz., Patikrinkite, ar scenarijus patikrina failų koduotes, ir įsipareigoja atlikti -access-control.pl.in tikrina, ar autorius turi teises. Jūs tikriausiai naudosite svnlook diff savo scenarijuje (kaip ir pastarasis), kad gautumėte pakeistas katalogų savybes ir pereitumėte atitinkamus kelius, nesvarbu, ar jie yra filialai, ar žymės, kurios naudoja įprastą išraišką.

Atnaujinti

Rasta priverstinio iš anksto įsipareigojimo kablio scenarijų , kurį, atrodo, ieškote.

Ką šis scenarijus daro, jis naudoja svnlook, kad žiūri į operaciją, tai yra pažanga. Kai jis yra perkeltas per sandorius, tai sukelia kablių rinkinį, leidžiantį administratoriaus saugyklai patikrinti, kas vyksta, ir nuspręsti, ar tai priimtina.

Juose yra keletas būdų ir tarp jų yra patvirtintas_property_line_added () , nes jis paragino kiekvieną failo eilutėje pridėtą eilutę.

7
05 авг. atsakymas pateikiamas 05.05 val . 2010-08-05 00:31 '10 - 0:31 2010-08-05 00:31

Jei serveryje galite naudoti CPAN:

https://github.com/gnustavo/SVN-Hooks/blob/master/examples/check-mergeinfo.pl

Jei ne (remiantis http://comments.gmane.org/gmane.comp.version-control.subversion.user/118969 ):

 REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook if !($SVNLOOK log -t "$TXN" "$REPOS" | grep -q '\[override] ';) then # Get list of paths which have changed TXN_PATHS=$($SVNLOOK changed -t "$TXN" "$REPOS") # Filter those which are allowed: /trunk, /branches/*,... TXN_PATHS=$(echo "$TXN_PATHS" | grep -Ev "^....(trunk/|branches/[^/]+/)$") # Iterate over all paths, which are not allowed to have mergeinfo while IFS= read -r TXN_PATH; do ELEM_PATH=$(echo "$TXN_PATH" | cut -c 5-) MERGEINFO=$($SVNLOOK propget "$REPOS" svn:mergeinfo -t "$TXN" "$ELEM_PATH" 2>/dev/null) if [ ! "$MERGEINFO" = "" ]; then echo " Cannot merge into directory that is not trunk or a branch:" > echo " $ELEM_PATH" > echo " Override by using [override]." > exit 1; fi done <<< "$TXN_PATHS" # echo "Merge info check: OK" fi 
0
14 февр. Christopher Oezbek atsakymas 14 vasaris 2016-02-14 23:52 '16 at 11:52 pm 2016-02-14 23:52

Žr. Kitus klausimus apie žymes arba užduoti klausimą