2015-06-03 18 views
7

Sono in un progetto ora che utilizza TFS e Git. E ho capito che non potrò più tornare a Fork, quindi ho pensato di chiederti ragazzi cosa ne pensate di questa soluzione.Forking using TFS Git

Il problema che sto avendo è che ho un progetto "Base". Sarebbe riutilizzato per ogni cliente che abbiamo. Ma ogni cliente ha delle modifiche in una certa misura (circa il 5-10%).

Stavo progettando di forkare il progetto "A" in "Client_A" e apportare le modifiche necessarie. Tutte le classi in cui è possibile apportare modifiche sono implementazioni di classi Abstract in "A", quindi sarei in grado di sincronizzare una nuova versione di A finché le dipendenze sono soddisfatte.

Il mio problema ora è che Forking non è supportato, stavamo usando bitbucket prima nella mia squadra. Ma dal momento che ci sono stati integrati con il resto della compagnia ora abbiamo bisogno di eseguire ciò che tutti gli altri è in esecuzione ...

Questo è quello che sto pensando di fare ...

git clone http://mycompany.com/tfs/MyDefaultCollection/My Git Projects/_git/A 
cd A 
git fetch origin 
git branch -a 
git checkout -b a_branch1 origin/a_branch1 
git checkout -b a_branch2 origin/a_branch2 
git checkout -b a_branchN origin/a_branchN 
git branch -a 
git remote add new-origin http://mycompany.com/tfs/MyDefaultCollection/My Git Projects/_git/Client_A 
git push --all new-origin 
git push --tags new-origin 
git remote rm origin 
git remote rename new-origin origin 

se faccio questo sarò ancora in grado di risalire a A?

+0

Può articolare ciò che si desidera ottenere senza fare riferimento a BitBucket, che potrebbe non essere familiare a molti? –

+0

To fork è un concetto adattato da GitHub e BitBucket. Non è un comando Git da solo. Mi piacerebbe fare qualcosa che emuli il processo della forcella. –

risposta

9

Se si rimuove il telecomando a monte (A), non può funzionare.

Probabilmente si desidera qualcosa di simile

# 1. create Client_A repo in TFS 
# 2. get A repo locally 
git clone http://mycompany.com/tfs/MyDefaultCollection/My Git Projects/_git/A 
cd A 
# 3. redefine remotes 
git remote rename origin upstream 
git remote add origin http://mycompany.com/tfs/MyDefaultCollection/My Git Projects/_git/Client_A 
# 4. push to Client A 
git push origin 
# 5. push to A (when proper) 
git push upstream 

client Git non può creare il repository in TFS, è necessario farlo manualmente tramite l'interfaccia Web oppure utilizzando il mio programma di utilità TfsGitAdmin.

UPDATE: La funzione di forcella è disponibile in VSTS o TFS 2018 e successive (vedere https://docs.microsoft.com/en-us/vsts/git/concepts/forks).

+0

Questo è fantastico, questo è quello che mi mancava. –

+1

Sei a conoscenza di un modo per inviare un PR dal fork (origine) al repository upstream? –

+0

Interessante domanda. Non ho controllato come funziona in TFS, ma in GitHub devi semplicemente creare un ramo e inserirlo nel remoto upstream purché tu disponga delle autorizzazioni appropriate. –

Problemi correlati