Com'è pessima idea modificare un file in un hook pre o post-commit?

4

Il mio team sta utilizzando SVN per archiviare molto più del semplice codice sorgente - stiamo memorizzando tutti i tipi di file. Un processo che sto lavorando alla progettazione viene utilizzato per generare report diff ogni volta che un certo foglio di calcolo Excel viene aggiornato e riconosciuto da un sottoinsieme del team. (Questo foglio di calcolo è generato automaticamente da un processo separato, nessun essere umano lo tocca mai.)

Ecco il mio flusso di lavoro:

  1. Foglio di calcolo Excel generato (chiamalo raw.xlsx ). Scarico il file e impegno su SVN.
  2. Un hook pre-commit genera un nuovo foglio di calcolo di Excel (chiamalo to_review.xlsx ) e impegna quello . Una email viene inviata al mio team dicendo che è stato rilevato un diff tra raw.xlsx:HEAD e raw.xlsx:PREV .
  3. Qualcuno nel mio team rivede to_review.xlsx , modifica secondo necessità e lo impegna.
  4. Un hook pre o post-commit quindi modifica to_review.xlsx per aggiornare una scheda in modo che rifletta le modifiche e impegna che . (Facoltativamente: spara un email dicendo che devi aggiornare la tua copia di lavoro di to_review.xlsx .) Genera anche un file report.pdf che riepiloga il diff di raw.xlsx:HEAD e raw.xlsx:PREV .

Come va bene o no, va bene usare SVN in questo modo - cioè, per modificare il file che è stato appena commesso da un utente umano e re-commitarlo? La modifica non sarà mai contro ciò che l'umano ha aggiunto / rimosso, ma facendo ciò l'umano ha immediatamente una copia scaduta non appena si impegna. Non so in che altro modo avvicinarmi a questo - non possiamo andare direttamente da raw.xlsx a report.pdf , un essere umano deve essere nel ciclo con to_review.xlsx .

    
posta Dang Khoa 22.08.2016 - 17:37
fonte

1 risposta

1

La domanda riguarda maggiormente il tuo processo di revisione ragionevole e automatizzato.

Gli hook di commit vengono utilizzati per apportare modifiche ben definite ai file. Gli esempi potrebbero essere terminazioni di riga e inserimento di testo boilerplate aggiornato. Non sono sicuro che i tag RCS siano espansi nel file salvato SVN, ma dipende dal sistema di controllo della versione. I ganci possono anche essere usati per rifiutare le modifiche non valide.

L'uso di commit hook come descritto non sembra rientrare in quella categoria. Gli hook ritardano il commit e attivano le modifiche in altri file. Sembra anche esserci un difetto se due persone inviano modifiche a raw.xlsx.

C'è qualche ragione per cui non puoi usare i ganci post-commit per attivare il tuo processo senza modificare direttamente il file interessato?

Quindi, si invia raw.xlsx. Viene salvato e quindi causa il processo to_review.xlsx.

Supponendo che tu possa rifiutare una recensione, il gancio per quel potrebbe sovrascrivere raw.xlsx con la versione precedente. Dalla descrizione del processo non è chiaro a quali scopi verrà utilizzato l'archivio delle versioni raw.xlsx.

    
risposta data 31.08.2016 - 23:01
fonte

Leggi altre domande sui tag