Domanda

Sto scrivendo un hook pre-commit in cui vorrei applicare alcune regole basate sul contenuto di un file Prima la transazione.Pertanto, all'inizio di una transazione, vorrei svnlook cat il contenuto di qualsiasi file contrassegnato con "U", "UU" o "D" senza le modifiche in sospeso.È sicuro per me prendere l'identificatore di transazione fornito (secondo argomento per il pre-impegno) ed eliminare il trattino e tutti i caratteri che lo seguono e considerarlo la "revisione di base"?Esiste un modo migliore per ottenere queste informazioni?

È stato utile?

Soluzione

La risposta diretta è NO.Il numero di transazione potrebbe essere qualsiasi cosa.Tuttavia, svnlook youngest <repos> restituirà l'ultima revisione che dovrebbe essere quella che stai cercando.

Fai attenzione agli hook pre-commit:

  • Assicurati di non fare qualcosa che richiederà molto tempo.Gli sviluppatori devono attendere il completamento di un hook pre-commit e se impieghi dai 7 ai 10 secondi per elaborare qualcosa, gli sviluppatori diventano molto frustrati.
  • Non puoi (e non dovresti) modificare i dati sottoposti a commit.Se corrisponde a ciò che desideri, consenti il ​​commit.In caso contrario, non consentire il commit.
  • Assicurati di non interrompere quella che potrebbe essere un'attività legittima.Ad esempio, alcuni siti utilizzano hook di pre-commit per impedire a qualcuno di confermare una modifica a meno che non inserisca un ticket nel messaggio di commit e quel messaggio di commit sia un ticket assegnato a quello sviluppatore e quel ticket sia nello stato aperto.Riesci a immaginare l'ilarità che deriva quando uno sviluppatore non può apportare una modifica perché un ticket è assegnato a qualcun altro e l'unica persona che può modificare l'assegnazione è libera per la settimana?

Ci sono momenti in cui è meglio utilizzare un server di integrazione continua per verificare il commit piuttosto che un hook pre-commit o post-commit.Ad esempio, consenti a uno sviluppatore di impegnare un file, ma se lo sviluppatore non è nel gruppo giusto, potresti inviare un'e-mail al responsabile dello sviluppo.

C'è una probabilità del 90% che lo sviluppatore stia probabilmente facendo la cosa giusta.Il responsabile dello sviluppo probabilmente è già a conoscenza del problema.E, se c'è un problema, puoi annullare la modifica.

Altri suggerimenti

La revisione di base è indecisa fino a quando non è commessa la revisione. Se un altro cambiamento non cambia gli stessi nodi, può essere impegnato mentre il commit è in corso. Solo la parte finale del commit è esclusiva.

E aggiungi 1 al più giovane. per esempio:

the_revision=$(svnlook youngest ${REPOS})
((the_revision++))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top