Io lavoro in una squadra dove abbiamo un codice in un repository Mercurial con diversi subrepositories:Mercurial Subrepositories: prevenire commit ricorsive accidentali e spinge
main/
main/subrepo1/
main/subrepo1/subrepo2/
Il comportamento predefinito di Mercurial è che quando un hg commit
viene eseguita in "main", anche tutte le modifiche in sospeso nei sottoregisti "subrepo1" e "subrepo2" saranno confermate. Allo stesso modo, quando viene premuto "main", vengono inviati anche tutti i commit in uscita in "subrepo1" e "subrepo2".
Troviamo che le persone spesso impegnano inavvertitamente e spingono le modifiche nei loro sottoregosti (perché hanno dimenticato di aver apportato modifiche, e hg status
per impostazione predefinita non mostra modifiche ricorsive). Troviamo anche che tali impegni/spinte globali sono quasi sempre accidentali nella nostra squadra.
Mercurial 1.7 ha recentemente migliorato la situazione con hg status -S
e hg outgoing -S
, che mostrano le modifiche nei sottoregisti; ma ancora, questo richiede che le persone prestino attenzione.
C'è un modo in Mercurial per fare hg commit
e hg push
interrompere se ci sono modifiche/impegna in subrepostories che altrimenti sarebbero commessi/spinto?
La soluzione di Ry4an sembra saggia in molte circostanze, ma l'approccio basato su script della risposta accettata è stato alla fine quello che ho usato; Fin qui tutto bene. – davidg