hgcp er et værktøj, der giver Mercurial tværs reposititory kopiere og flytte funktioner.
Kommentarer Developer
Når refactoring pakker, jeg nogle gange finde det nødvendigt at kopiere nogle filer fra en Mercurial repository til en anden og samtidig bevare deres historie. Mens dette er ikke svært at gøre, når du ved, hvordan, er det ikke en triviel operation. Så jeg skabte hgcp. Kopiering af filer fra kilde-repo til MÅL-repo bliver meget let. Her er et par eksempler:
- Hgcp source-repo / funktioner / særling-feature.txt dest-repo / (Dette kopier source-repo / funktioner / særling-feature.txt til MÅL-repo / funktioner / særling-feature.txt)
- Hgcp -x funktioner source-repo / funktioner / særling-feature.txt dest-repo / (Dette strips off funktioner delkurve, kopiering source-repo / funktioner / særling-feature.txt til MÅL-repo / særling-feature.txt )
- Hgcp -x funktioner source-repo / funktioner / særling-feature.txt dest-repo / plugins (Kopier source-repo / funktioner / særling-feature.txt til MÅL-repo / plugins / særling-feature.txt)
Der er også en kommando hgmv der bevæger filer, i stedet for blot at kopiere dem. Det fungerer ellers nøjagtig som hgcp kommando.
Installation
hgcp kan installeres ved hjælp easy_install: easy_install hgcp
Note til Enhver, der ikke kan lide denne funktion
Kort sagt: det er fint med mig. Brug den ikke.
Du behøver ikke at se svært at finde mange anmodninger om, hvordan du gør en historie-bevarelse tværs repository kopi. Desværre er de fleste svar, jeg har set er temmelig uhensigtsmæssigt. Her er nogle svar, jeg har set:
- Det er ikke en understøttet arbejdsgang.
- Hvis du har brug for det, du er ikke planlægge din repository layout meget godt.
- Du bør ikke behøver at gøre dette meget ofte
- Cross-repository filkopiering er ikke en veldefineret operation.
- Bare kopiere filen uden historie, og sætte en note i ændringslog.
- Ad nauseum
Det grundlæggende problem med alle disse svar er dette: Folk har brug for at kopiere eller flytte filer mellem repositories. Subversion tilskyndet os til at lægge alle vores projekter i samme depot, så cross-projektfil kopier var trivielle. DVCS som Mercurial tilskynde os til at sætte hvert projekt i en separat repository, men undlader at give en nem måde at refactor projekter. Hvis du finde dig selv spekulerer, hvorfor nogen ville nogensinde behøver at gøre dette, er du i samme båd med hard-core CVS brugere, undrede nogen klagede over, at omdøbe eller flytte filer var en besværet, og at omdøbning mapper var ... godt , latterligt. Flytning tingene er en del af refactoring. Projekterne er opdelt og fusionerede hele tiden. Så vidt jeg er bekymret, cross-repository kopiere og flytte er et væsentligt træk.
hgcp ikke gøre noget, som du ikke kunne manuelt gøre, hvis du ville. Dybest set, bruger den Mercurial konvertere forlængelse. hgcp blot skriver en filemap for dig, og udfører den rigtige rækkefølge Hg kommandoer. Det giver også mulighed for at angive veje på en mere naturlig måde.
Patches og rettelser
Jeg er glad for at acceptere patches, der forbedrer hgcp eller rette fejl. . Mit mål er at holde hgcp så enkel som muligt, og fokuserede på tværs af repository arbejdsgange
Krav :
- Python
Begrænsninger :
- hgcp fungerer kun på repositories, der er gemt på den lokale filsystem. Forhåbentlig er dette ikke en stor byrde, som du nemt kan tjekke fjerntliggende repos, brug hgcp og derefter synkronisere. Desuden skal kilden og destination repositories begge være tjekket ud, og har ingen uudnyttede ændringer.
- Jeg har fået at vide, at denne metode ikke bevarer alle historien om en fil, hvis den er blevet omdøbt, især når den kopierede / flyttede fil har en lang og branchy historie. Dette har dog aldrig forårsaget et problem for mig i brug. Bare være klar over, at når du kopierer eller flytter en fil, du måske ikke kopiere det er hele historien.
Kommentarer ikke fundet