Dysk w chmurze dla projektów programistycznych

Pytanie bardzo na luzie. Sprawa wygląda tak, że chciałbym swoje pliki źródłowe (czy to html’e, php, czy .cpp) wrzucić na jakąś chmurę, żeby mieć do nich dostęp na wszystkich urządzeniach.

Zastanawiam się nad Google Drive, OneDrive i Dropbox’em.
Czy ktoś z Was trzyma tak tego typu pliki? Co byście polecili?

Trochę się obawiam Googl’owego Drive’a, czy nie będzie on (MI) tych plików później podsuwać gdzie popadnie. W ostatnio otwieranych, w pasku polecanych do otwarcia plików. Obrazków (elementów graficznych strony np.) wrzucać automatycznie do Zdjęć Google. Jak tych plików z folderami się trochę nazbiera, to może to być jednak dość problematyczne widzieć wszędzie tylko pliki .html i .cpp w polecanych.

Proszę o opinie :slight_smile:

Nie lepiej trzymać takich rzeczy na github? Na telefonie chyba takich rzeczy nie będziesz otwierał. Instalujesz na każdym urządzeniu git i klonujesz sobie zasób po każdej zmianie plików.

Mam kody na GitHubie lub Bitbucket’cie, ale wprowadzenie drobnych zmian, gdzieś poza domem, a potem commitowanie, pushowanie i klonowanie tego wszystkiego troszkę też zajmuje. Stąd pomysł na trzymanie tego w chmurze.

Wiesz że są komputery przenośne? Mają z integroesną klawiaturę i monitor. Można commity i pushe z plaży robić :+1: nawet testy jednostkowe można odpalać i triggerowac buildy na jenkinsie.

Nie polecam ze względu na brak mechanizmów rozwiązywania konfliktów, co oznacza kolizje jeśli któreś urządzenie jest offline. Przykład - najpierw przy pomocy Dropboxa.

Masz plik index.html. Pracujesz sobie z domu, okazało się, że jest literówka w tytule. Poprawiasz i zapisujesz, ale plik się nie zsynchronizował bo akurat nie ma internetu. Wyłączasz komputer.
Następnego dnia jadąc autobusem wpadasz na genialny pomysł żeby dopisać na dole strony “made by blahax99”. Otwierasz telefon, jakiś edytor (prosta zmiana więc nie ma problemu) i dopisujesz. Zmiana synchronizuje się z chmurą bo masz włączoną transmisję danych.
Wracasz do domu i włączasz komputer. Dropbox zgłasza problem z synchronizacją i tworzy dodatkową kopię pliku index.html pod nazwą “index blahax99 conflicted copy (2018-03-01).html”

Powodzenia - teraz musisz ręcznie merge’ować te zmiany. Pamiętasz która zmiana jest nowa, a która stara? Pewnie tak - bo zmieniłeś 2 proste rzeczy. A jakbyś pracował nad trudnym problemem i w jednym pliku miał porównanie x > 0 a w drugim x >= 0 - która wersja jest poprawna? Stracisz dużo czasu na zastanawianie się która wersja jest właściwa i skończysz na skasowaniu jednego z nich żeby nie rozwalać dalej synchronizacji. Generalnie dzieje się tak, bo te systemy nie mają dobrej implementacji rozwiązywania konfliktów.

Tymczasem w krainie gita…

Masz plik index.html. Pracujesz sobie z domu, okazało się, że jest literówka w tytule. Poprawiasz i zapisujesz, robisz git add . a następnie git commit -m "poprawka w tytule". Odpalasz git push origin master ale akurat nie ma internetu. Wyłączasz komputer.
Następnego dnia jadąc autobusem wpadasz na genialny pomysł żeby dopisać na dole strony “made by blahax99”. Otwierasz telefon, jakiś edytor (prosta zmiana więc nie ma problemu) i dopisujesz. Potem na szybko dodajesz i commitujesz. Push też przechodzi bo masz włączoną transmisję danych.
Wracasz do domu i włączasz komputer. Chcesz zaciągnąć zmiany więc robisz git pull - Twoja zmiana (w tytule) i genialny dopisek na dole strony z autobusu łączą się przez narzędzie do merge’owania plików tekstowych. Git wykrywa linie które uległy zmianom i jeśli są to różne linie, nie zgłasza problemu. Teraz wystarczy wypchnąć zmiany na serwer przez git push i masz już do tego dostęp z każdego miejsca.

Tak - to parę dodatkowych komend. Tak - na początku wydaje się to strasznie trudne. Ale uwierz mi, w plikach tekstowych (a takimi są pliki z kodem źródłowym) zdecydowanie warto!

3 polubienia

Jak wyżej. Dyski chmurowe z typową natychmiastową synchronizacją zupełnie się do tego nie nadają. Szczególnie, że projekty miewają nieraz tysiące lub dziesiątki tysięcy często zmieniających się plików. Aplikacja do synchronizacji zupełnie sobie z tym nie radzą (bo nie są od tego).

Programista ze mnie żaden ale z chmur korzystam do trzymania plików dokumentów i powiem szczerze że przy braku dostępu do internetu czy jego niskiej prędkości (teściowie mieszkają na wsi, a robota jedzie za człowiekiem nawet w weekend…) potrafią denerwować albo utrudnić życie nawet jeżeli są tylko “schowkiem” plików pdf. Do tak dynamicznie zmieniających się plików jak programistyczne bym nie ryzykował. Kilka niezależnych synchronizacji i (w lepszym wypadku) natworzysz sobie niezależnych kopii - każda z jedną poprawką, lub (gorszy wypadek) stworzysz jeden plik tylko z ostatnimi poprawkami, a wszystko po drodze będzie zgodne z wersją pierwotną a nie poprawianymi.

https://hubic.com
25 GB za free z moim kodem YKMVYE dostaniesz chyba + 5 GB