Jak udostępnić commit tylko wybranym osobom?

0

Cześć. Powiedzmy, że założyłem branch lokalnie. Zrobiłem na nim commit i zanim zrobię push, chciałbym pokazać go tylko jednej lub paru osobom, które mogą być zainteresowane. Czy jest jakiś push, który pozwala mi określić widoczność commita?

3

Zawsze możesz po prostu przekierować wynik git diff do pliku i przesłać ludziom, będą mogli to wgrać na swoich repo z git apply.

3

Nie kojarzę, ale zrobiłbym patcha za pomocą git diff-a, zrzucił go do pliku i przesłał mailem do zainteresowanych osób. Potem wystarczy git apply, by zaaplikować go w projekcie.

10

Ale po co tak robić? Załóż osobnego brancha, zrób do niego push i wyślij namiary na brancha.

0

@Spearhead @Pyxis Czytam sobie o tym git diff, ale nie całkiem wiem jak to zrobić. Tzn. pewnie interesuje mnie:
git diff hash_jakiegos_commita_na_devie_ktory_ma_kolega_ktoremu_chce_to_wyslac hash_ostatniego_commita_gdzie_sa_moje_zmiany
ale to raczej jeszcze nie wrzuca mi wszystkiego do pliku i nie wiem jak osoba, do której chciałbym to wysłać miałaby sobie to wgrać.

0

Przekieruj standardowe wyjście do pliku, np.:

git diff @~ @ > zmiany_dla_kolegi
0

To się nazywa Pull Request (w git labie Merge Request). Robisz zmiany na branchu i dajesz do zatwierdzenia przed zrobieniem merge. Wydaje mi się że za pomocą hooków (lub ustawieniem git(huba/laba) można dać lub zabrać uprawnienia do pobrania zmian z danego brancha.

2

Po kiego grzyba trzymać brancha w tajemnicy przed innymi członkami zespołu?
Jaki jest powód?

Najprościej po prostu założyć nowe prywatne repozytorium i dać dostęp osobie docelowej. Następnie zrobić push do nowego repo (git może obsługiwać wiele zdalnych repozytoriów)
IMO najwygodniejsze rozwiązanie.
Trzeba to po prostu ogarnąć na github/bitbucket/gitlab/.... .

0

Najlepiej dodać nowy remote, i na tego osobnego remote'a to wysłać, którego widzą tylko niektórzy.

Ale pamiętaj, że jeśli pracujesz w zespole, to w Twoim interesie jest żeby każdy członek tego zespołu zobaczył Twoje zmiany.

1

Można użyć git-diff, ale jest jeszcze nieco większy automat, w postaci git-format-patch:

git format-patch <id>

Wygeneruje pliki .patch dla każdego commita od podanego id (nie włącznie) do HEAD.

Pliki .patch aplikuje się za pomocą git apply (to samo dotyczy wyniku działania git diff w standardowej konfiguracji, bo git diff jest równoznaczny git diff -p).

1
Charles_Ray napisał(a):

Ale po co tak robić? Załóż osobnego brancha, zrób do niego push i wyślij namiary na brancha.

paranoise skomentował(a):

Sytuacja tyczyła się poprzedniej firmy. Starszy stażem kolega mówił żeby tak nie robić, bo potem brzydko wygląda. Publicznie miał być tylko jeden branch do jednego zadania, nazwa brancha to nr zadania, a każdy commit to nazwa zadania, ewentualnie po enterze jakieś swoje uwagi. I na tym branchu zadaniowym nie miało być żadnych odgałęzień.

Ten "Starszy kolega" to najwyraźniej był niewiele starszy, albo za bardzo nie zna się na używaniu git-a.
Obecnie pracuje repo gdzie takie coś: git branch -r | wc -l zwraca wartość 3685 i nikomu to nie przeszkadza. Nikt nie odczuwa estetycznego dyskomfortu.
W bitbucket zablokowane są branche o nazwie: master relase-* tylko bitbucket może je modyfikować (i ja) po zatwierdzeniu przez CI.

Wszyscy w team-ie używają takiego wzorca nazywania brancha, mimo że nie ma żadnej narzuconej polityki nazywania branchy (tylko branche związane z release są chronione):

feature/jira/PR-123/FeatureDesription/user
bug/jira/PR-125/BugDesription/user
private/user/ExperimentNameNoJira
1

Pomijając sensowność udostępniania commita wybranym osobom, to technicznie:

Git jest rozproszonym systemem kontroli wersji i to możesz wykorzystać w następujący sposób:

a) wystawiasz wybranym kolegom wjazd po ssh do swojej piaskownicy (co może wygenerować większy problem dla Ciebie "Jak mam to zrobić" :p) i kontrolujesz ten wjazd przez dodanie kluczy publicznych wybrańców
b) wybrańcy mogą dodać remote'a wskazującego na Twoją piaskownicę
c) możesz wskazać, którego brancha mają sobie przejrzeć

Jest to podobne do tego co pisał @Riddle , natomiast to nie Ty pushujesz do remote'a, a wybrańcy robią pulla.

0

@paranoise:

  1. zakładasz na github nowe repozytorium
  2. robisz push na te nowe repozytorium (co tam chcesz)
0

Jak widzę to co tutaj ludzie piszą, to trafia mnie jedna myśl: "Nie ufacie swoim zespołom". Całe te zabawy z commitami, branchami, nazwami tasków w jirze, etc. to wszystko są objawy niskiego zaufania do ludzi z którymi pracujecie ;| Tak się nie da robić dobrego softu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1