1,361
edits
| Line 494: | Line 494: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Blokowanie zatwierdzeń przez pre-commit hook === | ||
Czasami podczas zatwierdzania w FGAddon, zatwierdzenie zostanie zablokowane i zostanie wypisana następująca informacja: | |||
<pre> | <pre> | ||
svn: E165001: Commit failed (details follow): | svn: E165001: Commit failed (details follow): | ||
| Line 502: | Line 502: | ||
</pre> | </pre> | ||
Wynika to z obecności dwóch skryptów pre-commit hook repozytorium, które sprawdzają jakość zatwierdzenia, blokując je, jeśli plik tekstowy jest ustawiony na typ mime pliku binarnego lub jeśli ustawiona jest flaga wykonywalna. Skrypty te mają po prostu chronić repozytorium i utrzymywać je w czystości. | |||
==== Problemy z mime-type ==== | ==== Problemy z mime-type ==== | ||
Czasami podczas próby zatwierdzenia plików do FGAddon przy użyciu narzędzi SVN, zatwierdzenie zostanie zablokowane z następującym komunikatem: | |||
<pre> | <pre> | ||
Sending dash-set.xml | Sending dash-set.xml | ||
| Line 534: | Line 534: | ||
</pre> | </pre> | ||
Pomimo komunikatów o dodaniu lub wysłaniu plików, w repozytorium FGAddon nie zajdą żadne zmiany. Ta wiadomość jest tworzona przez skrypt pre-commit hook repozytorium, który sprawdza, czy właściwość Subversion <code>svn:mime-type</code> jest ustawiona na liście znanych plików tekstowych. Jeśli typ MIME jest ustawiony na format binarny, to zatwierdzenie jest blokowane. Powodem tego bloku jest ochrona repozytorium. Nowsi klienci SVN korzystają z biblioteki trzeciej znanej jako libmagic, która wykrywa pliki XML samolotu jako pliki typu MIME binarnego <code>application/xml</code>. W rezultacie pliki XML są traktowane w repozytorium jako pliki binarne. Takie zachowanie jest całkowicie niepożądane, ponieważ zmian nie można śledzić na [[#FGAddon commitlog mailing list|liście mailingowej commitlogs]] ani w historii repozytorium, a rozmiar zatwierdzeń staje się o rząd wielkości większy. Dlatego to błędne zachowanie zostało zablokowane w celu ochrony projektu FlightGear. Aby usunąć problem, postępuj zgodnie z instrukcjami zawartymi w komunikacie i korzystając z narzędzi wiersza poleceń wpisz: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
svn propdel svn:mime-type <file_name> | svn propdel svn:mime-type <file_name> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Powtórz tę czynność dla każdego pliku tekstowego wymienionego w komunikacie o błędzie. Następnie zatwierdź ponownie, korzystając z komunikatu zatwierdzenia zapisanego w pliku <code>svn-commit.tmp</code>. Nazwa pliku komunikatu zostanie wyświetlona w komunikacie o niepowodzeniu zatwierdzenia, ale najpierw sprawdź jego zawartość: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cat svn-commit.tmp | cat svn-commit.tmp | ||
</syntaxhighlight> | </syntaxhighlight> | ||
I ponownie wykonaj zatwierdzenie: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
svn ci -F svn-commit.tmp | svn ci -F svn-commit.tmp | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== Subversion | ===== Plik konfiguracyjny Subversion ===== | ||
Automatyczne ustawienie właściwości <code>svn:mime-type</code> może być kontrolowane poprzez modyfikację pliku <code>config</code> Subversion. Najpierw w sekcji <code>[miscellany]</code> upewnij się, że właściwości automatyczne są włączone: | |||
<syntaxhighlight> | <syntaxhighlight> | ||
enable-auto-props = yes | enable-auto-props = yes | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Następnie w sekcji <code>[auto-props]</code> dodaj: | |||
<syntaxhighlight> | <syntaxhighlight> | ||
*.ac = svn:mime-type=text/plain | *.ac = svn:mime-type=text/plain | ||
| Line 571: | Line 572: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Te wszystkie pliki tekstowe, skrypt przechwytujący sprawdzi, czy typ MIME jest ustawiony na format tekstowy, chociaż w przyszłości prawdopodobnie zostaną dodane nowe pliki tekstowe. Te zmiany można zapisać w pliku konfiguracyjnym użytkownika znajdującym się w <code>~/.subversion/config</code> (lub <code>%USERPROFILE%\AppData\Roaming\Subversion\config</code> w systemie Windows) lub jeśli plik konfiguracyjny użytkownika nie jest ustawiony, to można użyć globalnego pliku konfiguracyjnego w katalogu <code>/etc/subversion/config</code> (lub <code>%APPDATA%\Subversion\config</code> w systemie Windows). | |||
==== Flaga | ==== Flaga wykonywalności ==== | ||
Kolejnym komunikatem blokującym podczas próby zatwierdzenia plików do FGAddon przy użyciu narzędzi SVN jest: | |||
<pre> | <pre> | ||
Adding dash-set.xml | Adding dash-set.xml | ||
| Line 598: | Line 599: | ||
</pre> | </pre> | ||
Prawdopodobnie będzie to widoczne tylko w systemach macOS i GNU/Linux. Ta wiadomość jest wyświetlana przez skrypt pre-commit przed zatwierdzeniem, który sprawdza, czy właściwość Subversion <code>svn:executable</code> jest ustawiona, jeśli tak, zatwierdzenie jest blokowane. Jest to środek bezpieczeństwa, ponieważ żadne pliki statku powietrznego nie powinny być wykonywalne. Aby usunąć problem, postępuj zgodnie z instrukcjami zawartymi w komunikacie i korzystając z narzędzi wiersza poleceń wpisz: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
svn propdel svn:executable -R | svn propdel svn:executable -R | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Następnie zatwierdź ponownie, używając komunikatu zatwierdzenia zapisanego w pliku <code>svn-commit.tmp</code>. Nazwa pliku komunikatu zostanie zgłoszona w komunikacie o niepowodzeniu zatwierdzenia, ale najpierw sprawdź jego zawartość: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cat svn-commit.tmp | cat svn-commit.tmp | ||
</syntaxhighlight> | </syntaxhighlight> | ||
I ponownie wykonaj zatwierdzenie: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
svn ci -F svn-commit.tmp | svn ci -F svn-commit.tmp | ||
edits