Západočeská univerzita Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky
Moderní programovací styly a metody
Nástroje pro správu projektů SouceForge, GitHub a Google Docs
Plzeň 2012
Jan Štěbeták
1
Obsah 1. Zadání ....................................................................................................... 2 2. Verzovací nástroje ................................................................................... 2 3. Popis výzkumných skupin ....................................................................... 3 3.1 Slovník zkratek ............................................................................. 5 3.2 Závěr z průzkumu ........................................................................ 5 4. SVN a Git .................................................................................................. 6 4.1 Subversion .................................................................................... 6 4.2 Git .................................................................................................. 7 5. Migrace projektů ..................................................................................... 8 5.1 SVN to Git .................................................................................... 8 5.2 Git to SVN .................................................................................... 9 6. OpenSource a ClosedSource projekty ................................................... 10 7. SourceForge ............................................................................................. 10 7.1 SVN a IntelliJ IDEA .................................................................... 14 7.2 SVN a NetBeans ........................................................................... 16 7.3 SVN a Eclipse ............................................................................... 19 8. GitHub ...................................................................................................... 8.1 Git a IntelliJ IDEA ...................................................................... 8.2 Git a NetBeans ............................................................................. 8.3 Git a Eclipse .................................................................................
21 24 25 27
9. Správa Dokumentů ........................................................................... 9.1 Google Docs ............................................................................
30 31
10. Závěr ....................................................................................................... 33 Reference ...................................................................................................... 34
2
1. Zadání Projděte výzkumné skupiny na Katedře informatiky a výpočetní techniky a zjistěte, na jakých projektech pracují, které nástroje používají. Analyzujte dostupné verzovací nástroje a nástroje pro správu projektu. Z vybraných nástrojů zvolte nejlepší k doporučení pro katedru. Vytvořte návody pro jejich používání v rámci vývojových prostředí (IntelliJ, NetBeans, Eclipse).
2. Verzovací nástroje Snad každý vývojář, ať už je to student programující semestrální práci či programátor ve firmě, se setkal s potřebou zálohovat svou práci, aby se měl k čemu vrátit v případě, že mu nově přidávaná funkčnost poškodí předchozí práci. Vývojáři neznalí verzovacích nástrojů si zálohují svou práci do složek na disku. V případě, že vstoupí při programování do slepé uličky, nahrají si do svého prostředí projekt z poslední zálohy a pokračují v práci. Často si tyto složky se zálohami pojmenovávají s datem, kdy onu zálohu pořídili. Tento způsob částečně supluje funkci verzovacích nástrojů. Ovšem vývojář s tímto přístupem udělá snadno chybu a změní si zdrojové soubory v jiné složce, než ve skutečnosti chtěl. Verzovací nástroj typu SVN či Git řeší tento problém, neboť nabízí repositář, kde je uchovávána historie změn. Je možné ho mít lokálně na svém počítači, či k němu přistupovat vzdáleně a zdrojové soubory mít v repositáři třetí strany. Každá změna a uložení do repositáře se projeví vytvořením nové revize projektu. Vývojář si může z repositáře stáhnout jakoukoli revizi. Princip ukládání jednotlivých revizí je uveden na obrázku 1.
Obrázek 1: Princip ukládání revizí u SVN
3
Jednotlivec jistě ocení schopnost těchto nástrojů ukládat historii změn souborů a snadný návrat k předchozí verzi. Týmy pak ocení kromě možnosti vrátit se ke starší verzi také sdílený repositář. V tomto repositáři se promítají změny všech vývojářů pracující na jednom projektu. Ti se pak nemusí mezi sebou domlouvat e-mailem, co kdo kde upravil a změnil. Zde jsou uvedeny základní příkazy pro práci s repositáři: Checkout – Stáhne poslední revizi (HEAD) ze vzdáleného repositáře a vytvoří lokální kopii na disku uživatele. Commit – Změny vytvořené vývojářem na své lokální kopii jsou odeslány do sdíleného repositáře. Je vytvořena nová revize úložiště. Commit bývá doprovázen komentářem, co se změnilo a jaký to má účel. Update – Aktualizuje lokální kopii uživatele na revizi, kterou specifikuje. Zpravidla to bývá poslední revize.
3. Popis výzkumných skupin Lidé pracují v rámci výzkumných skupin na projektech často samostatně nebo ve dvou až třech lidech. Výjimkou je skupina pracující na výzkumu EEG signálu, kde jsou zapojeni studenti navazujících studijních programů. Tito lidé se podílí na vývoji jednoho projektu – EEG/ERP portálu. DSS – Využívají především katedrálního SVN pro ukládání zdrojových kódů svých projektů. Jelikož pracují převážně samostatně, nemají potřebu nástrojů pro správu projektů nabízející propracovanou wiki či bugtracker a commit management. Problémy s RTC – špatná integrace s SVN či Git, špatná wiki, možnost integrace pouze s Eclipsem. Jejich projekty: Distribuovaný systém souborů Interaktivní vizualizace komponent Modelování a simulace komponent DSS Sacco – Využívají kromě SVN na projekt i SVN na články. Pro projekty mimo katedru využívají Assemblu. Domluva probíhá často osobně nebo e-mailem. Jejich projekty: Komponenty a vizualizace Simulátor pro testování komponentových aplikací LIKS – Skupina se zabývá sémantickým zpracováním textu a jazykovými modely. Využívají katedrální SVN + wiki, Git, popřípadě mají vlastní SVN bez bugtrackeru s web SVN rozšířením + RSS. Používají nástroje Eclipse a IntelliJ. Chtěli by IntelliJ i pro komerční vývoj, ta však není zadarmo. Domluva probíhá na základě e-mailu, Skype či ICQ. Jejich projekty:
4
Zpracování sémantické informace v textu Lepší jazykové modely Rozpoznávání pojmenovaných entit Embedded systems – Skupina okolo Vlastimila Vavřičky. Využívají katedrální SVN a NetBeans. Nemají žádnou sociální síť. Domlouvají se osobně či e-mailem. Jejich projekty: Průtokoměr Komunikační modul pro Elis Výzkum EEG – Vedoucí týmu je pan prof. Matoušek. Využívali SVN na Origu (Švýcarský poskytovatel, který ohlásil konec provozu k poslednímu květnu). Nutně tedy potřebovali najít jiný vhodný nástroj pro správu projektů, kam by své projekty přesunuli. Mají jeden velký projekt, ve kterém využívají wiki projektu, bugtracker i management dokumentů. Využívají Eclipse a IntelliJ, kterou mají zdarma pro OpenSource projekty. Jejich projekty: EEG/ERP Portal – portál pro ukládání a management EEG/ERP experimentů Eegdsp – knihovna pro zpracování EEG/ERP signálů Transformace do sémantického webu TMRG – Skupina zabývající se textminingem a zpracováním textových informací. Mají koupený server pro skupinu, kde mají soukromé SVN. Nemají potřebu žádných projektových stránek či bugtrackeru. Využívají vývojové prostředí Eclipse a NetBeans. Jejich projekty: Automatická detekce idiomů PageRank – analýza citačních sítí Kontrastní sumarizace textu SAN – Smart Active Node je skupina, která se zabývá implementací aktivního síťového serveru. Využívají SVN od poskytovatele SourceForge. Bugtracker na těchto stránkách existuje, je však prázdný. MISRG – The Medical Information System Research Group je skupina zabývající se informačními systémy pro medicínu. Využívají katedrální SVN úložiště + Flyspray. Každý dělá na jiných částech projektu, nezasahují si tedy do zdrojových kódů. Domluva probíhá osobně, e-mailem nebo telefonem. Jejich Projekt: MRE – Medical Research Education Grafici – Skupina zabývající se kompresí dat + extrakcí 3D dat z videa, triangulací či vizualizací svalových vláken. Využívají grafické datové úložiště zařízené Ladislavem Pešičkou a katedrální SVN. Nemají potřebu bugtrackeru. Používají vývojové prostředí Eclipse či Visual Studio. Domlouvají se osobně popřípadě e-mailem.
5
3.1 Slovník zkratek EEG – Elektroencefalografie – měření mozkové aktivity ERP – Evokované potenciály – Mozkové vlny vyvolané externí událostí SVN – Subversion – Nástroj pro verzování souborů RTC – Rational Team Concert – Nástroj pro týmovou spolupráci při vývoji projektu RSS – Rich Site Summary – Formát pro čtení novinek z webu
3.2 Závěr z průzkumu Na katedře pracují lidé na velkém množství projektů. Na jednotlivém projektu však (až na výjimky) pracují skupiny několika málo osob nebo jednotlivci. Vesměs všichni využívají pro své projekty verzovací nástroje. Nejvíce projektů je umístěno na katedrálním SVN, některé projekty jsou uloženy na soukromých SVN, Pro další projekty je zřízeno úložiště na veřejných platformách. Jednotlivci pracující na nějakém projektu používají pouze úložiště pro svůj projekt, ale již nevyužívají bugtrackery ani wiki stránky. Podle jejich názoru to nepotřebují. Menší skupiny o dvou či třech lidech už využívají bugtrackery, ovšem wiki stránky buď nemají, nebo jsou využity v omezené míře. Dobré vedení stránek o projektu a dokumentace však přispívá k lepšímu začlenění nových lidí do projektu. Lidé pracující na projektu se domlouvají především ústně, neboť spolu většinou sedí v jedné místnosti, nebo e-mailem. Dle jejich názoru by zavádění sociálních sítí nezlepšilo kvalitu komunikace uvnitř skupiny. Zavádění jednoho nástroje pro správu projektů pro celou katedru by nemělo smysl, vzhledem k povaze projektů a používaným úložištím. Stálo by však za zvážení sjednotit nástroje pro správu projektů v rámci jedné vývojové skupiny.
6
4. SVN a Git SVN a Git jsou nejpoužívanější nástroje pro správu projektů na katedře. SVN je na katedře nainstalováno, lze požádat o vytvoření účtu a používat katedrální SVN.
4.1 Subversion Subversion či zkráceně SVN je centralizovaný úložný systém. Uživatelé mají na svém disku uloženou lokální kopii určité revize (zpravidla té poslední). Commit způsobí odeslání změn do vzdáleného repositáře a vznik nové revize. SVN uchovává v každé revizi pouze množinu změn, které byly provedeny na původních souborech (viz obr. 1). Revize jsou označeny číslem. Základní struktura SVN (obr. 2): Trunk je hlavní vývojová větev. Branch je vedlejší vývojová větev. Zde se zpravidla vyvíjí část projektu, která minimálně zasahuje do ostatního kódu. Na konci vývoje se provádí merge do hlavní větve. Tags, nebo také release je uzavřením určité části vývoje a označením revize před dalším pokračováním vývoje.
Obrázek 2: Struktura SVN
7
SVN je snadná pro pochopení a vhodná pro začátečníky. Dále je vhodná pro malé vývojové týmy. Nevýhodou je jeho centralizovanost, uživatel musí být při vývoji stále online, aby mohl provést commit do repositáře a to i v případě, že si chce pouze udělat zálohu své práce. V případě výpadku centrálního úložiště není možné provádět commit, checkout ani update projektu.
4.2 Git Git je distribuovaný úložný systém. Uživatel má na svém lokálním počítači uloženou pracovní kopii repositáře, kterou získal operací checkout. Commit vytvoří novou revizi v lokální kopii úložiště. Teprve příkaz push odešle změny v lokálním repositáři do vzdáleného sdíleného repositáře (obr. 3).
Obrázek 3: Příkazy Gitu Princip vzniku nových revizí je rozdílný od SVN. Git neuchovává pouze změny ale při každém commitu si uloží stav všech stávajících souborů (obr. 4). Pro úsporu místa jsou nezměněné soubory od poslední revize uloženy formou odkazu. Revize nejsou číslovány, každá dostane 40 znaků dlouhý řetězec zvaný SHA-1 hash.
8
Obrázek 4: Princip ukládání revizí u Gitu
Základní struktura Gitu je velice podobná jako u SVN, pouze se hlavní vývojová větev nejmenuje Trunk ale Master.
5. Migrace projektů 5.1 SVN to Git Často se setkáváme s potřebou migrace projektu z jednoho úložiště do jiného. Nejčastěji to bývá migrace z SVN na Git. Nejprve je nutné si nainstalovat Git například ze stránky https://help.github.com/articles/setup-git Zde je návod na stažení, instalace Gitu a vytvoření ssh klíče. Dalším krokem je vytvoření prázdného Git repositáře, kam se později přesune projekt z SVN. Poskytovatelé úložných prostorů poskytují tuto možnost na svých stránkách. Pro migraci projektu je třeba otevřít Git Bash a zadat následující sekvenci příkazů. git svn clone adresa_svn_úložiště –t tags –b branches –T trunk adresář_na_disku Tento příkaz projde historii commitů na SVN a vytvoří lokální git repositář. cd adresář_na_disku git branch –r
9
Tato dvojice příkazů nejprve otevře lokální git repositář a vypíše všechny vývojové větve a tagy. git tag jméno_tagu_na_git tags/jméno_tagu_na_svn git branch –r -d Výše uvedenou dvojici příkazů je nutno opakovat pro všechny tagy v SVN repositáři. Tagy jsou postupně přidány do git projektu. git branch jméno_branche_na_git jméno_branche_na_svn git branch –r -d Výše uvedenou dvojici příkazů je nutno opakovat pro všechny branche (kromě trunku) v SVN repositáři. Branche jsou postupně přidávány do git projektu. git remote add origin poskytovatel:uživ_jméno/projekt.git git push origin --all git push origin master –-tags
5.2 Git to SVN Méně častý je případ, kdy uživatel chce přesunout svůj projekt z Gitu na SVN. Předpokládejme, že uživatel má nainstalovaný Git u sebe, pokud ne, nechť si ho nainstaluje, viz kapitola 5.1. Prvním krokem je vytvoření prázdného SVN projektu. Dále je třeba zadat následující sekvenci příkazů do Git Bash. svn mkdir svn://path/to/project/{trunk,branches,tags} Tento příkaz vytvoří prázdný SVN repositář. git svn clone adresa_prázdného_svn_úložiště adresář_na_disku –-stdlayout Příkaz vytvoří prázdný git repositář s mapováním na prázdný SVN repositář. cd adresář_na_disku git remote add origin poskytovatel:uživ_jméno/projekt.git Projekt.git je projekt na Gitu, který má být migrován na SVN. git git git git
fetch origin checkout –b old_master origin/master repase –-onto master –-root svn dcommit
10
6. OpenSource a ClosedSource projekty OpenSource neboli otevřený software je počítačový software s otevřeným zdrojovým kódem. Uživatel vytvoří repositář pro OpenSource projekt a všichni uživatelé registrovaní na stránkách poskytovatele mají přístup do jeho/jejího úložiště. Tento přístup je read-only, registrovaní uživatelé tedy mohou vidět a stáhnout projekt z úložiště, nemají však možnost zápisu. Měnit zdrojové soubory projektu mohou pouze uživatelé přidaní administrátorem do projektu. ClosedSource neboli uzavřený software je počítačový software, jehož zdrojový kód je neveřejný. Uživatel, který vytvoří projekt u poskytovatele úložiště, se automaticky stává vlastníkem a administrátorem. Tento uživatel specifikuje, kdo má do repositáře přístup, kdo může pouze číst a stáhnout projekt a kdo může měnit obsah zdrojových souborů v repositáři.
7. SourceForge (SVN, Git, Mercurial) Jedna z platforem, kde si může registrovaný uživatel vytvořit repositář pro svůj projekt (https://sourceforge.net/). Úvodní stránka poskytovatele viz obr. 5.
Obrázek 5: Úvodní stránka SourceForge Vytvoření OpenSource projektu je zdarma. Kliknutím na nápis Create se zobrazí stránka s tím, co SourceForge nabízí. Kliknutím na tlačítko Start přejde uživatel na stránku pro vytvoření projektu (obr. 6).
11
Na této stránce uživatel vyplní jméno projektu a vybere z tabulky, co všechno bude jeho/její projekt obsahovat (Projekt může obsahovat úložiště typu SVN, Git či Mercurial současně). Tlačítkem Create bude projekt vytvořen. Je zde také možnost vytvořit projekt starší cestou, kterou SourceForge nabízí. Kliknutím na tlačítko Start a Classic Project bude uživateli zobrazena jiná stránka pro vytvoření projektu. Zde ovšem není možnost výběru vlastností projektu.
Obrázek 6: Vytvoření projektu Projekt je nyní vytvořen. Seznam všech projektů, které má uživatel vytvořený, je k dispozici na stránce s detailem účtu (obr. 7). Na tuto stránku je možno se dostat kliknutím na své jméno v záhlaví stránky. Tlačítkem Account hned vedle jména uživatele se lze přepnout na stránku s nastavením uživatelských informací či změnit heslo
12 .
Obrázek 7: Stránka uživatele Na obrázku 8 se nachází úvodní stránka projektu. Nachází se zde stručný popis projektu, odkaz na jeho webovou stránku a lišta s nástroji pro správu projektu. Files – Tato záložka slouží pro nahrávání souborů či složek například pro dokumentaci projektu. Reviews – Zde se nachází hodnocení a komentáře k projektu. Uživatel má možnost přidat vlastní hodnocení a komentář. Admin – Tato složka je viditelná pouze pro administrátory projektu. Je zde možné nastavit různé doplňující informace o projektu. Zde se přidávají další spolupracovníci do projektu a nastavují se jim práva. Wiki – Zde se nachází správa wiki stránek projektu. Tickets – Zde se zapisují problémy (bugy) projektu či nové nápady. Ty se uzavírají, pokud jsou splněny či opraveny, nebo pokud se řešit nebudou. Git/SVN – Zde je přístup ke zdrojovým souborům projektu, lze zde také prohlížet jednotlivé commity uživatelů. Je zde také umístěna adresa projektu pro nastavení do vývojových prostředí (obr. 9).
13
Obrázek 8: Úvodní stránka projektu
Obrázek 9: Adresa projektu pro vývojové prostředí SourceForge nabízí nástroje pro správu OpenSource projektů s úložišti SVN, Git a Mercurial. Projekt získá webovou stránku pro jeho správu, kde je možné přidávat wiki stránky či obrázky. Důležitou částí, kterou vývojář jistě ocení, je sekce pro přidávání issues (bug či ticket). Ticket dostane své identifikační číslo. Časy vytvoření a uzavření issue reportů jsou uvedeny pouze orientačně. Nevýhodou SourceForge je nemožnost založit si ClosedSource projekt ani za případný poplatek. To znamená, že ke každému projektu, který uživatel vytvoří, budou mít přístup všichni návštěvníci.
14
7.1 SVN a IntelliJ IDEA Projekt je nyní vytvořen a je prázdný. Uživatel má vytvořen projekt u sebe na disku a chce ho nahrát do svého již vytvořeného SVN repositáře například na SourceForge. Jako vývojové prostředí bude použita IntelliJ IDEA verze 11.1.2 (http://www.jetbrains.com/idea/). Na obrázku 10 je projekt, který chce uživatel importovat na SourceForge a první krok, který musí udělat.
Obrázek 10: Import projektu do SVN Kliknutím na tlačítko Import into Subversion se otevře dialogové okno se seznamem projektů. Tlačítkem + uživatel přidá další adresu projektu (obr. 11).
Obrázek 11: Přidání nového projektu
15
Adresa projektu je nyní přidána (kromě trunku je možno nahrávat na branches). Dále je třeba vybrat přidanou adresu ze seznamu a stisknout tlačítko Import. Otevře se nové okno pro výběr složky s projektem (obr. 12).
Obrázek 12: Výběr projektu Po stisknutí tlačítka OK bude uživatel vyzván ke komentáři k prvnímu commitu a zadání přihlašovacích údajů k SourceForge. Po zadání těchto údajů bude projekt importován. Nyní je projekt importován a jiný uživatel si jej bude chtít stáhnout k sobě, aby na něm mohl dále pracovat. První krok, který musí uživatel udělat, je na obrázku 13.
Obrázek 13: Checkout z SVN Dále se zobrazí seznam adres projektů. Pokud se zde adresa požadovaného projektu nenachází, lze ji přidat viz obr. 11. Vybráním projektu a stiskem tlačítka Checkout bude
16
uživatel požádán o výběr složky, kam má být projekt uložen. Pro working copy format uživatel ponechá předem zvolenou možnost. Kliknutím na tlačítko OK proběhne checkout ze vzdáleného úložiště do zvoleného adresáře. Uživatelé pracují na projektu a změny je potřeba odeslat do vzdáleného repositáře. Stisknutím tlačítka commit changes se otevře dialogové okno (obr 14), ve kterém jsou vidět změněné soubory, nastavení commitu a zadání komentáře. Stisknutím tlačítka Commit se odešlou změny do repositáře.
Obrázek 14. Commit Není zde bohužel možnost spojit commit s ticketem jinak, než zapsat číslo ticketu do komentáře. Tickety je nutno uzavírat z webových stránek projektu.
7.2 SVN a NetBeans Uživatel nemusí nutně pracovat pouze s IntelliJ IDEA vývojovým prostředím. Může používat pro vývoj svých projektů také například NetBeans (http://netbeans.org/). Pro následující ukázky práce NetBeans prostředí s SVN byla použito NetBeans verze 7.1.2. Tato kapitola bude mít stejnou strukturu jako kapitola 7.1. V prvním případě má uživatel projekt u sebe a chce ho importovat do vzdáleného SVN repositáře (obr. 15). Uživateli se
17
zobrazí průvodce, kde nejprve zadá adresu úložiště, poté vybere složku s projektem a nakonec zvolí soubory, které se mají importovat.
Obrázek 15: Import projektu Zadaná adresa nemusí obsahovat pouze trunk, projekt může být importován i na větev projektu zadáním „branches“ místo „trunk“. Checkout (obr. 16) stáhne projekt z SVN do složky na disku. Uživatel bude požádán o zadání adresy repositáře s projektem, následně zvolí složku na disku, kam bude projekt uložen. Commit (obr. 17) nahraje změny v projektu do vzdáleného SVN repositáře. NetBeans umožňuje spojení Issue Tracker s některými bugtrackery (např. https://bugzilla.mozilla.org/ či http://kenai.com/bugzilla/). Spojení NetBeans s jinými bugtrackery (např. SourceForge nebo GitHub) se nezdařilo.
18
Obrázek 16: Checkout projektu
Obrázek 17: Commit
19
SVN a Eclipse Základní instalace nástroje Eclipse (http://www.eclipse.org/downloads/) neobsahuje nástroje pro práci se subversion. Uživatel musí SVN do Eclipse doinstalovat (obr. 18). Po vybrání „-All Available Sites--„ uživatel vybere níže označené části v sekci Collaboration.
Obrázek 18: Instalace SVN do Eclipse Jakmile je SVN nainstalováno, je možno provést import projektu do vzdáleného repositáře (obr. 19). Uživatel klikne pravým tlačítkem na projekt, který chce importovat, vybere záložku team a zvolí share project. Stiskem tlačítka Finish bude projekt importován do SVN. Uživatel smí vybrat soubory, které chce nahrát do repositáře. Pro checkout projektu ze vzdáleného SVN musí uživatel vytvořit nový projekt a v other vybrat záložku SVN a vybrat Project from SVN. Po stisku tlačítka Next se zobrazí dialogové okno pro zadání adresy úložiště a vyplnění přihlašovacích údajů (obr. 19). Stisknutím tlačítka
20
a zadání revize bude uživateli nabídnut průvodce pro vytvoření projektu či přidání kódu do již existujícího projektu. Next
Obrázek 19: Import projektu Pro commit projektu do vzdáleného repositáře musí uživatel klepnout pravým tlačítkem myši na projekt, vybrat záložku Team a tlačítko Commit. Uživateli bude zobrazeno dialogové okno pro výběr souborů pro commit a pro zadání komentáře. V komentáři lze přidat číslo bugu z bugtrackeru.
21
8. GitHub Další z platforem, kde si může registrovaný uživatel vytvořit repositář pro svůj projekt (https://github.com/). Úvodní stránka poskytovatele viz obrázek 20.
Obrázek 20: Úvodní stránka GitHub Během vytváření uživatelského účtu na GitHubu si uživatel zvolí, zda jeho/její účet bude obsahovat pouze OpenSource projekty, které jsou zdarma nebo zda bude za své projekty platit. Free - Pouze OpenSource projekty Micro - $7/měsíc, 5 ClosedSource projektů Small - $12/měsíc, 10 ClosedSource projektů Medium - $22/měsíc, 20 ClosedSource projektů Large - $50/měsíc, 50 ClosedSource projektů V záhlaví GitHubu se nachází také nástrojová lišta pro základní práci s uživatelským účtem a vytvořením repositáře (obr. 21).
Obrázek 21: Záhlaví GitGubu Create a new repo - zobrazí se formulář pro vytvoření nového repositáře. Uživatel zadá jméno projektu, zadá stručný popis a vybere, zda bude projekt OpenSource či ClosedSource. Notifications - Přejde na stránku s oznámeními.
22
Account Settings - Zobrazí se nastavení účtu s různými možnostmi (změna hesla, změna platby, organizace, apod.) Log Out - Odhlásí se z GitHubu. Jakmile je projekt vytvořen, uživatel si může prohlédnout všechny své projekty kliknutím na své jméno v záhlaví stránky. Toto zobrazí stránku uživatele se založenými repositáři a nedávnými aktivitami. Na obrázku 22 se nachází úvodní stránka projektu. Nachází se zde stručný popis projektu, odkaz na jeho webovou stránku a lišta s nástroji pro správu projektu.
Obrázek 22: Úvodní stránka projektu Code - Úvodní stránka projektu, kde je zobrazen stručný popis projektu, struktura projektu a adresa pro nastavení přístupu z vývojových prostředí. Nabízí možnost procházení jednotlivých větví projektu či jednotlivých commitů. Záložka Downloads nabízí možnost přidávání a stahování dokumentů k projektu. Network - Nabízí graf větvení projektu a provedené merge. Pull Requests - Uživatel, který nahraje nějakou důležitou součást projektu, oznámí tuto skutečnost vytvořením pull requestu. Ostatní uživatelé by si měli aktualizovat projekt ve své lokální kopii, aby nevznikaly konflikty. Issues - Nabízí bugtracker k projektu. Wiki - Nabízí tvorbu stránek a návodů k projektu
23
Graphs - Nabízí různé typy grafů například frekvenci commitů či změny v kódu (změna, mazání nebo přidávání souborů). Admin - Umožňuje přidávat spolupracovníky, přesunout vlastnictví projektu nebo smazat repositář. Vytvořený repositář je spojen s uživatelským účtem a nemůže mít více administrátorů najednou. Tento problém je řešen možností vytvořit organizaci, kde je možné přidávat jak členy projektu s právy pro čtení a zápis do repositáře, tak i administrátory organizace. Organizaci je možno vytvořit v nastavení uživatelského účtu Account Settings. Zde je možnost převést stávající účet na organizaci. Uživatel ovšem ztratí možnost se k účtu přihlásit, protože to přestane být uživatelský účet, ale účet organizace. Další možností je vytvořit organizaci novou. Taková organizace musí mít jedinečný e-mail. Platební podmínky viz obrázek 23.
Obrázek 23: Platební podmínky organizace GitHub má propracovaný systém nápověd pro uživatele, především pro začátečníky. Obsahuje například jak vytvořit repositář, jak migrovat projekt z SVN na GitHub či jak pracovat s organizacemi. Na rozdíl od SourceForge umožňuje GitHub zakládání i ClosedSource projektů, i když je to za měsíční poplatek. GitHub nabízí pouze Git projekty.
24
Založený projekt získá webovou stránku pro správu projektů, procházení zdrojových kódů či větví a zobrazování grafů. Důležitou součástí je bugtracker a wiki. U issue reportů je pouze přibližně vidět, kdy byl vytvořen a kdy byl uzavřen (najetím myši na údaj lze zobrazit datum), což zesložiťuje zjištění, jak dlouho trvalo jeho řešení. Každý report získá identifikační číslo.
8.1 Git a IntelliJ IDEA IntelliJ IDEA verze 11.1.2 (http://www.jetbrains.com/idea/) podporuje v základním vydání práci s Gitem resp. s GitHubem. Založením projektu na GitHubu vznikne prázdný projekt. Uživatel má své zdrojové kódy u sebe a chce je nahrát do vzdáleného GitHub repositáře (obr. 24). Uživatel bude požádán o zadání přihlašovacích údajů do GitHubu. Po přihlášení se zobrazí dialogové okno pro zadání názvu projektu. IDEA vytvoří nový repositář na GitHubu, proto není nutné ho vytvářet ručně na webových stránkách.
Obrázek 24: Import projektu na GitHub Checkout projektu (obr. 25) stáhne projekt ze vzdáleného repositáře. Uživatel bude požádán o zadání přihlašovacích údajů. Po připojení uživatel vybere ze seznamu projektů na GitHubu ten, který si chce stáhnout k sobě. Dále vybere složku, kam projekt umístit. Projekt (resp. master větev) bude stažen z GitHubu a bude vytvořeno lokální Git úložiště na disku. Ostatní branche projektu se dotahují z repositáře podle potřeby (obr. 26). Uživatel bude požádán o zadání jména větve pro lokální úložiště. Commit jednotlivých změněných souborů do repositáře se provádí podobně jako v kapitole 7.1. Je třeba mít na paměti, že prostý Commit odešle změny do lokálního repositáře, který Git vytváří na disku uživatele. Pro promítnutí změn i do vzdáleného repositáře je nutné použít tlačítko Commit and Push.
25
Obrázek 25: Checkout projektu
Obrázek 26: Práce s větvemi projektu Obrázek 26 rovněž ukazuje možnost vytvoření nové větve v projektu tlačítkem New Branch. Uživatel bude požádán o zadání názvu větve, která bude přidána do repositáře.
8.2 Git a NetBeans Vývojové prostředí NetBeans verze 7.1.2 (http://netbeans.org/) Nabízí podporu pro Git. Pro import projektu na Git je nutné nejprve inicializovat lokální Git úložiště (obr. 27). NetBeans vytvoří ze složky projektu lokální repositář. Tento lokální repositář je nutno odeslat do vzdáleného úložiště. Uživatel vybere záložku Team -> Remote -> Push. Uživateli bude zobrazeno dialogové okno, kde specifikuje adresu úložiště, zadá uživatelské údaje a vybere branche pro import. Checkout projektu z Git repositury se provádí příkazem Clone (Team -> Git -> Clone). Tento příkaz zobrazí dialogové okno pro zadání adresy úložiště a vyplnění přihlašovacích údajů,
26
dále pro výběr vývojových větví a cílového adresáře. NetBeans udělá klon vzdáleného repositáře.
Obrázek 27: Import projektu na Git Pro odeslání změn projektu (obr. 28) je třeba nejprve provést commit, který změní pouze lokální repositář. Uživateli bude zobrazeno dialogové okno. Ten je třeba následně odeslat do vzdáleného úložiště (Remote -> Push). Postup je již stejný jako při importu projektu.
Obrázek 28: Commit projektu
27
8.3 Git a Eclipse Pro práci s Gitem ve vývojovém prostředí Eclipse je nejprve nutné Git do Eclipse doinstalovat (obr. 29), podobně, jako tomu bylo u SVN. Po vybrání „--All Available Sites--„ uživatel vybere níže označené části v sekci Collaboration.
Obrázek 29: Instalace Gitu do Eclipse
28
Pro import projektu je třeba provést několik kroků. Uživatel má na svém disku projekt, který chce nahrát do repositáře. V prostředí Eclipse je nutno nejprve kliknout pravým tlačítkem myši na projekt, Kliknout na Team -> Share Project -> Git. Bude zobrazeno dialogové okno (obr. 30), které vytvoří lokální Git repositář. Dále je třeba provést commit kliknutím pravým tlačítkem na projekt, vybrat Team -> Commit. Uživateli bude zobrazeno dialogové okno (obr. 32). Po commitu je třeba odeslat úložiště do vzdáleného repositáře kliknutím pravým tlačítkem myši na projekt, vybrat Team -> Remote -> Push. Uživateli bude zobrazeno dialogové okno pro zadání adresy repositáře a uživatelských údajů (obr. 31).
Obrázek 30: Vytvoření repositáře Pro stažení projektu z Git repositáře je potřeba importovat projekt: File -> Import -> Git -> Projects from Git -> URI. Uživateli se zobrazí dialogové okno, kde vyplní údaje o vzdáleném repositáři (obr. 31). Po připojení se zobrazí výběr větví projektu a destinace na disku. Dále bude zobrazen průvodce vytvořením nového projektu. Pro commit změn do lokálního repositáře musí uživatel kliknout pravým tlačítkem na projekt, vybrat Team -> Commit. Uživateli bude zobrazeno okno pro commit (obr. 32). Změny budou provedeny pouze do lokálního úložiště, pro odeslání do vzdáleného repositáře je třeba provést Push.
29
Obrázek 31: Checkout projektu
Obrázek 32: Commit projektu
30
9. Správa dokumentů K softwarovým projektům patří jejich dokumentace či psaní vědeckých článků. Tato aktivita je doprovázena potřebou sdílení těchto dokumentů v rámci projektu, členů skupiny či pracovníků katedry. Další potřebou je jejich verzování pro možnost zálohování a návratu k předchozí verzi podobně, jako je tomu při psaní zdrojových kódů. Pro zálohování dokumentů lze použít verzovací nástroje (Subversion či Git). Vytvořením složky pro dokumenty v trunku (masteru) projektu vznikne prostor pro ukládání a verzování dokumentů (obr. 33). Lze pro ně vytvořit speciální projekt, pokud dokumenty nepatří ke konkrétnímu softwarovému projektu. Verzovacími nástroji lze do jisté míry vyřešit i sdílení dokumentů. Je zde ovšem nutnost přidat lidi do projektu, se kterými chce uživatel dokumenty sdílet. Není zde však možnost nastavit, s kým chce uživatel sdílet jednotlivé dokumenty v projektu.
Obrázek 33: Složka pro dokumenty na SourceForge Commit další verze dokumentu lze provést vývojovým prostředím (IntelliJ IDEA, NetBeans či Eclipse). Pokud uživatel nechce otvírat nebo nevlastní podobné prostředí, lze použít nástroj TortoiseSVN nebo TortoiseGit. Problémem u platformy SourceForge je nemožnost vytvoření uzavřeného projektu. Tudíž by ke sdíleným dokumentům měl přístup každý, což není vždy žádoucí. Za ClosedSource projekt na GitHubu se musí platit. Platforma, která umožňuje zdarma vytvářet ClosedSource projekty (s omezením počtu projektů) je Bitbucket. Další možností pro katedrální účely, je vytvoření SVN úložiště pro dokumenty na katedře.
31
9.1 Google Docs Google docs (docs.google.com) je nástroj pro online sdílení dokumentů (obr 34). Je třeba si vytvořit na Google účet, tato operace spočívá v jednoduchém spojení uživatelského e-mailu s účtem. Po přihlášení se uživatel dostane na svou stránku s diskovým prostorem (obr. 35).
Obrázek 34: Google docs Každý uživatel má k dispozici zdarma 5 GB úložného prostoru pro své dokumenty. Tento prostor lze rozšířit na 25 GB za $2.49/měsíc nebo na 100 GB za $4.99/měsíc. Pro nahrání souboru je třeba stisknout tlačítko Nahrát -> Soubory.
Obrázek 35: Stránka s úložným prostorem
32
Po úspěšném nahrání souboru je možnost soubor prohlédnout z úvodní stránky diskového úložiště (obr. 36).
Obrázek 36: Uložený dokument Po otevření souboru lze nastavit, pro které uživatele bude soubor viditelný (obr. 37). Otevřený soubor se dá rovněž upravit.
Obrázek 37: Otevřený dokument Stisknutím tlačítka Sdílet nastaví uživatel přístupová práva formulářem zobrazeným na obrázku 38. Tlačítkem Hotovo jsou změny uloženy. Uživatel může přidané dokumenty mazat. Smazaný soubor je nejprve odeslán do koše, odtud může být obnoven či nenávratně smazán.
33
Obrázek 38: Formulář pro sdílení dokumentu
10. Závěr Analýzou výzkumných skupin na Katedře informatiky a výpočetní techniky bylo zjištěno, že je mnoho projektů, na kterých pracují buď jednotlivci, nebo malé týmy po několika lidech. Tyto malé týmy nemají potřebu používat platformy nabízející nástroje pro správu projektu. Většinou jim postačí SVN s jednoduchým bugtrackerem. Komunikace mezi nimi probíhá většinou osobně či e-mailem. I dokumenty týkající se projektu nebo interní v rámci katedry se předávají e-mailem. Nicméně používat verzovací systém spolu se správou projektu je doporučeno. I když se to může zdát na první pohled zbytečné, vedení stránek projektu a psaní návodů k projektu by urychlilo začlenění nových lidí do projektu. Druhou nezanedbatelnou výhodou je možnost mít projekt a vše ostatní na jednom místě pro všechny. Tento dokument se zabývá rozdíly mezi Subversion a Git. Git je vhodnější pro větší týmy, jelikož poskytuje distribuovaná úložiště. Pro commit do lokálního úložiště nemusí mít uživatel přístup ke vzdálenému úložišti. Tam se odesílá lokální úložiště příkazem push. U SVN jde každý commit do vzdáleného úložiště.
34
Další částí dokumentu je analýza platforem SourceForge a GitHub. Dnešní politika poskytovatelů je nabídnout repositáře pro OpenSource projekty zdarma, protože uživatel OpenSource projekt neprodá. Na druhou stranu se očekává, že u ClosedSource projektu získá vlastník nějaký profit. Proto bývají tyto typy repositáře zpoplatněny. SourceForge poskytuje repositáře pouze pro OpenSource projekty, na druhou stranu poskytuje úložiště jak typu SVN, tak typu Git. Spojování commitů a issue lze pouze udáním čísla issue v komentáři. Platforma GitHub poskytuje zdarma repositář pro OpenSource projekty, ClosedSource projekty jsou zpoplatněny. GitHub nabízí repositář pouze typu Git, je proto vhodnější pro větší týmy. Také díky Pull Requestu, kterým se ostatní členové projektu dozvědí, že se v repositáři udála nějaká důležitá změna. Tito členové pak provedou aktualizaci svých lokálních repositářů a pokračují v práci. GitHub nabízí podobné nástroje pro správu projektu jako SourceForge, navíc umí vykreslovat grafy (frekvence commitů, velikost změn v kódu, apod.). V dokumentu Open source projekty a jejich vývoj jsou rozebrány platformy Assembla a Bitbucket. Assembla nabízí úložiště typu SVN i Git pro OpenSource (zdarma) i ClosedSource (za poplatek) projekty. Assemblu bych doporučil pro OpenSource projekty, pro ClosedSource projekty pouze v případě, pokud má vývojový tým dostatek finančních prostředků. Tyto projekty jsou zpoplatněny. Alternativou pro tento typ projektů je Bitbucket, který poskytuje repositáře zdarma. Naše výzkumná skupina přešla z Origa, které ohlásilo svůj konec, na GitHub především kvůli velikosti projektů a jejich zaměřením na neuroinformatiku. INCF (International Neuroinformatics Coordinating Facility) má na GitHubu skupinu a své projekty.
Reference SourceForge https://sourceforge.net/ [online] GitHub https://github.com/ [online] JetBrains (IntelliJ IDEA) http://www.jetbrains.com/idea/ [online] NetBeans http://netbeans.org [online] Eclipse www.eclipse.org [online] Diskusní fórum StackOverflow http://stackoverflow.com [online] Dowman Paul, Blog http://pauldowman.com/2008/ [online] Bitbucket https://bitbucket.org/