Il mio team sta pianificando di passare da Perforce a Git e sto cercando di trovare un modo per far sì che Git ignori le differenze della versione pom tra i rami. Funziona bene in Perforce e non ho alcuna fortuna nel riprodurre il comportamento con Git.C'è un modo con Git per fare in futuro che le unioni ignorino la differenza del numero di versione in un file pom tra le filiali?
Qui sono i miei passi:
ramo Checkout genitore
[email protected] /c/dev/proj/testgit (master) $ git checkout release/1.0 Switched to branch 'release/1.0' Your branch is up-to-date with 'origin/release/1.0'.
Crea ramo bambino da esso
[email protected] /c/dev/proj/testgit (release/1.0) $ git branch branch/FEA-650
passare alla nuova filiale
[email protected] /c/dev/proj/testgit (release/1.0) $ git checkout branch/FEA-650 Switched to branch 'branch/FEA-650'
Aggiornamento versione ramo bambino pom
<version>1.0.0-FEA-650-SNAPSHOT</version>
Aggiungi e commettere
[email protected] /c/dev/proj/testgit (branch/FEA-650) $ git status On branch branch/FEA-650 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: pom.xml no changes added to commit (use "git add" and/or "git commit -a") [email protected] /c/dev/proj/testgit (branch/FEA-650) $ git add pom.xml [email protected] /c/dev/proj/testgit (branch/FEA-650) $ git commit -m "set feature branch pom version" [branch/FEA-650 59e156e] set feature branch pom version 1 file changed, 1 insertion(+), 1 deletion(-)
Tornate al ramo genitore
[email protected] /c/dev/proj/testgit (branch/FEA-650) $ git checkout release/1.0 Switched to branch 'release/1.0' Your branch is up-to-date with 'origin/release/1.0'.
Unisci ramo bambino in auto- genitore accettare la versione del ramo padre (usando la strategia di fusione “nostro”)
[email protected] /c/dev/proj/testgit (release/1.0) $ git merge branch/FEA-650 -s ours Merge made by the 'ours' strategy.
Tentativo 2 ° fusione di bambino nel genitore (già up-to-date.) Buona. Questo è quello che voglio
[email protected] /c/dev/proj/testgit (release/1.0) $ git merge branch/FEA-650 Already up-to-date.
Checkout bambino e si fondono genitore in figlio (in avanti velocemente e attacca le diramazioni principali pom versione sul bambino). Non bene. Ho bisogno di dire "già up-to-date", come sopra e mantenere la versione ramo bambino pom come già è sul ramo bambino
[email protected] /c/dev/proj/testgit (release/1.0) $ git checkout branch/FEA-650 Switched to branch 'branch/FEA-650' [email protected] /c/dev/proj/testgit (branch/FEA-650) $ git merge release/1.0 Updating 59e156e..2f3a2a0 Fast-forward pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Dopo il punto 7, vorrei si fonde in entrambe le direzione tra genitore e figlio per dire (Già aggiornato.)
C'è un modo con Git per rendere le future unioni ignora la differenza del numero di versione nel file pom tra le filiali?
Non è possibile creare un alias che controlli le differenze e si unisca solo se ce n'è? Se non viene trovata alcuna differenza, puoi produrre tutto ciò che ti serve. –
Non ho mai avuto a che fare con questo, ma vedo tre modi per affrontare il problema: (1) ignorare completamente i file POM e auto-generarli da metadati (ramo, ecc.); (2) utilizzare i filtri sfumino/pulito per inserire e rimuovere specifiche ramo (questo è un metodo intermedio tra 1 e 3); (3) scrivere driver di fusione personalizzati per tali file. Non avendo effettivamente fatto questo in pratica non posso dire quali metodi funzionano veramente o quali sarebbero i problemi. – torek
Riguardo a (1) - Ignorare completamente i file pom non è un'opzione per me. Mi interessa ancora unire le altre linee in quei file. Per quanto riguarda (2) - ho trovato riferimenti a macchie e filtri nella documentazione in precedenza e non ho approfondito questo argomento. Non capisco perfettamente cosa siano e comincerò a leggere su di loro per vedere se può funzionare. Per quanto riguarda (3) - Mi piacerebbe evitare di scrivere un driver di fusione speciale. La possibilità di contrassegnare una differenza di linea come unita è qualcosa che ottengo gratis con perforce e mi piacerebbe trovare qualcosa di simile a quello in git. –