2010-01-05 11 views
17

Esiste un modo semplice per, in caso di commit di un file, inserire automaticamente le informazioni nel file stesso (come autore, commento di commit, data di commit, ecc.)? Vorrei che questa informazione fosse aggiunta ad un blocco nella parte superiore di ogni file impegnato. Essenzialmente l'intera cronologia delle revisioni dovrebbe essere documentata in ogni file di codice ...Subversion: aggiungi dati di revisione al file di codice sul commit

Vedo che esiste un modo per utilizzare le proprietà di sovversione per ottenere qualcosa di simile, ma non vedo come ottenere il commento di commit effettivo nel file e inoltre non vedo come mantenere un log in esecuzione che abbia l'intera cronologia delle revisioni rispetto alle ultime informazioni di commit.

Personalmente non penso che sia una buona idea dato che il file di codice dovrebbe avere solo il codice, ma sfortunatamente questo è un requisito per il mio progetto attuale.

risposta

5

So che non è la risposta che stai cercando, ma proverei a dissuaderli dal farlo.

La cosa migliore sarebbe quella di utilizzare le sostituzioni di parole chiave, ma SVN non fornisce una parola chiave $Log$ per buone ragioni (vedi http://subversion.tigris.org/faq.html#log-in-source), che è la stessa ragione che userei per argomentare contro avere il registro nel codice.

+0

Questi sono file di codice che non dovranno mai essere uniti. Gli altri sviluppatori vogliono vedere il registro delle modifiche nel file mentre ci stanno lavorando. Ho provato a spiegare che riescono a vedere il registro delle modifiche molto facilmente in 2 clic, ma la risposta è stata "Beh, sono 2 clic di troppo!" –

1

mi ci vedo è un modo per utilizzare la sovversione proprietà per realizzare qualcosa di simile , ma non vedo come ottenere l'attuale commettere commento nel file , e anche io non vedo come per mantenere un registro in esecuzione che ha l'intera cronologia delle revisioni anziché solo le ultime informazioni di commit.

Non si desidera il commento di commit nel file. Questo è quello che è svn log, dopo tutto.

+0

So che è una cattiva idea, ma come ho detto nella mia domanda, devo farlo! –

2

Suggerirei invece di utilizzare CVS. Ha questa capacità integrata. CVS ha circa 24 anni. Sembra che i requisiti relativi alla documentazione possano provenire dall'era in cui il controllo della versione non era comune, quindi probabilmente è meglio usare uno strumento creato in quell'epoca.

+1

Chiede informazioni su SVN e gli dici di usare CVS. Boo. – dlchambers

0

Oltre a ciò, come dici tu stesso, essendo un'idea stupida, non riesco a pensare a un modo semplice per farlo usando i metodi di bordo SVN. Dovresti passare attraverso ogni file dopo il pagamento (o l'aggiornamento) per script, identificare un blocco "registro modifiche" all'interno di quel file e aggiornare quel blocco con l'output di svn log. Si può fare ma ci sarà molto lavoro, si dovrà monitorare ogni copia di lavoro per le modifiche ed è molto dispendioso in termini di risorse.

Oltre a ciò, un hook post-commit può essere la cosa migliore con cui lavorare, ma manipolare i file all'interno del repository al di fuori di un contesto di revisione suona orribile, se possibile.

0

Usiamo $Revision: 9584 $ in alcuni dei nostri file di origine e la revisione viene aggiornata ogni volta che la revisione di quel particolare file cambia. Ma sono abbastanza sicuro che intendessi qualcosa di diverso.

+0

Ciao, ho un problema con questo, potresti per favore dare un'occhiata alla mia domanda: https://stackoverflow.com/questions/48767046/netbeans-svn-commit-keywoards-not-upating – Patrick

16

Subversion supporta varie parole chiave come $Id$, $Author$, $Revision$ e così via. Per utilizzare quelli necessari a set the svn:keywords property di conseguenza. Tuttavia, non è possibile inserire il commento di commit come fa $Log$. Vedere lo subversion FAQ per le ragioni su questo, e posso solo essere d'accordo con le ragioni fornite qui.L'inserimento dei commenti di commit nel file viene semplicemente interrotto dalla progettazione e qualsiasi commento di questo tipo è errato nel momento in cui non è possibile verificarlo sul repository.

Anche altri sistemi di controllo versione non supportano questo e la maggior parte di essi con un ragionamento simile (ad esempio, git).

Si prega di non discutere con qualcosa del genere che è un "requisito per il progetto". Se il codice rilasciato deve includere una cronologia delle modifiche, è possibile aggiungere questa cronologia quando si crea la versione con qualche script di supporto piuttosto facilmente. Almeno, la sovversione semplicemente non la supporta. E vorrei fortemente scoraggiare il tentativo di ottenere questo con un hook pre-commit. Gli hook di commit dovrebbero mai modificare i dati che vengono commessi.

+3

Puoi approfondire perché? –

Problemi correlati