Domanda

Ho creato un file chiamato version.ini che è sotto controllo versione (/trunk/version.ini) ora volevo fare un hook di commit post per aggiornare quel file con l'ultima versione. Ma non so quale comando possa farlo. So di avere questi parametri:

#!/bin/sh

REPOS = "$1"
REV = "$2" 

Ma come posso sostituire il contenuto di quel file senza fare una nuova revisione? e hai ancora questi cambiamenti nel mio repository?

UPDATE: Dal momento che forse non sono stato chiaro cercherò una spiegazione più dettagliata: Diciamo che ho questo repository: / svn / repos / project / trunk / e in esso ho un file chiamato version.ini che è sotto controllo di versione. Quello che voglio fare è che su ogni commit aggiorni quel file alla nuova revisione. Diciamo che l'attuale revisione è 263, voglio che quel file contenga 263 scritti. E per rispondere a una risposta qui sotto non puoi usare le parole chiave poiché funzionano solo se aggiorno quel file e non voglio farlo.

Spero di avere un senso, e grazie per l'aiuto dato. Acclamazioni

È stato utile?

Soluzione

Quello che vuoi davvero non è un modo per modificare i tuoi commit, ma qualcosa come svn: parole chiave . Sfortunatamente, come puoi leggere nel riquadro "Dov'è $ GlobalRev $?" questo non fa davvero quello che vuoi. Dovrai invece scrivere uno script per chiamare e analizzare l'output di svnversion e in qualche modo inserisce il risultato nei tuoi file come parte della build.

Ora, per rispondere alla tua domanda letterale è ancora divertente pensare a cosa puoi e cosa non puoi fare negli script svn hook:

Non puoi modificare un commit da un hook post-commit

Quando viene eseguito l'hook post-commit, il commit è già stato finalizzato (come suggerisce il nome), quindi la modifica dei file è fuori discussione. A questo punto puoi solo controllare le modifiche.

Non è possibile modificare i commit in sospeso da un hook pre-commit né

Puoi esaminare il contenuto di una transazione in sospeso da un hook pre-commit utilizzando svnlook con l'opzione --transaction, ma non puoi cambiarlo.

Se è possibile apportare modifiche arbitrarie in un hook pre-commit, ovviamente il server dovrebbe riportare queste modifiche al client svn. Altrimenti il ??cliente penserebbe che i suoi file siano in fase di revisione, mentre in realtà sono diversi. Se il client svn accettasse tali modifiche segnalate, ciò porterebbe alla possibilità che il tuo lavoro venga cancellato da un commit . Sarebbe una caratteristica sorprendente avere per un sistema di controllo di versione, per dirla in parole povere. Inutile dire che la sovversione non lo consente.

Altri suggerimenti

Non è possibile cambiare nulla nel repository senza modificare il numero di revisione.

La soluzione è inserire parole chiave speciali (cercare < code> svn: parole chiave ) nel file e far sostituire SVN durante il checkout. Sembrerà che questi valori provengano dal repository ma la rappresentazione del file nel repository non cambierà.

Probabilmente stai cercando $ LastChangedRevision $ (o $ Rev $ in breve).

Un'altra soluzione è aggiungere una regola al tuo strumento di compilazione / Makefile / qualunque cosa utilizzi svn info nella directory principale del tuo progetto per determinare la revisione corrente e inserirla in un file temporaneo (che è non aggiunto al tuo repository).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top