2010-03-02 4 views
48

Sto cercando di convincere Mercurial e spero di essere confuso qui!Perché non posso inviare questa modifica al mio repository mercurial "principale"?

Ho un repository ('main') che ho clonato ('clone'),, entrambi sul mio computer. Entrambi erano completamente sincronizzati l'uno con l'altro.

Ho deciso di giocare con i rami nominati quindi la prossima volta che ho eseguito il commit sul mio 'clone' l'ho fatto con il nome di un ramo di 'case1212' e mentre sembra che abbia gestito correttamente il commit sul mio clone, non posso spingere queste modifiche indietro a 'main'. L'errore è:

abort: push creates new remote branch 'case1212'! 

... e suggerisce che potrei aver bisogno di unire prima? Cosa dovrei fondere su quel repository "clone"? Quando provo a tirare da 'main', non ci sono cambiamenti.

Sono sicuro che in realtà vorrei creare un ramo remoto nel mio repository 'principale' in modo che le persone che si aggiornano da esso possano vedere quel ramo.

risposta

50

Il comportamento predefinito di Mercurial impedisce di creare filiali remote. Se vuoi farlo, devi forzare la spinta.

Sincronizza il menu nella finestra visualizzata, è disponibile un'opzione per forzare.

+0

non è la procedura migliore per unire le modifiche remote localmente e quindi premere? – gcb

+4

@gcb a volte vuoi veramente un nuovo ramo nel repository del server, quindi è disponibile per essere visto e utilizzato da altri. Ma se è solo una testa separata perché non hai fuso le modifiche degli altri a livello locale allora sì, dovresti unirle prima di spingere e quindi non devi forzare a spingere. – Rory

19

Ti avverte che la tua spinta creerebbe nuove teste remote (e in questo caso rami). Se stai bene con quello, e sembra che tu sia, puoi spingere con push -f.

Questo controllo è in là in modo che se si desidera che il ramo case1212 non torni al server principale, è possibile fare hg push -r default e quindi non si vedrà questo avviso e non si invierà mai il caso1212.

Una volta fatto questo per case1212 non si vedrà più l'avviso poiché case1212 sarà già lì.

Le versioni più recenti di mercurial rendono quell'avvertimento un suono leggermente meno spaventoso nel caso in cui la nuova testa sia una nuova diramazione.

25

Tortoise ora ha un'opzione Push new branch che potrebbe essere più sicuro di Force pull or push. Lo strumento della riga di comando ha un flag --new-branch.

Aggiornamento: la nuova interfaccia tortoise lo rende un po 'più difficile da trovare. Passare alla vista Sincronizza, quindi fare clic su Opzioni e selezionare Consenti push di un nuovo ramo.

+9

Lo fa e ne faccio buon uso! Odio avere forza spingere a sinistra in modo permanente, mi sembra un po 'come eseguire linux come root tutto il tempo. –