2015-06-03 20 views
7

Jestem w projekcie, który używa teraz TFS i Git. I zdałem sobie sprawę, że nie będę mógł już korzystać z Fork, więc pomyślałem, że zapytam was, co myślisz o tym jako o rozwiązaniu.Rozwidlenie za pomocą TFS Git

Problem polega na tym, że mam projekt "Podstawowy". Byłby on ponownie wykorzystywany dla każdego klienta, który mamy. Ale każdy klient ma pewne modyfikacje (około 5-10%).

Planowałem rozbić projekt "A" na "Client_A" i wprowadzić potrzebne zmiany. Wszystkie klasy, w których można dokonać zmian, są implementacjami klas abstrakcyjnych w "A", więc będę w stanie zsynchronizować nową wersję A, o ile spełnione są zależności.

Moim problemem jest to, że Forking nie jest obsługiwany, wcześniej używaliśmy bitbucket w moim zespole. Ale ponieważ byliśmy zintegrowana z resztą firmy Teraz musimy uruchomić co wszyscy działa ...

To co myślę o zrobieniu ...

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 

Jeśli mogę to zrobić czy nadal będę mógł przejść do A?

+0

Czy możesz wyrazić, co chcesz osiągnąć, nie odwołując się do BitBucket, co może być dla wielu nieznane? –

+0

To fork to koncepcja dostosowana przez GitHub i BitBucket. To nie jest samo polecenie Git. Chciałbym zrobić coś, co naśladuje proces rozwidlenia. –

Odpowiedz

9

Po usunięciu pilota zdalnego sterowania (A), nie może on działać.

Prawdopodobnie chcesz coś

# 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 

Git klient nie może utworzyć repozytorium w TFS, trzeba to zrobić ręcznie za pomocą interfejsu WWW lub używając mojego TfsGitAdmin użyteczność.

AKTUALIZACJA: Funkcja wideł dostępna jest w VSTS lub TFS 2018 i późniejszych (patrz https://docs.microsoft.com/en-us/vsts/git/concepts/forks).

+0

To jest fantastyczne, tego właśnie mi brakowało. –

+1

Czy znasz sposób na przesłanie PR z widelca (pochodzenia) z powrotem do repozytorium? –

+0

Interesujące pytanie. Nie sprawdziłem, jak to działa w TFS, ale w GitHub wystarczy utworzyć gałąź i przekazać ją do zdalnego pilota, o ile masz odpowiednie uprawnienia. –

Powiązane problemy