2011-05-31 14 views
25

Nel mio repository ho aggiunto diversi sotto-repository per i moduli che sto usando. Tratterò sempre questi subrepos come "pull only". Non ho intenzione di apportare modifiche, ma voglio mantenere la possibilità di estrarre facilmente le nuove modifiche se viene rilasciata una nuova versione.Come posso impedire a Mercurial di premere i sottorepos?

Quando spingo il repository principale, Mercurial prova a spingere i repository secondari. C'è qualche impostazione per prevenire questo?

+0

@Mercurial Mercurial non ha qualcosa di simile al file Git .gitignore? – Arlen

+0

Ovviamente lo fa, ma sta parlando di sottorepos e non di file ignorando. Git ha lo stesso contenuto del subrepo, e allo stesso modo non sarebbe risolto con .gitignore. –

+0

Non voglio ignorare i sottorepos, semplicemente non voglio che facciano parte della spinta dal momento che non cambieranno mai. – Soviut

risposta

-1

Dipende dal client commerciale che si utilizza. Uso la tartaruga, e ho trovato che fare clic destro sulla cartella e selezionare i file in tartaruga >> dimenticare è tutto ciò che serve. Seleziona i file e non dovrai più preoccuparti di nuovo.

+1

Stai pensando di ignorare i file, ma il soviut sta chiedendo di non spingere in sottorepos. –

7

Ci sono alcune cose che puoi fare, a seconda del comportamento che stai cercando.

Si sta effettivamente modificando e inserendo all'interno del sottorepo? In tal caso, dovresti creare un repository separato come un ramo del fornitore in cui unisci le modifiche con le modifiche upstream ("loro") e fai in modo che il tuo sottorepo punti a questo. Qualcosa di simile, forse:

repos 
    main 
    subrepo 
    .hgsub # contains: "subrepo=../theirproject" 
    theirproject # clone of remote, upstream repo 

L'idea è che l'entrata subrepo non punta direttamente al repo estraibile solo a monte, ma per uno dei vostri in cui si fondono le modifiche con "loro"

altro l'opzione è di interrompere le modifiche nel sottorepo. Se non ci sono cambiamenti e nessun commit, push passerà il repository giusto. Se si passa a tale modalità di lavoro, è possibile impostare commitsubrepos = false nella sezione [ui] in un file hgrc per evitare di commettere accidentalmente in tale repository.

La linea di fondo è che se stai cambiando le cose lì, allora devi impegnarle (per sicurezza!) E se le impegni vengono poi spinte se il genitore è spinto, quindi controlla dove sono spinti e sei a posto.

+2

Non sto modificando o cambiando il sub-repo in alcun modo. È rigorosamente lì come una libreria per me di riferimento. Voglio che rimangano sotto-reposce in modo da poter caricare gli aggiornamenti, ma non voglio che provino costantemente a spingere quando nulla cambierà mai. – Soviut

+1

Se non è stato modificato nulla nei sottorepos, Mercurial non tenterà di inviarli. O piuttosto non rileverà nessuna modifica e push uscirà immediatamente. Se vai giù in quel repository e "hg in uscita" ti mostra qualsiasi contenuto, allora hai cambiato (e commesso) qualcosa. Puoi aggiornare la tua domanda con l'output specifico che stai vedendo quando fai un 'hg push' nel repository padre? –

+1

Basta premere sul repository padre. Speravo semplicemente di impedire il controllo del sottorepo poiché sembra essere più lento di una normale spinta. – Soviut

Problemi correlati