Mercurial: tracciamento di diversi repository con stesso versioning

7

Sto usando mercurial sul mio progetto.

Ora affronto il seguente problema: ho due repository mercurial separati con una propria storia. Ora ho bisogno di avere rami / segnalibri identici per entrambi.

Ma questo porta a molti potenziali problemi:

  • qualcuno ha unito il primo repo e ha dimenticato di fare lo stesso per il secondo
  • ha creato un segnalibro e lo ha propagato solo sul secondo repository

Quindi ho pensato che usare i subrepos mercurial avrebbe fatto il trucco e io potevo farlo. Ma ho capito che non è questo il caso.

Un'altra alternativa sarà semplicemente mettere il secondo repository nella stessa cartella con il primo. Ma poi perderò la storia per il secondo repo. E in questo modo è davvero brutto.

C'è un modo per risolvere il mio problema entro mercuriale?

Quindi ora sto davvero pensando di passare a git, perché AFAIK mercurial non può sopportarlo. Per favore dimostra che ho torto

    
posta Igor Konoplyanko 28.06.2016 - 17:54
fonte

1 risposta

1

In Mercurial, un secondo repository correlato si comporta in modo molto simile a un ramo e richiede lo stesso sforzo di gestione. Ad esempio, molti progetti hanno un ramo stabile che deve essere aggiornato alla fine default .

Nel tuo caso, designare uno dei repository come punto di unione e utilizzare una delle directory di lavoro per estrarre e spingere dall'altro repository in modo ordinato.

Per semplificare, puoi creare un alias per il secondo repository in .hg/hgrc della directory di lavoro:

[paths]
default = ssh://[email protected]/apalala/grako
remote = ssh://localhost/backups/grako

Ora puoi usare:

$ hg incoming remote

Per conoscere gli aggiornamenti eseguiti esclusivamente nel repository remoto.

$ hg outgoing remote

Per conoscere le modifiche da esportare.

Per unire:

$ hg pull
$ hg update
$ hg pull remote
$ hg merge
$ hg push
$ hg push remote

Il problema rimane che se gli stessi file nelle stesse diramazioni vengono cambiati contro entrambi i repository, allora è probabile che si verifichi un conflitto di unione. Ma lo stesso accade contro un singolo repository se la ramificazione non viene utilizzata in modo appropriato.

Attualmente, per risolvere il problema sopra riportato, molti team richiedono che ogni serie correlata di commit appartenga a un ramo che può essere rivisto e unito in modo selettivo. Se applichi questa pratica, l'unione nella directory di lavoro selezionata può essere eseguita su base branch-by-branch su due o più repository.

    
risposta data 10.08.2016 - 18:31
fonte

Leggi altre domande sui tag