Systemy kontroli wersji dla projektów sprzętowych?

59

Jakie są dobre systemy kontroli wersji dla projektów sprzętowych? Czy istnieją odpowiedniki kodu Google, CVS i SVN? Czy takie systemy kontroli wersji są odpowiednie dla projektów sprzętowych obejmujących pliki PCB, schematy ... (nawet kod oprogramowania)?

cksa361
źródło
5
Świetne pytanie! Chciałbym zobaczyć przykłady repozytoriów zawarte w odpowiedziach.
tyblu
+1 Za uznanie, że projekty HW mogłyby skorzystać z kontroli źródła. Faceci, z którymi pracuję, zdają się mieć trudności z realizacją tego.
Nate
1
Od jakiegoś czasu korzystam z Mercurial do wersji płytek drukowanych, co kilka razy uratowało mi tyłek. Zdecydowanie dobry pomysł.
Stephen Collings,
1
Korzystam z pakietu narzędzi gEDA dla EDA i śledzę rzeczy w git. Niedawno napisałem kilka haczyków git, które automatycznie generują obrazy .png dowolnych zmodyfikowanych schematów lub PCB i dodają je do zatwierdzenia. To pozwala mi skorzystać z różnic obrazu GitHub. PCB i gschem mają również natywne narzędzia do porównywania, które działają z git, które robią coś podobnego lokalnie. Moje haczyki są tutaj: github.com/BenBergman/.git_hooks Przykładowy projekt, który ich używa: github.com/BenBergman/uJoypad
ben

Odpowiedzi:

27

Zasadniczo wszystkie systemy VCS mogą z łatwością obsługiwać pliki tekstowe i binarne. Oczywiście nie można łączyć tych binarnych.

Tak długo, jak nie używasz przestarzałych rzeczy, takich jak CVS, będziesz dobry w ŻADNYM systemie.

BarsMonster
źródło
3
Używam CVS do wszystkich moich projektów (oprogramowania i sprzętu, z płytkami drukowanymi, oprogramowaniem układowym, narzędziami itp.) I nie mam problemu. Jasne, CVS jest przestarzały, ale mam 20 lat historii projektu i żaden konwerter nie pracował w celu migracji moich repozytoriów do Mercurial lub SVN.
Axeman
12
Zatem pragmatycznym sposobem jest po prostu pozostawienie starych rzeczy w CVS, a następnie umieszczenie nowych rzeczy w nowym systemie ...
Johan
CVS to piękny system w porównaniu do horroru jakim jest Microsoft Visual Source Safe, w którym jestem zamknięty dla projektu, nad którym obecnie pracuję. Blech.
Kevin Vermeer
@Kevin Vermeer Wiesz, że jesteś po ujemnej stronie skali, gdy porównujesz ze sobą dwie „niezbyt miłe” rzeczy;)
Johan
@KevinVermeer, musiałem użyć Sourceafe, zmorę świata kontroli wersji. Mój ostatni szef pozwolił z tego powodu całkowicie zaniedbać kontrolę wersji.
Kortuk
17

Wcześniej korzystałem z Subversion z Altium. Działa z powodzeniem, ale w tym czasie brak narzędzia różnicującego czyniło go mniej użytecznym niż kontrola wersji z kodem. Nadal uważam, że warto było to robić, nawet bez możliwości różnicowania.

W przypadku oprogramowania układowego zarówno Subversion, jak i Git są świetne. Jeśli nie korzystałeś wcześniej z Git, najpierw wypróbuj Subversion (nawet jeśli później utrudni to naukę Git).

Altium niedawno wprowadziło narzędzie do porównywania schematów i obwodów drukowanych, więc oczekuję, że Subversion będzie teraz świetne, modulo zwykłe szaleństwo, które producenci EDA potrafią wbudować w swoje produkty.

Chciałem to wypróbować za pomocą nowego narzędzia do porównywania; jeśli to zrobię, postaram się pamiętać, aby opublikować tutaj link do repozytorium jako przykład.

Aktualizacja

Wypróbowałem to i muszę powiedzieć, że jestem trochę rozczarowany narzędziem do różnicowania Altium. Jest funkcjonalny, ale zmiany między obrotami płyty są na tyle znaczne, że nie są tak przydatne, przynajmniej dla mnie. Widząc to, postanowiłem zapomnieć o narzędziu do porównywania i po prostu użyć Github. Oto repozytorium, jeśli jesteś zainteresowany: https://github.com/rascalmicro/pcb

pingswept
źródło
Czy korzystałeś ze zintegrowanego graficznego interfejsu użytkownika SVN (z Altium) czy z zewnętrznego?
Nick T
Najnowszy Altium z SVN jest świetny, chociaż dodam, że wersje PCB / schematów nie są tak krytyczne jak w kodzie. Jeśli masz do czynienia z ponad 3-4 maksymalnymi wersjami schematów / wersji PCB, prawdopodobnie coś jest bardzo źle w fazie projektowania lub wymagań.
Mark
@Mark: Czy mówisz o wersji beta 10 lub lato 09?
Nick T
2
Jeśli zmiany między obrotami planszy są na tyle znaczne, że nie są użyteczne, nie podejmujesz wystarczająco często. Zaangażuj się wcześnie, często popełniaj! Użyj tagów, aby śledzić obroty tablicy.
Kevin Vermeer
3
Korzystam z SVN i zdecydowanie warto. Mój system jest taki: nacisnąłem przycisk Zapisz, powinienem prawdopodobnie dokonać zatwierdzenia. Śledzę zmiany, czytając komunikaty zatwierdzania, takie jak „Dodano część X do biblioteki” lub „Dodano pola testowe do magistral I2C i SPI”. Wydania wysłane do produkcji są zupełnie inne, użyj, svn cp trunk/ tags/releaseX/aby zrobić migawkę wydania. Następnie możesz różnicować plik releaseX / file i releaseY / file, jeśli chcesz zobaczyć zmiany między wydaniami lub możesz przeglądać dzienniki zatwierdzeń i zobaczyć poszczególne zmiany. Oddziały pomagają w modularyzacji zalewu zobowiązań.
Kevin Vermeer
10

Używam VisualSVN Server + TortoiseSVN i działa dobrze

vicatcu
źródło
7

Używam Google Code do hostowania Super OSD , mojego projektu elektronicznego.

Używam wyłącznie pakietu gEDA do zarządzania moimi schematami i PCB. Przydatnie, gEDA tworzy pliki tekstowe (które są w większości czytelne dla ludzi, chociaż trudno je interpretować) dla schematów zamiast binarnych obiektów blob, takich jak Eagle. Na przykład jest to różnica między dwoma schematami , jednym około 5 dni i tym, który właśnie wypchnąłem. Nie jest to szczególnie przydatne, ponieważ w rzeczywistości nie widzisz dużych zmian w plikach tekstowych, ale może pokazywać względne zmiany - tj. Ogromną przeróbkę w porównaniu do zmiany pojedynczego składnika - i pozwala wrócić do poprzednich wersji.

Thomas O
źródło
3
+1 za użycie formatów tekstowych dla plików. Miejsce na dysku jest tanie, a kompresja tekstu jest łatwa. Chciałbym, aby binarne obiekty BLOB były mniej powszechne.
Kevin Vermeer
4

Sztuką jest użycie czegoś, co dobrze działa z plikami binarnymi. Jeśli często używasz plików binarnych i udostępniasz je innym, może być korzystne wdrożenie mechanizmu blokującego na tych plikach binarnych. Mamy wiele problemów z używaniem Subversion do plików binarnych i dzieleniem się z innymi, które powstały z powodu braku blokowania semantyki i nadmiernego zapisu / scalania plików binarnych razem. Dodanie mechanizmu blokującego do tych plików usuwa błąd ludzki w komunikacji na temat tego, kto edytował / zmienił plik binarny.

Jeśli wcześniej nie korzystałeś z kontroli wersji, zalecamy zapoznanie się z różnymi sposobami ich działania i wybranie jednej z nich, aby zaspokoić Twoje potrzeby, z którymi Ty i / lub Twój zespół możecie czuć się swobodnie. Rozproszone systemy kontroli wersji zapewniają wiele korzyści w porównaniu z systemami klient-serwer, ale praca z nimi jest bardziej skomplikowana.

J. Polfer
źródło
3

Dlaczego nie skorzystać z Google Code lub repozytorium SVN? Ponieważ jest to system kontroli wersji. Nie ma określonego zastosowania. Jest to po prostu niezwykle przydatne dla wielu programistów i monitorowania zmian w kodzie źródłowym.

Dziekan
źródło
1
Zrobiłeś to? Umieszczenie plików binarnych w SVN lub Mercurial okazało się dla mnie strasznie.
tyblu
2
Nie, nie zrobiłem tego, ale użyłem SVN nie tylko do kodu źródłowego. Rzeczy takie jak pliki PDF i .txt.
Dziekan
2
@Tyblu co masz na myśli mówiąc „okropny”? Zrobiłem to z plikami schematów i układów, a to działa świetnie dla mnie z subversion.
Kellenjb
Nie mogę śledzić zmian w plikach EAGLE w Mercurial. Wygląda na to, że cały plik jest inny. Czy masz repozytorium, w którym mogę zajrzeć?
tyblu
5
@tyblu dlatego dodajesz komentarze podczas meldowania się w plikach :)
vicatcu
3

Wcześniej korzystałem z Subversion z Altium.

Używam SVN z integracją Altium do przechwytywania schematów: działa dobrze. Muszę powiedzieć, że przeglądarka różnic jest lepsza niż nic, ponieważ moje pliki SchDoc są binarne, tzn. Niemożliwe do porównania inaczej! Bez problemu korzystam z klienta SVN zintegrowanego z Altium Designer równolegle z TortoiseSVN. Klient Altium jest nieco ograniczony pod względem funkcji SVN. Robię swoje „tagi” za pomocą Tortoise.

Moja opinia oparta jest na Altium Designer 10 build 27009 i wersji 13.1 build 27559.

Tylko 1
źródło
2

SVN, HG i GIT działają dobrze.

old_timer
źródło
1

Nie jest to prawdziwy system kontroli wersji, ale Dropbox obsługuje również rewizję plików i udostępnia je różnym osobom na różnych systemach operacyjnych. - zły system kontroli wersji mans;)

powtac
źródło
2
jako ktoś, kto wcześniej pracował z zespołami: Proszę nie rób tego. Dropbox nie jest systemem kontroli wersji biedaka . To system udostępniania / archiwizacji plików. Nie musisz używać gita w pełnym zakresie, aby był bardziej przydatny, naprawdę! Dropbox robi wszystko źle, co nawet CVS zrobił dobrze (jak radzić sobie z nowszymi wersjami, jak wymieniać zmiany, jak oznaczać konkretne wersje), to naprawdę nie jest system kontroli wersji .
Marcus Müller,
1

Byłem w Maker Faire w San Mateo w miniony weekend i spotkałem przedstawicieli z nowej (dla mnie) firmy o nazwie Up-Verter . Zasadniczo budują elektryczne narzędzie CAD, które działa w „chmurze” (tj. W przeglądarce) i jest koncepcyjnie zbudowane wokół współpracy, więc powinno zajmować się scalaniem / różnicowaniem i zwykłymi wersjami.

Jeszcze go nie wypróbowałem i wciąż wygląda trochę zielono (nie sądzę, że możesz zrobić układ pcb, tylko schematy), ale to trochę intrygujące. Twierdzili, że mogą importować pliki Eagle, co jest plusem.

Rozmawiałem również z przedstawicielami Eagle w namiocie Element 14, i wskazali, że przechodzą do formatu XML, co jest swego rodzaju dużym krokiem w kierunku uczynienia wersjonowania schematów i układu bardziej wiarygodnymi ... wszystkie interesujące ulepszenia na tym froncie !

vicatcu
źródło
0

To jest naprawdę bardzo dobre pytanie. Ponieważ układy FPGA należą do kategorii „sprzęt”, możesz zainteresować się strukturą przyjazną dla kontroli wersji, którą proponuję dla projektów FPGA:

http://www.saardrimer.com/fpgaproj/

Myślę, że pomysły i koncepcje można łatwo zastosować do innych projektów sprzętowych i ogólnie. (Komentarze do tej propozycji są bardzo mile widziane, btw.)

Saar Drimer
źródło
2
Link już nie działa.
tyblu
0

Unikaj gita. Nie radzi sobie dobrze z dużymi repozytoriami. A twoje repozytoria staną się duże, chyba że ty

  1. Mają binarne pliki schematów, które zmieniają się tylko w niewielkim stopniu
  2. Włącz traktuj pliki binarne jako tekst.
Brian Carlton
źródło
3
Cóż ... Powinieneś mieć wiele małych repozytoriów, po jednym repozytorium na projekt.
Johan
1
@Johan - ...... Tak ... Powodzenia z koszmarem związanym z konserwacją. W każdym razie mam 1 repozytorium na klienta (obecnie około 4 repozytoriów), z wieloma podprojektami i działa całkiem dobrze. Wydaje się, że SVN jest w stanie obsłużyć ponad 5 GB danych binarnych bez większych problemów.
Connor Wolf
1
@ConnorWolf Chciałbym usłyszeć, jak to robisz. Robimy jedno repozytorium Git na projekt i nie mieliśmy problemów. Brak jednego repozytorium na projekt to dla mnie koszmar konserwacji.
Matt Young,
1
SVN przynajmniej (prawdopodobnie również git) wydaje się przechowywać binarne pliki różnic, a nie kompletne kopie pliku, dzięki czemu zajmuje imponująco mało miejsca.
Connor Wolf,
1
@ConnorWolf re: koszmar konserwacji: 8 lat później: git-submoduły są prawdopodobnie tym, czego chcesz tutaj. Ma to sens szczególnie wtedy, gdy udostępniasz np. Standardowe elementy narzędziowe wielu projektom lub klientom.
Marcus Müller,
0

Używałem do tego wielu repozytoriów Mercurial (HG) (po jednym na projekt), ale jak zauważy większość systemów kontroli wersji, repozytoria stają się coraz większe.

Nate
źródło
0

Powinieneś spróbować Dzika . Jest zaprojektowany od podstaw do obsługi dużych plików i repozytoriów. 100 GB lub więcej danych binarnych nie stanowi problemu.

Mats Ekberg
źródło
0

Chciałbym tylko dodać link do HgInit, doskonałe wprowadzenie do Mercurial, jeśli zdecydujesz się wybrać tę trasę. Osobiście używam Git, ale są bardzo podobne pod względem architektury (oba są rozproszonymi systemami kontroli wersji). Ich rozproszony charakter sprawia, że ​​świetnie nadają się do pracy w dobrze „rozproszonych” zespołach. :)

http://hginit.com/

Bernhard Hofmann
źródło
Chociaż Mercurial jest dobrym systemem kontroli źródła dla „czystych” projektów oprogramowania, wiele jego zalet jest traconych w projektach, które dotyczą zasadniczo czysto binarnych plików, ponieważ nie jest w stanie sensownie łączyć rzeczy. Lekcje HgInit nie będą miały sensu, chyba że zajmujesz się wyłącznie oprogramowaniem.
whatsisname
0

Warto o tym pomyśleć przy każdym ascii opisie sprzętu. Po przyjęciu czytelnego dla człowieka opisu sprzętu, każdy nowoczesny system kontroli wersji (RCS) działa całkiem dobrze. Układy obwodów są zazwyczaj w pełni opisane przez pliki Gerbera, UML opisuje inne części, które są w pełni opisami ascii. Istnieją mniej standardowe formaty ascii dla schematów, układu mechanicznego i tak dalej (na przykład KiCAD).

Adopcja jest bardziej praktycznym zagadnieniem, wymaga uznanego wymogu dobrej kontroli wersji, w tym znaczącej różnicy. Co często oznacza także rezygnację z Worda, Excela, PowerPointa itp. Bardzo trudny argument przeciwko menedżerom i MBA, ale prawdopodobnie regulowane branże, takie jak wyroby medyczne, lotnictwo i wojsko, już wymagają dobrej kontroli zmian.

Jak zauważyli inni, większość współczesnych RCS zmieni kontrolę plików binarnych, co jest bardzo przydatne do archiwizacji i identyfikacji wersji - ale każdy elektroniczny system zarządzania dokumentami (EDMS), na przykład Agile, może przypisać numer wersji do dowolnego pliku binarnego. Nudny.

sasguy
źródło
0

Chociaż nie jest wolny i nie jest wolny od błędów, skarbca Altium wykonuje znakomitą robotę; Z łatwością mogę cofnąć się do dowolnego punktu zatwierdzenia (tak jak powinien to zrobić każdy VCS).

W tym obszarze, Altium jest droga przed Premium (Mentor i Cadence) narzędzia.

Ja nie pracować dla Altium ale to narzędzie, mimo obecnych problemów, należy kompletny sprzęt wersjonowania bardzo proste.

Peter Smith
źródło
I to prawdopodobnie jest jedna rzecz, dla której Krypta jest dobra ...
Matt Young,
Sposób UNIX; zrób jedną rzecz i zrób to bardzo dobrze.
Peter Smith,