Chiusura delle filiali Hg


103

Quando lo si utilizza hg branch FeatureBranchNamee si pubblica in un repository centrale condiviso tra gli sviluppatori, c'è un modo per chiudere alla fine il FeatureBranchNamequando il suo sviluppo è stato ufficialmente unito al ramo predefinito?

Sarebbe anche utile se FeatureBranchNamenon fosse visibile durante l'esecuzione di un hg branchescomando.

Risposte:


158
hg commit --close-branch

dovrebbe essere sufficiente per contrassegnare un ramo chiuso. (vedi hg commit)

--close-branch

contrassegnare un ramo come chiuso, nascondendolo dall'elenco dei rami.

Vedi anche questo thread :

La mia aspettativa è che chiuda un ramo perché questa linea di sviluppo è giunta a un vicolo cieco e non voglio più essere disturbato da questo.
Pertanto, quando un ramo è stato chiuso, non dovrei vederlo (in rami, teste, log, per esempio) a meno che non chieda esplicitamente di vedere rami chiusi.

Devo notare che mi aspetto che un ramo chiuso rimanga nel repository; potrebbe essere utile in futuro e il commit --close-branchmessaggio dovrebbe almeno spiegare perché la filiale è stata chiusa.
La potatura dei rami è un'altra cosa.


Nota: quell'attività di "chiusura del ramo" è un aspetto visto come mancante in Git, rispetto a Mercurial :

I rami in git sono, ci viene sempre detto, cose effimere da usare e buttare via, e per quanto ne so git non ha modo di indicare ai tuoi colleghi che hai finito con un ramo;
l'unico modo per farlo è eliminarlo, o sperare che vedano il commit dell'unione finale e capiscano che il ramo è chiuso a ulteriori sviluppi.

[In Mercurial] Quando hai finito con un ramo, tuttavia, non puoi eliminarlo dal repository; invece, emetti un commit che chiude il ramo, e Mercurial nota che il ramo è chiuso. Rimarrà una parte permanente della cronologia del tuo repository.


3
C'è un modo per chiudere una filiale non corrente?
Thomas S.

@ThomasS. 5 anni dopo, non lo so per certo. Il documento è stato recentemente aggiornato: mercurial.808500.n3.nabble.com/…
VonC

1
@ThomasS. sì, questa risposta mi ha aiutato con quel problema. hg debugsetparent <revision> hg branch <branchOfRevision> Nota che l'ordine è importante. Questo farà pensare al tuo repository di essere sulla nuova revisione, mentre tutti i tuoi file provengono da quella iniziale. Dopodiché, puoi usare il commit --close-branch, ma usa l'opzione -X * per fare un commit vuoto. hg commit --close-branch -X * -m "Closing branch."
Maske

8

Ho scritto un semplice script che completa la chiusura del ramo, comandi trovati in PruningDeadBranches .

## Script ##

#!/bin/bash
#script to close the not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
# if we are here then the branch is up, so we do the following
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 

Come

Passa alla copia locale del repository ed esegui questo script fornendo un argomento. Per esempio:

$./the_script_above.sh bad_branch_name_to_close

Che cosa fa

Questo fa quanto segue:

  1. Se il ramo esiste, si aggiorna al ramo specificato oppure esiste con un messaggio di errore.
  2. Chiude il ramo.
  3. Aggiornamenti al ramo predefinito.
  4. Fermate.

Lo script non gestisce i rami con spazi nel nome.
Jared

@ Jared puoi eseguire un comando up indipendente con il tuo ramo. Per esempio: $ hg update yourbranchnamecontainingspace. Penso che potremmo creare un branchname con spazio, tuttavia ottieni un errore di analisi quando esegui comandi mercurial come update . Potresti prendere in considerazione l'idea di eseguire l'escape del carattere spazio durante il passaggio del nome del ramo come parametro allo script. Saluti.
Roshan Poudyal,

non è echo "$1 is up"duplicato qui? In thene dopo fi? Inoltre, tale script potrebbe essere utile se supporta un'opzione per unire immediatamente il valore predefinito
YakovL

1
@YakovL sì =). Grazie per la notifica. Ho aggiornato lo script. Ovviamente sarebbe utile per l'unione facoltativa, proverò ad aggiornare in futuro, ma fino ad allora puoi ridimensionare lo script secondo i tuoi gusti =)
Roshan Poudyal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.