2011-04-14 18 views
39

Próbuję znaleźć najlepszy przepływ pracy do pracy z widelcem istniejącego projektu opensource w Github. Chcę wziąć istniejący projekt i wprowadzić w nim istotne zmiany, w tym przypadku przenieść go na system Android i dodać specyficzną funkcjonalność tylko na Androida. Chciałbym spełnić następujące warunki:Najlepszy przepływ pracy podczas rozwidlania i zmiany nazwy projektu GitHub

  1. Będą mogli pobrać zmiany z publicznego repozytorium na nowy port Android, gdy oryginalny kod zostanie zaktualizowany.
  2. Potrafię sumbitować zmiany (za pomocą żądań ściągnięcia) do projektu oryginalnego, gdy naprawię błędy, które nie dotyczą tylko portu Android.
  3. Masz oddzielną, przemianowaną wersję projektu, aby było jasne, że jest to port Android. Spojrzałem na zmianę nazwy widelca i Github dał mi ogromne ostrzeżenia o tym.

Moje pierwsze myśli są Chciałbym widelec oryginalny projekt następnie widelec i zmienić mój widelec dać mi następujące repo:

original-author/projectA 
nicstrong/projectA 
nicstrong/projectA-android 

Pozwoliłoby mi pracować na moim lokalnym repo local/projectA- Android push zmienia się na nicstrong/projectA-android. Następnie, aby zaktualizować z oryginalnego projektu, mogłem ponownie ustawić nicstrong/projectA na najnowszy z original-author/projectA, a następnie pobrać/scalić z nicstrong/projectA do local/projectA-android.

Moje pytania są następujące:

  1. Jestem zupełnie nowy w całej Git rzeczy. Czy wydaje się to dobrym podejściem ? Czy istnieje lepszy przepływ pracy do obsługi tego scenerio?
  2. Jak obsługiwać przesuwanie z projektu z powrotem do nicstrong/projectA, aby móc ustawić żądanie ściągnięcia oryginalnego projektu?

Odpowiedz

17

1/Tak, to wydaje się najbezpieczniejsze podejście, jak każdej modyfikacji skończyć back-przenoszenie w nicstrong/projectA będzie w ramach projektu o tej samej strukturze jak original-author/projectA.
To oznacza, że ​​wnioski o odłożenie będą łatwiejsze do zorganizowania, ponieważ będziesz w projekcie odzwierciedlającym oryginalny projekt autora.

2/Jeśli masz ogromny refaktoring dzieje w nicstrong/projectA-android, chciałbym złożyć backport oddział, dokładnie połączyć lub cherry-pick, co trzeba z licznych zmian w backport oddziału, a następnie wcisnąć ten oddział nicstrong/projectA.
(co oznacza, że ​​zostały dodane nicstrong/projectA jako pilota z nicstrong/projectA-android)

+2

Aby utworzyć wiele potrzebnych wideł, skorzystałem z techniki opisanej w tym poście: http://adrianshort.org/2011/11/08/create-multiple-forks-of-a-github-repo/ – dbasch

+1

@dbasch prawda, ale nie będzie to prawdziwe widelec, ponieważ nie będzie żadnego żądania ściągnięcia z drugiego "widelca" z powrotem do pierwotnego repo. – VonC

+0

Będę używał repozytorium projectA do wysyłania żądań do oryginalnego repo. Zmiany w projectA-android/backport zostaną ręcznie połączone z projectA. Czy to dobra strategia? – dbasch

3

Nazwa repozytorium git jest w dużym stopniu zależna od nazwy pilota. Śmiało i sklonuj go, a następnie dodaj nowego pilota (pod inną nazwą) i zacznij naciskać. W tym momencie możesz oczywiście zmienić nazwę katalogu projektu bez problemu.

Powiązane problemy