2011-11-15 9 views
5

Noob mercuriale qui. Sto avendo molti problemi a lavorare con mercurial e file come xcuserdata e .ds_store e .git. Sono alla fine del mio spirito.Mercurial e xcuserdata, .ds_store e .git

L'installazione corrente ha un repository centrale che funziona come un intermediario. Spingiamo e tiriamo le modifiche ad esso.

I commit venivano precedentemente inseriti che includevano file indesiderati (xcuserdata, git, ds_store) prima che venisse creato un file .hgignore. Questo ha causato incubi.

Quello che ho cercato:

Ho provato ignorare il problema e lasciando merge gestirlo, ma causa rami sul repo centrale ogni pressione a causa di conflitti (conflitti di spinta sono non essendo mostrati in terminal così don 't avere la possibilità di unire su push) e corrompe il file di progetto al punto che causa l'interruzione di strumenti di unione come filemerge e kdiff3.

Ho provato a creare un file .hgignore locale e ad usare hg forget on xcuserdata per smettere di rintracciare quella roba, ma ancora spinge e tira quei file indesiderati.

quello che voglio che accada:

voglio il repo centrale per rimuovere i file indesiderati. Ogni sviluppatore dovrebbe avere ancora la propria versione locale di quei file. I nuovi commit ignoreranno quei file. Come lo farei?

Grazie

risposta

4

Semplicemente hg forget i file che si desidera rimuovere e la spinta al server. La prossima volta che il resto del team estrarrà dal repository, i file saranno dimenticati anche dalla loro parte.

Attenzione che forget funziona solo per il ramo corrente, se si dispone di altri rami, è necessario farlo su ciascuno di essi.

dimenticare automaticamente tutti i file contenuti nella .hgignore, si può fare

hg forget "set:hgignore()" 

essere certi che ogni parte del vostro team è a conoscenza della vostra decisione su questi file, altrimenti è possibile che si aggiungerà tesi di file di nuovo in futuro. La comunicazione è la chiave qui!

FYI, .hgignore non ha alcun effetto sul file già nel repository, interessa solo il file che non viene aggiunto.

In caso contrario, se si desidera rimuovere completamente il file dalla cronologia, è possibile utilizzare l'estensione MQ, ma questa è un'altra storia ed è molto più complicato e inutile IMHO.

+0

Grazie mille. Quel set: il comando hgignore è un salvagente. T_T ho trovato che il mio file hgignore non sta rimuovendo tutto però. L'ho impostato su \ *. Xcodeproj/xcuserdata/* ma non rimuove tutto da esso. Ci giocherò con questo, immagino. –

+0

Gah, ha provato più modifiche a hgignore senza successo. È riuscito a cancellare alcuni file come .xcuserdatad/WorkspaceSettings.xcsettings, ma non riesco a ottenere il file hgignore per eliminare l'altra roba di xcuser. Dovrei caricare il mio file hgignore sul repository centrale o qualcosa del genere? –