Skocz do zawartości

[Programowanie] Systemy kontroli wersji


GAndaLF

Pomocna odpowiedź

Jeżeli kiedykolwiek pracowałeś nad większym projektem, na pewno:

Bałeś się przystępować do większych zmian żeby nic nie zepsuć, a jak już musiałeś je zrobić, zabezpieczałeś się wieloma backupami. Zaśmiecałeś sobie dysk folderami typu projekt1, projekt2. Wykomentowywałeś duże bloki kodu, żeby dało się je szybko przywrócić jeśli coś przestanie działać. Przypadkowo kasowałeś jakiś ważny fragment, plik, albo nawet traciłeś cały projekt w wyniku awarii, formata itp. W trakcie wprowadzania dużej zmiany musiałeś szybko zrobić małą poprawkę gdzie indziej. Wpadałeś na pomysł dotyczący nowej funkcjonalności, ale najpierw musiałeś dokończyć co innego i o nim zapominałeś. Ciężko było udostępniać kod innym i rozmawiać o konkretnych fragmentach tak żeby było wiadomo o co chodzi.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

git-workflow-feature-branch-1.thumb.png.dac947225df2ddd483116b5dd83977c8.png

Link do komentarza
Share on other sites

Artykuł jest wręcz bajeczny ale wydaje mi się, że lepiej pasował by na 4p**s.pl niż tu. No chyba że mówimy o jakichś systemach wbudowanych i mega projektach sterowania fabryką, bo patrząc na podpis pod logiem "robotyka amatorska" to nie wiem czy ktoś by się w tym maczał budując linefollowera w odróżnieniu do programisty aplikacji webowych.

Link do komentarza
Share on other sites

Ja używam od dłuższego czasu repozytorium Github (tylko lokalnie). Bardzo przydatne narzędzie dla każdego programisty. Nie ważne czy ktoś robi strony internetowe, gry czy programuje minisumo.

Przykładowo: mamy w miarę stabilną wersje programu do naszego robota, ale program dalej rozwijamy. Jeżeli na zawodach coś nie działa, szybko odnajdziemy ostatnią stabilną wersje programu. Ułatwia to też lokalizowanie czy powodem że coś nie działa jest błąd sprzętowy (pęknięta ścieżka czy jakiś styk) czy któraś z funkcji dodana przedwczoraj.

Link do komentarza
Share on other sites

Artykuł jest wręcz bajeczny ale wydaje mi się, że lepiej pasował by na 4p**s.pl niż tu. No chyba że mówimy o jakichś systemach wbudowanych i mega projektach sterowania fabryką, bo patrząc na podpis pod logiem "robotyka amatorska" to nie wiem czy ktoś by się w tym maczał budując linefollowera w odróżnieniu do programisty aplikacji webowych.

Moim celem było pokazanie, że istnieje możliwość takiego podejścia do prowadzenia projektów i może przynieść wiele korzyści. Dzięki temu każdy może samemu ocenić czy mu się to przyda i w jakim zakresie. Kontrola wersji może być niesamowicie przydatna nawet jeżeli zajmujemy się czymś małym. Ja na przykład używam kontroli wersji do projektów na uczelnię w matlabie, dokumentów tekstowych w LaTeX czy programów na mikrokontrolery i PC. Najchętniej używał bym jej do każdej pracy którą robię na komputerze i która zajmuje mi więcej niż godzinę. W zależności od skali projektu decyduję, czy wystarczy mi lokalne repo, czy stawiam projekt z centralnym serwerem, trackerem i wiki.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ja również swoje projekty związane z robotami zacząłem przechowywać jakiś czas temu w repozytorium na serwerze, jest to bardzo wygodne. W moim przypadku, głównie zależało mi na dostępności najnowszej wersji kodu na każdym komputerze.

Link do komentarza
Share on other sites

Artykuł jest wręcz bajeczny ale wydaje mi się, że lepiej pasował by na 4p**s.pl niż tu.
Chyba .net? 🙂 Chociaż fakt, że mamy przekierowanie.

Ja głównie korzystam z Subversion i to nie tylko do projektów firmowych, ale nawet do tak banalnych rzeczy, jak synchronizacja skryptów Greasemonkey w Firefoksie na dwóch kompach. A dzięki kontroli wersji łatwiej rozwiązać konflikt i utrzymać spójność jeśli modyfikuję na dwóch maszynach.

Ostatnio udzielałem się w projekcie (ArduPilot) opartym o Gita, ale muszę przyznać, że nie rozumiem w pełni jego niektórych mechanizmów i praktycznie co każde wysłanie zmian miałem wielki konflikt nawet na plikach, których nie zmieniałem. SVN jest jednak o wiele prostszym narzędziem.

Link do komentarza
Share on other sites

Dla mnie GIT był łatwiejszy do ogarnięcia niż SVN 😉 Każdemu odpowiada co innego. Ja swój kod do MM od dłuższego czasu utrzymuję na repozytorium. Aktualnie nie wyobrażam sobie nie korzystać z systemu kontroli wersji. Przykładowo za 2-3 tygodnie są zawody, mój micromouse jeździ całkiem dobrze i jest dobrze przetestowany. Chcę jednak zmienić coś w sterowaniu robota albo algorytmach wyszukiwania. Tworzę branch'a, modyfikuję kod, dopisuję nowe funkcjonalności. Jeśli zdążę zaimplementować i przetestować nowy kod to bardzo fajnie. Jeśli nie, to zawsze mam dostęp do ostatniej działającej wersji.

Dla mnie lepszym (wygodniejszym) rozwiązaniem jest korzystanie z GIT'a. Jest to rozproszony system kontroli wersji, więc całą historię zmian mam dostępną na swoim komputerze. W przypadku SVN'a wszystkie zmiany są przechowywane na serwerze, natomiast lokalnie mamy dostęp tylko do jednej wersji oprogramowania.

Link do komentarza
Share on other sites

próbowałęm zintegrować jakiś system kontroli wersji z Atmel Studio, pobrałem program "Git Extension" coś poklikałem i straciłem dostęp do jednego z najważniejzych projektów 🤯

Nie wiem co mnie skłoniło na testowaniu tego czegoś na tak ważnym projekcie, ale myślałem że za pomocą tych programów chyba nie da się zepsuć projektu...

Według właściwości eksploratora plików Windows, projekt ma 61 plików, ale przeglądając ręcznie to w środku nie ma nic... podobnie przy kopiowaniu. Mam zablokowane prawa do odczytu i edycji tych plikó, i nei mogę cofnąć tych uprawnień...

Polecenie tree z cmd również nie widzi tych plików... co teraz mam zrobić?

Z tego co widzę to wszystko to wynika z jakiejś mojej manipulacji przy ignorowaniu plików z projektu.

Wygląda jak by folder był zablokowany przez Gita, a zarzem nie istnieje plik gita zarządzający tym folderem...

Przepraszam za chaotyczny opis problemu, ale nie mam kompletnie pojęcia co się stało z moim projektem

Czy jest możliwe że git bezpowrotnie usunął moje pliki?

Czy jeżeli coś zostało usunięte przez gita, mogę to w jakiś sposób przywrócić?

Link do komentarza
Share on other sites

Nie używałem git-a pod windą, ale na "normalnych" systemach repozytorium przechowywane jest w podkatalogu .git projektu. Ponieważ pliki o nazwach zaczynających się od kropki są ukryte, nie widać ich w katalogu - może windows robi podobną sztuczkę? Sprawdź, czy w katalogu z projektem nie masz jakiegoś ukrytego folderu.

Myślę, że taki folder będzie, skoro eksplorator widzi 61 plików...

[ Dodano: 14-02-2016, 10:23 ]

Git oczywiście może usunąć pliki, ale z tą bezpowrotnością to bym nie przesadzał. Nigdy nie należy uczyć się nowych narzędzi na ważnych danych - albo chociaż najpierw trzeba robić kopię bezpieczeństwa.

Teraz powinienes od tego zacząć, zrób kopię katalogu z projektem (albo spakuj zip-em czy innym programem).

Nie jak działą "git extension", ale sam git to bardzo stabilne narzędzie i nie robi nic, bez zgody użytkownika. Tylko nie wiem, co mu kazałeś zrobić 🙂

Natomiast samo "zablokowanie" plików to tylko atrybut "read-only" - wystarczy w explorerze otworzyć właściwości i skasować atrybut. Więc to nie problem.

  • Lubię! 1
Link do komentarza
Share on other sites

Na początek powiem że doszedłem do wniosku że lepiej będzie z głowy zmodyfikować ostatni backup i zrobić z niego coś bardzo zbliżonego do projektu który straciłem. Już udało mi się to ręczne zrobić, chyba zmiany jakie wczoraj wprowadziłem do starej wersji projektu są porównywalne do tego co straciłem, jak bym tylko na 100% pamiętał wszystkie zmiany jakie tam wprowadziłem wcześniej...

Natomiast samo "zablokowanie" plików to tylko atrybut "read-only"

Sęk w tym, że komputer nie pozwala mi nawet zdjąć tych atrybutów, już wczoraj to sprawdzałem.

Włączyłem również w Windowsie funkcję "pokaż ukryte pliki i foldery" i pojawiło mi się pełno plików, ale to były tylko jakies pliki gitowe, nie wiem jak je wykorzystać. Z ciekawości mogę Ci na PW podrzucić ten workspace, ale ja już i tak tych plików nie potrzebuję.

W każdym razie dzięki za pomoc 😉

Btw, a co Waszym zdaniem jest najlepsze do kontroli wersji projektów stworzonych na Atmel Studio 7?

Link do komentarza
Share on other sites

Ja przez wiele lat używałem SVN-a, ale teraz nie zamieniłbym git-a na nic innego. Na początku wymaga trochę nauki i przyzwyczajenia, ale później jest już tylko lepiej. Więc bardzo polecam - pakowanie się w system z centralnym repozytorium to moim zdaniem pomyłka.

Podejrzewam, że te zablokowane pliki to tylko kwestia złego użycia programu... Chociaż pod windowsem mam mało doświadczenia z gitem, to nie sądzę żeby aż tak źle działał.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.