Domanda

Domande riassunte:

Qual è il modo più semplice (e migliore) per spostare un gruppo di file da un repository esistente a un nuovo repository secondario, in modo che tali file possano essere integrati con altri repository genitorie, alcuni dei quali potrebbero non esistere?

I file nelle subrepositori devono essere in cartelle discrete o possono esistere insieme ad altri file?

Domande dettagliate:

Ho iniziato il processo di creazione di più repository che rappresentano diversi progetti che hanno componenti condivisi, e questo sta andando bene, grazie a SO e alcune risposte utili alla mia domanda qui

Mentre vado ad aggiungere un secondo progetto, noto che ci sono alcuni file nei miei progetti duplicati e sono essenzialmente la stessa cosa, con una somiglianza sufficiente da giustificare che li porta fuori da un repository principale e creazione di un nuovo subrepository in modo che siano può essere

  1. utilizzato da qualsiasi nuovo progetto che inizio e
  2. rimosso da altri repository esistenti, poiché sono identici.

Suppongo che il modo migliore sia semplicemente creare un nuovo repository, spostare i file sul file system locale, spingere entrambi i repository e quindi creare un file .hgsub e proced la mia domanda precedente. Ciò ovviamente sposterebbe quindi i file interessati a una sottocartella nel file system locale in ogni progetto principale, con cui posso vivere, ma solleva la domanda ipotetica - è possibile avere un elenco di file in un repository che sono effettivamente Parte di un repository secondario ma risiede accanto ad altri file (cioè non in una cartella secondaria).

Se volessi (ad esempio) avere un file "acme.h" in ogni progetto che fa parte di un altro repository, potrei farlo? Come succede, non ho bisogno di farlo in questo momento, e nella mia situazione attuale sarebbe meglio Dal punto di vista del design per avere i file di cui ho bisogno per "refactor" in un altro repository nella propria sottocartella, tuttavia potrebbe non essere sempre così. Uso il refactor tra citazioni qui, poiché a rigor di termini si tratta più di refactoring di file duplicati che sta refactoring Code, tuttavia si applica lo stesso principio.

Spero che le mie domande siano abbastanza succinte da rispondere senza una spiegazione troppo più.

È stato utile?

Soluzione

Grazie per il riassunto, rende molto più facile rispondere!

Qual è il modo più semplice (e migliore) per spostare un gruppo di file da un repository esistente a un nuovo repository secondario, in modo che tali file possano essere integrati con altri repository genitorie, alcuni dei quali potrebbero non esistere?

Puoi usare il convertire l'estensione Per estrarre una directory da un repository mercuriale esistente. Ti consigliamo di usare il --filemap Flag e nel filemap includi la directory che desideri e la rinomini alla radice. Vedere hg help convert per maggiori informazioni.

Dopo aver ottenuto un repository più piccolo con il

I file nelle subrepositori devono essere in cartelle discrete o possono esistere insieme ad altri file?

Devono essere nelle loro cartelle. Questo è semplicemente perché è così che appare un repository in mercuriale, git, sovversione, ... quando hai a che fare con Subrepositorie, quindi Mercurial non sta monitorando i file all'interno del subrepo: sta solo chiedendo a qualche (altro) sistema di fare una cassa di repository foo in qualche posizione.

Quindi quando sei .hgsub Il file ha

foo = foo
bar = [git]bar
baz = [svn]baz

allora mercuriale lo noterà hg update e corri

hg clone default-path-of-this-repo/foo foo
git clone default-path-of-this-repo/bar bar
svn checkout default-path-of-this-repo/baz baz

per il tuo. Questo spiega perché le subrepostori sono directory nel repository esterno: questo è semplicemente un clone/checkout in questi giorni.

Come puoi vedere, i subrepositori possono essere di diversi tipi. È ipotizzabile che qualcuno possa aggiungere un tipo di subrepository RCS per il monitoraggio di singoli file. Non avrebbero dovuto vivere in una directory.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top