Come fare a git unire automaticamente numeri di build aumentati? [chiuso]

1

Mi piace avere numeri di build, solo perché è bello. Per favore non giudicarmi: D.

Tuttavia, sviluppo su due macchine (una per OS X e una per Windows per i controlli di portabilità). Ho su entrambe le macchine uno script che aumenta automaticamente il numero di build ogni volta che costruisco il progetto. Tuttavia, quando si eseguono modifiche su entrambe le macchine senza la sincronizzazione con git, questo ovviamente causa un conflitto di unione, poiché il file che contiene il numero di build è cambiato su entrambe le macchine.

C'è un modo pulito per unire automaticamente questi file? Sarei bello se potessi definire una regola come:

If file buildnumber.txt has a merge conflict, run script auto-merge-build-number.sh and continue commit.

Dove auto-merge-build-number.sh sarebbe un semplice script che analizza il file in conflitto e somma i due numeri (trovati nelle righe in conflitto) e riscrive il file con quella somma. Non so se questo è possibile in git o no.

C'è un altro modo in cui posso pensare a me stesso, ma è meno accurato, imho: Tieni traccia di un file contatore di build su ogni macchina che viene utilizzata solo per quella macchina. Se il progetto è stato creato su quella macchina, il file contatore di build per quella macchina viene aumentato. Successivamente, tutti i file contenenti i numeri di build vengono sommati insieme e il risultato viene scritto in un file che si trova in .gitignore . In questo modo, non ci sarebbero conflitti di fusione sviluppandosi su più macchine. Unisci i conflitti solo sviluppando su più filiali. Non mi piace molto questo approccio perché hai bisogno di n + 1 file per tenere traccia del numero totale di build (quando hai n macchine) e lo script su ogni macchina deve essere leggermente diverso, per farlo aumentare il file giusto.

Qualche idea su come questo potrebbe essere fatto?

    
posta Martijn Courteaux 07.12.2015 - 01:04
fonte

2 risposte

3

In primo luogo, puoi utilizzare i commit anziché i build?

git describe o git rev-list --count --first-parent HEAD possono darti qualcosa come un numero di revisione. Fai attenzione se hai rami, farà la cosa sbagliata, ma lo sarà anche per qualsiasi numero di build.

In secondo luogo, se insisti a utilizzare i numeri di build, vuoi un driver di fusione personalizzato.

Vedi la documentazione qui: link

Fondamentalmente, dovresti essere in grado di scrivere uno script per fare tutto ciò che vuoi durante l'unione.

    
risposta data 07.12.2015 - 01:28
fonte
1

Dopo aver cercato un po 'di più, con un vocabolario diverso, ho trovato questo post: link (sezione su .gitattributes)

Fondamentalmente, questa soluzione è la soluzione che stavo cercando e si compone di due passaggi:

  • Crea una strategia di fusione (ad esempio chiamata: buildnumbermerge ) utilizzando un linguaggio di scelta dello script e inseriscilo in .git/config (vedi link per i dettagli).
  • Specifica quale file deve utilizzare quale strategia di unione. I.e .: buildnumber.txt deve avere la strategia di unione buildnumbermerge specificando che in .gitattributes con una riga come questa:

    buildnumber.txt merge=buildnumbermerge
    

Vedi anche:

risposta data 07.12.2015 - 01:27
fonte

Leggi altre domande sui tag