Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Berkeley Humanoid Lite (Onshape, GitHub) je open source humanoidní robot. V amerických cenách jej lze sestavit do 5000 dolarů.
Jakub Jelínek oznámil vydání verze 15.1 (15.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 15. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
U distribuovaných systémů se nemusíme omezovat na klasické uspořádání server-klienti, ale pravděpodobně s ním stejně začneme:
Vzdálené úložiště bude společný server a každý vývojář bude mít na svém počítači místní úložiště
(kompletní historie změn bude uložena v adresáři .hg
, .git
nebo .bzr
případně jiném podle použitého systému).
Pracovní kopii pak tvoří soubory větve, nad kterou aktuálně vyvíjíme.
Po postoupení změn (commit) vzniká verze – sada změn (changeset) a vše se zatím odehrává na našem počítači v příslušném adresáři začínajícím tečkou. Teprve po odeslání změn (push) se naše práce objeví na serveru. Pokud jsme tedy zvyklí na Subversion a vyhovuje nám, uděláme vždy commit a hned po něm push a nic moc se pro nás nemění.
Jak jsme si ale řekli, máme i jiné možnosti. Z počítače na obrázku označeného jako „vzdálené úložiště“ můžeme třeba odesílat změny (push) na zálohovací server, nebo naopak ze zálohovacího serveru provádět pull – je jen na nás, odkud tu akci budeme chtít provádět. Kromě zálohovacího serveru můžeme mít také úložiště pro veřejnost – uživatelé tak svým stahováním nebudou zatěžovat server, na kterém pracují naši vývojáři.
Když některý vývojář zpřístupní ostatním svoje úložiště (přes SSH, HTTP, sdílený disk…), můžou si ostatní stahovat změny (pull) nebo mu naopak přispívat (push), aniž by změny musely projít přes centrální úložiště. To nakonec nemusíme mít vůbec – každý pracuje na svém a občas se synchronizují.
Scénář práce resp. uspořádání úložišť a tok změn mezi nimi si teď můžete vymyslet podle svého vkusu a fantazie. Inspirací vám budiž scénáře popisované v příručkách k jednotlivým systémům. Přičemž platí, že scénář nebo postup popisovaný u jednoho z distribuovaných systémů půjde většinou uplatnit i u jiného – takže se rozhodně nebojte podívat se ke „konkurenci“:
Jedním z možných scénářů je např. „správce integrace“ – v tomto případě správce (pověřený člen týmu, zkušený vývojář) stahuje změny od jednotlivých členů, kontroluje kód a schválené změny postoupí opět do jakéhosi „centrálního“ úložiště – a z něj si členové stáhnou změny ostatních (ale sami tam zapisovat nemohou).
Mercurial, Git a Bazaar tvoří asi nejznámější a nejpoužívanější trojici. Další systémy z této kategorie jsou: Monotone, Darcs, Fossil a GNU arch. Následující programy vznikly přibližně před pěti lety a mají k sobě velmi blízko – jak svojí koncepcí, tak svými kvalitami.
Mercurial (hg) je dílem vývojáře Matta Mackalla a společnosti Selenic. Je snadné se tento systém naučit a používat ho. Je napsaný v Pythonu (binární diff je implementovaný v jazyce C). Není problém ho provozovat na různých platformách. A k dispozici je i řada zajímavých rozšíření. Mercurial je svobodný software vydaný pod licencí GNU GPLv2.
Kdo např. používá Mercurial: Netbeans, Mozilla, GNU Octave, OpenOffice.org, Xen, Dovecot.
Původním vývojářem Gitu není nikdo menší než Linus Torvalds, autor Linuxu. Dnes ho v počtu commitů do Gitu předběhli Junio C Hamano a Shawn O. Pearce. Git byl vytvořen jako náhrada proprietárního BitKeeperu, který se do té doby používal pro verzování linuxového jádra. Je napsaný v jazyce C, Bashi a Perlu. Nabízí prakticky neomezené možnosti, byť někdy za cenu trochu složitějšího ovládání. Stejně jako Mercurial je i Git licencovaný pod GNU GPLv2.
Kdo např. používá Git: Linux (jádro), Amarok, GIMP, PostgreSQL, GNOME, VLC.
Autorem Bazaaru (bzr) je Martin Pool a vývoj sponzoruje firma Canonical (Ubuntu). Je napsaný převážně v jazyce Python. Klade velký důraz na uživatelskou přívětivost a disponuje pěkným GUI. Stejně jako předchozí dva systémy i Bazaar je vydaný pod GNU GPLv2.
Kdo např. používá Bazaar: Ubuntu, GNU GRUB, Inkscape, Squid, Stellarium, GNU Wget.
Ještě než začnete přemýšlet, který verzovací systém je ten nejlepší, je třeba si přiznat, že většinou si nebudeme moci vybírat. Když se budeme chtít zapojit do vývoje nějakého svobodného softwaru nebo se nechat někde zaměstnat, budeme se muset přizpůsobit tomu, co se v daném týmu používá. Hodí se proto umět základy každého systému (alespoň těch tří nejpoužívanějších). Základní principy jsou naštěstí dost podobné – a ten zbytek se naučíte za chodu.
Pokud jsme v roli šéfa týmu nebo samostatného vývojáře, tak si můžete vybírat prakticky libovolně. Ani zde ale nejde určit nějaký „jeden nejlepší verzovací systém“. Situace je poměrně vyrovnaná. Pravděpodobně tak pro nás nebudou až tak důležité vlastnosti systému samotného, jako spíš jeho podpora v používaném IDE, editorech, možnost integrace s dalším softwarem (správa chyb a požadavků, testování, průběžná integrace atd.), nebo znalosti a preference ostatních členů týmu.
Následující obrázek se snaží zachytit velikost pozitivních změn, přínosů plynoucích z přechodu na „vyšší“ technologii.
Za nejhorší možnou formu spolupráce můžeme považovat posílání si souborů e-mailem –
zde je téměř nemožné zachovat si v souborech pořádek a zároveň duševní zdraví,
neustále budeme trpět např. problémy s tím, že analýza-1.2.3.xmi
která přišla mailem,
je „trochu novější“ soubor než analýza-1.2.3.xmi
, kterou máme zrovna na disku… nebo není, ale to nikdo neví.
Trochu si pomůžeme, když si přestaneme posílat e-maily a pořídíme si nějaký sdílený disk –
konečně všichni vidíme ty stejné soubory a není v tom takový guláš.
Ale zase se nám stane, že „Pepa něco upravoval, ale Honza tam mezitím uložil svoji verzi a Pepova práce je teď v čudu“ a podobné nepříjemnosti.
Největší pokrok uděláme, když zavedeme verzovací systém – a to jakýkoli. Odpustíme protentokrát posměšné komentáře, jak je ten Subversion hloupý, nebo ten CVS nemožně zastaralý – i tyto systémy nám výrazně pomůžou a ušetří práci. V některých týmech se CVS používá dodnes a jsou za něj rádi.
Dalšího poměrně velkého pokroku dosáhneme přechodem od centralizovaných verzovacích systémů k těm distribuovaným. Změnou v rámci této skupiny si už pomůžeme minimálně nebo vůbec – takže hádat se, zda je lepší to či ono je celkem zbytečné. Ať už si vyberete Mercurial, Git nebo třeba Bazaar, neuděláte chybu. Nesmíme zapomínat na to, že tyto systémy jsou v první řadě nástrojem, nikoli cílem našeho snažení – tím je vývoj softwaru případně jiná činnost.
Navíc výběr verzovacího systému není nic jako „manželství na celý život“ – máme poměrně dobré možnosti konverze mezi jednotlivými systémy. Např. pomocí příkazu:
$ hg convert pokus123
vytvoříme z gitovského projektu pokus123
projekt v Mercurialu (vznikne nám nová složka pokus123-hg
),
a to včetně všech větví (branches) a štítků (tags).
Připravit se o historii naší práce je tedy zcela zbytečné (totéž platí i pro přechod z centralizovaných VCS).
Vždy je dobré konvertovat staré úložiště a ne jen zkopírovat poslední verzi do toho nového.
Dnes jsme se seznámili s obecnými vlasnostmi distribuovaných verzovacích systémů a uvedli si pár důvodů, proč je používat místo těch centralizovaných. Po tomto teoretickém úvodu se v následujících dílech seriálu podíváme podrobněji na jednotlivé systémy (příště Mercurial a v dalších dílech přijde řada na Git a Bazaar), povíme si o jejich odlišnostech a ukážeme si praktické používání.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Nevím kdy jste to naposled zkoušel, ale mě funguje bez problémů na starších počítačích (je-li středně velký projekt 100k řádek a 3k revizí). Ve výkonu udělal bazaar hodně velký skok asi před rokem a teď mi přijde skvělý.Nezkoušel jsem ho několik let, protože už byl Git, takže asi tak. Každopádně díky za informaci.
good clanek , ale jeste mi chybi info o DARCS
git prune --expire all git gc --aggressive --prune
git i mercurial jedou bez problemu i na widlich .... m ale na usb flash bych nedaval nic duleziteho ..., a pozor co to ma za verzi fat ... omezeni na 512 souboru odpovida tak fat16:)
jak v cem ... gentoo jeste nepreslo z cvs na git protoze checkout portage pro 1 developera proste server nezvladl ... 16giga ram na 1 kompletni ceckout bylo proste malo ..
Zajímalo by mě, jak by to fungovalo s CVS, ale asi dobře, protože tam se verzuje každý soubor zvlášť + tagy.Hádal bych, že log pak musí být zákonitě daleko pomalejší než v gitu, právě proto, že jsou commit objekty dost minimalistické. Z jiných důvodů možná, ale z tohoto bych řekl, že by měl vyjít opačný výsledek.
jak v cem ... gentoo jeste nepreslo z cvs na git protoze checkout portage pro 1 developera proste server nezvladl ... 16giga ram na 1 kompletni ceckout bylo proste malo ..Otázka je, proč to ten vývojář checkoval do RAM :).
Těch 16GB nestačilo na serveru. To nemá s vývojářem nic společného.Můj osobní odhad je, že 16GB RAM na serveru k tomu checkoutu zdaleka nebylo potřeba. A chyba bude někde jinde, ať už v dezinformaci nebo že těch 16GB RAM nestačilo úplně něčemu jinému. Ono si to stačí představit, checkout od serverou vyžaduje pouze vydání všech packů, jednoho po druhém. Tzn pokud ten server zvládne ty packy nabídnout přes SCP/FTP/whatever, celkem logicky zvládnout i přes Git. Je to jen odesílání souborů přes buffer.
... V některých týmech se CVS používá dodnes a jsou za něj rádi. ...Vyznívá mi to, jako by CVS mělo být něco raritního. Přitom nemálo organizací CVS normálně používá a neberou to jako výrazný handicap (resp. to považují za nejlepší řešení). Ono to má několik důvodů. Zaprvé to je konzervatismus (klidně můžeme říct zkostnatělost) - zejména u větších organizací spravujících mnoho projektů je strach z negativních dopadů změn velký. A oprávněný. Zadruhé jsou to časové kapacity uživatelů. Projektů je hodně, často se nestíhá a zkrátka nebývá čas, aby se uživatelé učili něco nového (relativně nepotřebného), i kdyby to v konečném důsledku bylo zlepšení. Zatřetí jsou zde pragmatické důvody - starší VCS jako CVS mají širokou podporu jiných nástrojů (IDE atd.), kterou poměrně mladé projekty typu Git prostě nemají (nebo mají, ale méně kvalitní). Čtvrtým důvodem jsou problémy při spolupráci několika organizací. Obě organizace používají třeba CVS, protože ho používá i ta druhá. Aby jedna přešla na něco jiného, musela by se akceptovat rizika popsaná výše a navíc by to samé musela udělat i ta druhá, takže by se to celé muselo organizačně zastřešit, což opět vyžaduje finance... Do výpočtu pravděpodobnosti takové změny tedy vstupuje ochota jedné organizace, ochota druhé a ochota obou (nebo více) to koordinovat. Vyjmenoval jsem několik důvodů, co mě hned napadly, ale ve skutečnosti je jich daleko víc. Na CVS mě s*re několik věcí (a to jsem jen uživatel, nikoli admin), ale rozumím důvodům, proč u něj zůstat. Zavádět jiné VCS je snažší (nikoli snadné!) u vznikajících projektů než provádět změnu u starých - to bývá často cesta do p*dele.
Mezi gitem a cvs je jeste mezikrok subversion.Jenže mezi CVS a třeba Gitem je prakticky stejný rozdíl jako mezi SVN a Gitem. Jinými slovy: rozdíl mezi CVS a SVN je velmi malý - z pohledu problémů popsaných výše, ale i obecně. Co do běžného užívání je SVN skoro stejné jako CVS. SVN beru jako CVS, které pár věcí řeší lépe, ale pořád velmi, velmi podobně jako CVS. Nástroje DVCS by ideálně (chce-li člověk čerpat jejich výhody) měly být používány diametrálně odlišně. Jasně, i DVCS lze většinou používat úplně stejně jako CVS nebo SVN, ale pak je zde otázka, proč na ně vůbec přecházet... Z důvodu podobnosti s CVS se SVN (vzniklé kolem r. 2000) uchytilo poměrně rychle. Ale i tak to nebyla otázka krátké doby, pořád se bavíme o jednotkách let. Nechci jmenovat, ale např. jedna poměrně slušná česko-slovenská organizace (vývojářská firma, asi 300 lidí) používá v největší míře CVS a pomalinku teď začíná používat SVN - pro některé nové projekty... A jsou docela spokojeni.
Ale jinak mi prijde, ze jsi tutez vetu opsal podstatne vice slovy.Vždyť i vy jste můj komentář jen přepsal do jiné formy. ;)
jenže od dob CVS/SVN už má každej moula notebookNevím, s mouly se příliš nestýkám... Ale ani obecně bych netvrdil, že všichni uživatelé VCS (nebo i jen jejich většina) je v tomto smyslu mobilní.
takže s DVCS můžu čerpat výhody i když budu vyvíjet projekt sám a dostanu se s notebookem kamsi do offlajnuNo jasně! Vždyť já taky preferuju DVCS... Nahoře jsem jen zmínil důvody, které brání jeho rychlému nasazení u určitého typu organizací. U projektů, které vyvíjím sám (a jsou nekomerční), můžu střídat VCS třeba každý měsíc.
Nevím, s mouly se příliš nestýkám... Ale ani obecně bych netvrdil, že všichni uživatelé VCS (nebo i jen jejich většina) je v tomto smyslu mobilní.Oni nemusí být mobilní, bohatě stačí, když si admin hraje se sítí :). Jinak homeworking je už dneska taky docela rozšířený. Takže výpadky domácí sítě, či jakýkoli problém s VPN, nebo třeba jen expirované heslo... těch případů, kdy se DVCS hodí i na centralizovanou práci je spousta.
prechodu na lepsi technologie obvykle brani: ... idiotiNasazení tzv. lepších technologií je investice jako každá jiná. Může z ní plynout zisk, ale taky nese rizika, která mohou způsobit ztrátu. Někdy rizika hrozí víc, jindy míň a někdy se riskuje pořádný balík a jindy zase pakatel. Je na každém manažerovi, jak se k investici postaví. Někdo je opatrný investor, jiný riskuje. Pokud se někdo v určitou chvíli brání těm tzv. lepším technologiím, nutně to neznamená, že je dotyčný debil. Ano, byly doby, kdy jsem to viděl tak, že teď se prostě všichni sebereme a, hurá, nasadíme něco lepšího než to starobylé CVS. Když jsem byl odmítnut ("Bude se o tom jednat - někdy."), bral jsem to jako velkou hloupost "těch nahoře". Jenže jak jsem začal řešit i jiné problémy než čistě technické (např. organizační apod.), zjistil jsem, že opatrný postoj těch, co mě tehdy odmítli, je rozumný a daný zkušenostmi.
jenže od dob CVS/SVN už má každej moula notebook, takže s DVCS můžu čerpat výhody i když budu vyvíjet projekt sám a dostanu se s notebookem kamsi do offlajnuMy, co jezdíme hodně vlakem na pracovní cesty, to oceníme nejvíc :).
git-svn clone
vytvoří v gitu kopii SVN repozitáře (včetně logu a historie)
git-svn fetch
dotahá z SVN nové revize (asi jako GIT pull)
Nad tím můžu pak pracovat offline jako s gitem (rebase, vytvářet branche, atd ...)
git-svn dcommit
pak docpe moje commity jeden po druhém do SVN
Něco podobného má git i pro CVS.
no, co se týče různých neduhů, tak jsou si CVS a SVN podobné, nicméně SVN má o dost jednodušší a komfortnější interface; na menší projekty se hodí perfektně; tam, kde je ale potřeba pokročilejší branching apod, tak je Git daleko lepší volba.
WebDAV (automatické verzování bez další práce a bastlení), zamykání souborů, řízení práv (a ověření autorů commitů), podpora v IDE a dalších programech… (což tedy neznamená, že by Subversion byl obecně lepší než dnešní DVCS, ale fakt, že v některých případech může mít smysl si ho vybrat – i dnes)Jestli ty důvody byly před dvěma lety významné před rokem aktuální a dnes ještě jakž takž... tak pokud budu pro nový projet vybírat něco, co se má používat příštích 10 let... SVN to nebude. Spojení WebDAV a VCS mi obecně nezní jako dobrý nápad. Ale za uvedení důvodů každopádně děkuju, zajímá mě to.
Libi se mi na nem to, ze verzuje tak, jak si to predstavuji ja.Zeptám se tedy ještě jednou :). A co je na něm tak centralizovaného (pokud máš nainstalováno SCP či rsync)? Nebo jinak... z čeho usuzuješ, že tvé řešení je centralizované?
osobně používám Git na Githubu pro správu vlastního kódu; je to dobrý, kromě těch případů, kdy se chce zapojit nějaký developer a je na Windows. Potom nastavování klíčů a propojení s githubem je pro většinu těžší, klasický linuxový kommandlajnový klient funguje perfektně.
Potom nastavování klíčů a propojení s githubem je pro většinu těžší, klasický linuxový kommandlajnový klient funguje perfektně.Nastavování klíčů kvůli mě už zvládl i nějaký ten neprogramátor (než aby poslouchal vysvětlování, proč nechci FTP ani SFTP s hesly). Programátor by s tím neměl mít (s návodem) jediný problém. Jinak s klíči mívají lidé problém i na Linuxu, ale z toho bych spíše vinil chybějící UI a to nejlépe alespoň CLI a GUI, zatím jsem neviděl ve slušné kvalitě ani jedno.
ssh-keygen
(haló, BSA, používám keygen!!!), dvakrát entr a pak zkopírovat výsledek z ~/.ssh/id_*.pub
.
Jinak nějakou správu (i) SSH klíčů umí Seahorse.
aky mi přijde, že na tom není nic těžkého. A se Seahorsem zvládne generování klíčů i opravdová lama (a je to přímočařejší než s tím Putty ve Windows).Z čeho tedy usuzuješ, že Seahorse nebo ekvivalent nepůjde nikdy používat na Windows?
Co je na tom z uživatelského hlediska tak nepříjemného? Většinou stačí ssh-keygen (haló, BSA, používám keygen!!!), dvakrát entr a pak zkopírovat výsledek z ~/.ssh/id_*.pub.Vidíš, že se umíš nejen hezky zeptat, ale i si sám odpovědět. A aby toho nebylo málo, tak to ještě často nestačí (např. oprávnění). Ani to kopírování není pro začátečníka (ani začínajícího admina) zrovna jednoduchý.
např. oprávněníTo mají snad všechny distribuce defaultně dobře a člověk to musí ručně rozbít, aby to nefungovalo. A jak by sis to představoval ty?
Ani to kopírování není pro začátečníka (ani začínajícího admina) zrovna jednoduchý.Na to je příkaz
ssh-copy-id
.
Na to je příkaz ssh-copy-id.Který nefunguje (až na některé speciální případy).