Kiedy ktoś pisze projekt open source i używa Google Code lub GitHub i chce korzystać z biblioteki takiej jak Lua, jak należy to zrobić?
- Czy zależność powinna być zawarta w repozytorium?
- Czy zależność powinna być budowana z tego samego skryptu kompilacji, co z pozostałej części projektu, czy z oddzielnego skryptu kompilacji?
Ponieważ biblioteka nie wymaga instalacji przed kompilacją.
open-source
version-control
dependencies
po prawej stronie
źródło
źródło
Myślę, że zależności powinny być zawsze zawarte w repozytorium, o ile ich uwzględnienie nie narusza żadnych warunków użytkowania. Niewiele rzeczy jest bardziej denerwujących niż konieczność ręcznego znajdowania odpowiednich wersji odpowiednich zależności, zanim będzie można zbudować kompilację. Oczywiście jest to łatwe, gdy masz zautomatyzowane narzędzia, które mogą to zrobić za Ciebie, które mogą znaleźć i pobrać odpowiednią zależność, ale co zrobić, jeśli nie jesteś w tej chwili podłączony do Internetu lub serwer jest wyłączony lub projekt zależności został całkowicie wycofany i przejął tryb offline? Zawsze uwzględniaj zależności, jeśli to możliwe.
O ile nie ma dobrego powodu, aby kompilować ze źródła, używaj wstępnie skompilowanych wersji.
A dlaczego nie podać opcji w skrypcie kompilacji? Prosty przełącznik do wyboru, czy zależności powinny być również kompilowane, czy nie. Jeśli użytkownik zdecyduje się również na kompilację zależności, po prostu wywołaj własne skrypty budowania ze skryptu kompilacji produktu. Użytkownik może więc ręcznie wywoływać skrypty kompilacji zależności lub wybrać utworzenie pełnej kompilacji wszystkiego. Ale po prostu dostarczałbym zależności jako pliki binarne, jeśli nie ma dobrego powodu, aby je kompilować ze źródeł. Myślę, że w świecie Open Source niektóre licencje wymagają rozpowszechniania źródeł wraz z produktem, ale to nie znaczy, że nie można ich wstępnie skompilować.
W skrócie: Zapewnij cały autonomiczny, działający pakiet, jeśli to możliwe. Zapewni to największą wygodę użytkownikom.
źródło
To może, ale nie musi dotyczyć twojego przypadku użycia, ale tym, co robimy w pracy, jest folder „Referencje” w każdym oddziale. Umieszczamy tutaj biblioteki DLL stron trzecich. Powoduje to wiele duplikacji względnie niezmiennych plików binarnych w kontroli źródła, ale pamięć jest tania iw każdym momencie każda gałąź i tag ma dokładnie takie zależności (i wersja!), Jakich się spodziewa.
Sami wstępnie kompilujemy zależności i przenosimy skompilowane pliki binarne do tego folderu. Nasza własna wewnętrzna biblioteka współdzielona jest również traktowana w ten sposób. W ten sposób ta sama technika działa w przypadku wstępnie skompilowanych bibliotek zastrzeżonych, bibliotek typu open source i bibliotek wewnętrznych.
Jeśli chodzi o odpowiedź na pytanie teraz, gdy go ponownie przeczytałem, zrób to samo i po prostu wspomnij, że twój projekt używa wstępnie skompilowanej wersji Lua 1.3.5.
źródło
Można się do niego odwoływać w repozytorium (dowolną użyteczną metodą SCM), jeśli ta zależność stanowi integralną część produktu (zależność od źródła), a nie zależność binarna, którą można rozwiązać osobno
To w ogóle nie ma znaczenia. Możesz wybrać dowolną metodę, zgodnie ze swoimi wymaganiami (prędkość / przezroczystość / łatwość zarządzania / itp.)
źródło
Będąc sklepem Eclipse, właśnie zaczęliśmy używać Buckminster do zarządzania naszym procesem kompilacji / montażu / wdrażania.
Naszym pierwszym etapem było usunięcie wszystkich istniejących bibliotek zależnych i pozwolenie Buckminsterowi zająć się zmaterializowaniem poprawnych bibliotek. To sprawia, że wdrożenie jest znacznie szybsze i mniejsze.
Następnym krokiem będzie przeniesienie naszego monolitycznego
svn
repozytorium do szeregu modułowychgit
repozytoriów.Nie wiem, jak dobrze buckminster zintegrowałby się z
git
submodułami (lub podreparatami rtęciowymi w tym przypadku), ale fajnie jest, że buckminster jest agnostyczny w odniesieniu do VCS zastosowanego dla danego komponentu.źródło