Sto transizione a Mercurial da Subversion, dove mi sono abituato ad usare svnmerge.py tenere traccia delle modifiche che sono già state fuse, o che sono state bloccate da essere fuse:Contrassegna le modifiche come già unite o deliberatamente ignorate con hg pull/push/merge/graft?
# Mark change 123 as having already been merged; it will not be merged again, even if a range
# that contains it is subsequently specified.
svnmerge.py merge -M -r123
#
# Block change 326 from being considered for merges.
svnmerge.py merge -X -r326
#
# Show changes that are available for merging from the source branch.
svnmerge.py avail
#
# Do a catchall merge of the remaining changes. Neither change 123 nor change 326 will be
# considered for merging.
svnmerge.py merge
voglio essere in grado di fare qualcosa di simile per hg pull/push/merge/graft, in modo che se so che non voglio mai unire una determinata modifica, posso semplicemente bloccarlo dalla considerazione, rendendo successivamente il cherry-picking, l'unione, ecc. un affare più ignaro. Ho fatto molte ricerche su google, ma non ho trovato il modo di farlo.
Sembra inoltre che non ci sia modo di visualizzare un elenco di modifiche non ancora disegnate.
Dato che sto spesso riordinando gli altri sviluppatori e aiutandoli con le loro unioni, è estremamente utile essere in grado di fare questo genere di cose, che si potrebbe considerare "inverso cherry-picking"; Ad esempio, contrassegnare le modifiche che NON si desidera unire e quindi eseguire un'unione di massa del resto.
MG ha le risposte qui sotto, lui TL; la versione DR è: i sistemi basati su DAG (Mercurial, Git, ecc.) Fanno un ottimo lavoro per tenere traccia di ciò che è stato fuso, e fintanto che eviti cherrypicking (che né Git né Mercurial gestiscono bene, in base alla progettazione, quindi ciò che è già stato unito e ciò che deve essere unito si scompone. –
Ahimè, in $ REALWORLD, si finisce con un ramo per lo sviluppo attuale e uno o più rami che rappresentano la stabilizzazione per il rilascio in attesa e il rilascio e il campo, e potrebbero esserci divergenze intenzionali all'interno di tali rami . Vuoi che le correzioni di bug banali scorrano facilmente da un ramo all'altro, ma non lo fai; ad esempio, desideri che le nuove funzionalità passino alla stabilizzazione o ai rami di supporto e non desideri, ad esempio, modifiche alla configurazione che risolvono un bug corretto nel ramo dev corrente per eseguire il backup dai rami di supporto. – cbehanna
Se vivo in una parola diversa da $ REALWORLD ho bisogno di fantasie migliori. La situazione che descrivi funziona semplicemente in una modalità non trapiantata. Prova a catturare un video del tour mondiale di fogbugz per il 2011 in cui @bmp ti accompagna nell'unione del fissaggio in avanti in più versioni rilasciate tutte senza utilizzare rami o trapianti denominati. Finché crei una correzione per un bambino della revisione che l'ha aggiunta (che 'hg bisect' è facile da trovare) puoi usare' hg merge' per portarlo avanti in qualsiasi rilascio o rilascio senza portare * nessun * altro changeset con esso. –