Perché l'addremove non è raccomandato di default in Mercurial?

0

Questa è forse una questione di strategia più che altro. Sono nuovo al controllo della versione e credo che dovrei ritenermi fortunato ad avere sistemi relativamente più maturi come Mercurial e Git a mia disposizione rispetto ai sistemi precedenti.

Ho iniziato con Hg perché ho letto da qualche parte che è più Python come nel suo approccio. Le poche esercitazioni che ho seguito (esempi e video) usano costantemente il comando hg add * . Dopo aver usato quel comando per un po 'di tempo nel mio progetto, ho una lunga lista di file che hanno ! davanti ai file che sono stati cancellati. Sto parlando dell'output del comando hg st , naturalmente.

Suppongo che l'utilizzo di hg addremove * risolverà il mio problema. Se questo è il caso, perché non è il comando predefinito per insegnare Hg a un principiante? C'è un trabocchetto che mi manca? Non sarebbe ragionevole presumere che in genere una persona che lavora su una cartella vorrebbe che i file cancellati scompaiano visibilmente dall'output di hg st (specialmente perché sono memorizzati nel repository di Hg comunque)?

    
posta Shashank Sawant 05.03.2015 - 10:29
fonte

1 risposta

4

hg add * è una terribile idea. Le esercitazioni che hai letto / guardato probabilmente non erano molto buone. La maggior parte dei repository contiene molti file che non vuoi mettere sotto controllo di versione: artefatti generati, spazzatura da esperimenti che hai fatto e file che dovrebbero essere parte del repository ma solo più tardi (cioè, non sono pronto per essere commesso). Non vuoi controllarne la versione. A meno che non siano temporanei, devono essere elencati in .hgignore in modo che non inquinino l'output di hg status con ? s e non vengano aggiunti accidentalmente. hg add e hg addremove considerano già tutti i file, tranne quelli ignorati e hg add * e hg addremove * sovrascrivono questo predefinito corretto. Quindi non è solo ridondante, ma rompe anche una funzionalità molto utile.

Dovresti solo aggiungere i file che hanno senso di avere sotto controllo della versione. Quindi i file "improvvisamente scomparendo" non sono un problema, perché gli unici file di brani Mercurial sono quelli importanti, che raramente rimuovi, e in tal caso, solo manualmente dopo un'attenta considerazione. In tal caso, usa hg rm file1 file2 per rimuovere quei file dal file system e da mercurial - non c'è bisogno di addremove .

hg addremove è una utile scorciatoia se hai rovinato e apportato modifiche significative al layout del progetto tramite uno strumento diverso da Mercurial, specialmente perché gestisce correttamente copie / rinomina. Nota che puoi limitarlo ad alcuni file dando, ad esempio, hg addremove src/ . Ma non dovrebbe mai ignorare il buon giudizio su ciò che appartiene al controllo del codice sorgente e cosa no. Se hai accidentalmente aggiunto un file che non dovrebbe essere sottoposto al controllo del codice sorgente, utilizza hg forget the-file prima di eseguire il commit.

    
risposta data 05.03.2015 - 10:52
fonte

Leggi altre domande sui tag