Przedstawiam poniżej propozycję sposobu pracy z Sealhubem (napędzanym przez Phabricatora).
WARNING: Jeszcze nie wszyscy mają konta na Phabricatorze. Postaram się na dniach założyć automatyczne backupy i wtedy możemy w pełni rozwijać Sealhubowe żagle
NOTE: Ten artykuł jest dosyć obszerny. Co nie powinno dziwić - system pracy w zespole to nie jest trywialne zagadnienie ;) Apeluję o cierpliwość!
NOTE: To jest tylko propozycja. Wszelki feedback mile widziany na forum.
#### Arcanist
Arcanist to narzędzie umożliwiające wygodne nawigowanie po Review Workflow z poziomu linii komend. Potrafi m.in.:
* tworzyć diffy i wysyłać je na serwer (`arc diff`);
* aktualizować diffy (`arc diff`);
* finalizować diffy, squashować commity i wysyłać je na repozytorium (tzw. "land" - `arc land`);
Aby zacząć korzystać z Arcanista, zainstaluj go (powinien być w domyślnych repozytoriach Twojego systemu - w razie potrzeby więcej info [tutaj](https://secure.phabricator.com/book/phabricator/article/arcanist_quick_start/). Następnie, aby powiązać dane repozytorium z instancją Phabricatora (nasza instancja stoi na https://hub.sealcode.org), dodaj plik o nazwie `.arcconfig` w korzeniu repozytorium (jeżeli jeszcze go nie ma), o następującej zawartości:
```
lang=json, name=.arcconfig
{
"phabricator.uri" : "https://hub.sealcode.org/"
}
```
A nastepnie wykonaj polecenie
```
# arc install-certificate
```
i podążaj za instrukcjami. Jest to jednorazowy krok mający na celu uwierzytelnienie Arcanista na Twojej maszynie w danym repozytorium lokalnym.
Aby wysłać zmiany do review, wpisz:
```
# arc diff
```
i podążaj za instrukcjami na ekranie.
Aby zrobić "land", tzn. zrobić z całego diffa jeden commit i dodać go do domyślnego brancha, wpisz:
```
# arc land
```
#### Wybór domyślnego edytora
Arcanist korzysta z domyślnego edytora, aby umożliwić konfigurację diffów (wliczając w to tytuły diffów i listę recenzentów). Aby wybrać domyślny edytor, ustaw odpowiednio zmienną środowiskową `$EDITOR` (prawdopodobnie możesz to zrobić w Twoim pliku `.bashrc`).
#### Kilka review naraz
Może zdarzyć się, że wyślesz zmiany na review i pozostaje Ci czekać, aż ktoś je zrecenzuje. W międzyczasie możesz oczywiście pracować nad innym diffem! Załóż nowego brancha, który ma zwój korzeń w `master`ze, wykonaj kilka commitów i ponownie możesz założyć nowy review request za pomocą polecenia `arc diff`.
## Nazewnictwo commitow
### Język commitów
Zależy od projektu. Projekty open-source dużo zyskują, jeżeli mają tytuły pisane po angielsku. Wszechobecnym standardem w takim wypadku jest pisanie commitów w trybie imperatywnym (rozkazującym), zaczynając wielką literą:
```
Add new amazing feature
```
Projekty zamknięte mogą zyskać z pisania commitów w języku polskim - jest większa jednoznaczność przekazu.
```
Dodano nową zajebistą funkcję
```
### Tagowanie commitów
W Phabricatorze (a więc i w Sealhubie) można przypinać do commitów taski. Jeżeli np. do tytułu commita dopiszemy "Ref T28", to w widoku commita pojawi się link do taska, a także w widoku taska pojawi się ten commit.
Zrobiłem dla testu podpiętego commita w testowym repo:
https://hub.sealcode.org/rPGbaf5a544352cda1edf4b99ec9a24e6b170f6490e
Można zobaczyć, że podpiął się do T28:
https://hub.sealcode.org/T281