Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
V dnešní době je absolutní nesmysl začínat nový projekt s centralizovaným verzovacím systémem.Tohle je trochu přísný. Podle mě existuje fůra projektů, pro které může být Subversion mnohem praktičtější než kterýkoliv ze současných distribuovaných systémů. Kvůli slušným grafickým frontendům, bezproblémové integraci do dalších programů, centrálnímu zamykání a podobně. Sám nad naším repository používám
git-svn
a jsem za něj moc rád – momentálně především díky offline commitům – ale takhle jednoznačné to určitě není.
Zavisi na tom, aky je to projekt, Ak vyvojarinepracovali so ziadnym systemom spravu verzii je lepsi centralizovanay tak isto na hodnotenie studentskych projektov v dvojiciach je lepsi centralizovany system. Ale ak je viac nez 5 ludi v teame distribuoavany system je lepsi...
Koukam ze jsem to nevysvetlil uplne dobre: i distribuovany verzovaci system muzete pouzivat centralizovane a pro nektere typy vyvoje (jako treba ty co zminujete) nema absolutne smysl delat nejaky dalsi repozitar krome centralniho a pak osobni repozitar kazdeho vyvojare s jeho pracovni kopii, odkud treba pres push promita zmeny do centra.
Ale i v tomto pripade ziskate, pokud budete pouzivat distribuovany verzovaci system centralizovane, nez kdybyste pouzivali centralizovany verzovaci system. Veci jako feature-specific branches, spekulativni vetve pro experimenty, citelne commity, rozdeleni operace "commit" zname z centralizovanych systemu na dve operace (commit a obvykle push), vsechno tohle je pridanou hodnotou oproti centralizovanemu VCS. Jako velmi rychly uvod je mozne pouzit treba stranku gitcvs-migration.
-Yenya
Ja mam stale zminovany mentalni blok, abych pochopil ty distribuovane systemy. Chapu vyhody na strane developera. Ale jak to je centralni spravou? Kdyz si kazdy ve sve vetvi commituje, co chce, jak se to dostane do te jedne, oficialni, ze ktere se delaji oficialni buildy? To delaji ti programatori nebo admin centralni repozitore?
Muze byt i tak i tak.
Budto vyvojar muze delat push do centra, pak je to podobne jako treba u SVN: zkusim push, kdyz push udelal do teze vetve driv nekdo jiny, musim udelat pull, merge a push (podobne jako u SVN delam commit, ten selze, musim udelat update a commit). Akorat u Gitu tohle na rozdil od SVN nemusim delat pokud kdokoli jiny udela commit, ale jen pokud udela commit/push do vetve, kterou se ja taky snazim pushnout ven.
Anebo jsou vyvojari a nejaky supervisor toho projektu, a vyvojar rekne "hele, implementoval jsem to a to, prosim vezmi si 'git://server/vyvojaruvrepozitar.git tahlevetev'", a spravce se rozhodne jestli to chce nebo ne.
Anebo muze byt kmbinace obojiho, ze "spravce" (release engineer?) ma jednu vetev, ostatni pushuji svoji praci do svych feature-specific branches v centralni repository, a spravce jen dela merge tech vetvi ktere se mu libi do sve "release candidate" vetve.
-Yenya
Centrální zamykání ale není výhoda centralizovaných VCS. To samé můžete udělat i s distribuovaným VCS – prostě si uděláte kopii stromu, a do té vám nikdo nic nedá.Úplně totéž to není. Například u binárek (dejme tomu obrázků) je podle mě dobrý, když si je člověk může opravdu zamknout, protože nejdou kloudně mergovat. V Subversion si můžu nastavit, že všechny soubory s příponou PNG vyžadují zámek. V pracovní kopii jsou takové soubory označené jako read-only, dokud si je přes Subversion nezamknu. Pak je mnohem těžší dojít ke konfliktu, který je u binárek nepříjemný. Pokud tomu dobře rozumím, v DCVS dostanu konflikt s křížkem po funuse při mergování. Nicméně chápu, že tohle většinu lidí nebolí. (Mě taky ne, mluvím o tom jen pro zajímavost.)
Jenže u CVCS tu binárku zpravidla zamknete zbytečně při zamčení celého stromu.Nerozumím. Subversion umí zamykat jednotlivé soubory.
Pokud je potřeba někdy výjimečně zamknout binárku, asi je jednodušší se na tom domluvit s lidmi, kteří by ji mohli změnit.Binárky v repository jsou u některých projektů naprosto běžný jev, například grafické podklady pro web nebo hry. Pak je určitě příjemné mít možnost zařídit zamykání přímo softwarem.
A pokud je potřeba to dělat často, asi není VCS založený na textových diffech to pravé.Při vší úctě, tohle už nezní jako konstruktivní argument.
Nerozumím. Subversion umí zamykat jednotlivé soubory.Jenže zpravidla se používá zamčení celého stromu, protože je to jednodušší než dělat třeba branch pro build.
Binárky v repository jsou u některých projektů naprosto běžný jev, například grafické podklady pro web nebo hry. Pak je určitě příjemné mít možnost zařídit zamykání přímo softwarem.Pak se ale buď VCS používá pouze jako úložiště těchto binárek, a nějaké mergování nemusím řešit, prostě platí poslední verze. A nebo chci plnou podporu VCS i nad binárkami, a pak asi není moc rozumné používat VCS, který s binárkami pracovat vlastně neumí.
Při vší úctě, tohle už nezní jako konstruktivní argument.Co je na tom nekonstruktivního? Prostě když je nějaký nástroj na danou činnost nevhodný, je na ní nevhodný a není to jeho chyba, ale chyba toho, kdo se ho snaží takhle použít. Když se někdo pokusí malovat obrázky ve
vim
u a bude si stěžovat, že to jde ve vim
u špatně, není to chyba vim
u, ale dotyčného „grafika“. Stejně tak když se někdo pokusí použít VCS pro textové soubory na binární soubory, nemůže si stěžovat, že to funguje špatně.
Co je na tom nekonstruktivního?Srovnáváme výhody decentralizovaných a centralizovaných verzovacích systémů. Já říkám, že výhodou centralizovaných systémů může být výhradní zamykání souborů, které předchází neřešitelným konfliktům [a které se bez centrální autority neobejde]. Ty říkáš, že pokud někdo potřebuje často zamykat binárky, měl by si pořídit úplně jiný verzovací systém. Přijde mi to nefér, protože když se nabízí Subversion jako celkem přijatelné řešení problému, označíš tenhle problém za něco patologického, co by se stejně mělo řešit jinak. ¶ Myslím, že všechny užitečné argumenty už zazněly, takže bych to s dovolením nechal být :)
Pak se ale buď VCS používá pouze jako úložiště těchto binárek, a nějaké mergování nemusím řešit, prostě platí poslední verze.Mergování řešit musím. Grafik A si otevře soubor, začne pracovat. Ještě před commitem si grafik B otevře tentýž soubor a začne taky pracovat. Pokud grafik B udělá netrivální kus práce a grafik A mezitím commitne, B je v rejži. Výhradní zámky tenhle problém spolehlivě řeší: Grafik A si soubor zamkne a pokud se grafik B pokusí udělat totéž, verzovací systém mu zámek nedá. Distribuované systémy problém neřeší, konflikt jen odloží na později.
vim
podporoval editaci obrázků o něco lépe, než jiné textové editory. Úplně stejný problém totiž nastane, pokud grafik A udělá změnu v branchi a grafik B v headu – a tam už zámky nic nevyřeší. Takže pro tenhle případ bych opravdu raději použil nějaký VCS, který není postaven na předpokladu, že se konfliktní změny (textově) mergují, ale na předpokladu, že se konfliktním změnám musí předcházet.
Úplně stejný problém totiž nastane, pokud grafik A udělá změnu v branchi a grafik B v headu – a tam už zámky nic nevyřeší.To je pravda, to je dobrá připomínka. Ony se samozřejmě dají napsat skripty pro zamknutí souboru na více větvích, ale to už jsme na velmi, velmi tenkém ledě.
XSL jako generator kodu jsem uz videl,ale XLS si nedovedu predstavit.
>Myslím, že pořád není dostatek uživatelů, kteří jsou ochotni hlásit chyby a přitom jsou schopni smysluplně reagovat na následné dotazy vývojářů.
+1 - tesat do kamene.
zdravim,
pridam komentar a trocha zamysleni.
O git-u jsem cetl dost clanku. Sam jej pouzivam u jednoho projektu na vyvoj. Ve firme se git pouzival. Na nektere veci velmi uspesne. Ma to ale dost much.
Ono dneska vetsina lidi propaguje nejaky server a konsolove rozhrani. Vyjimecne samostatnou aplikaci.
To, co ale chybi je uplna podpora do IDE. Pro me specielne pluginy do Eclipse nebo NetBeans nebo dalsich podobnych. Ono neco jiz je, ale neni to uplne.
A mam pocit, ze pokud toto nebude v nejakem prijatelnem stavu, tak bude git pouze nastroj nebo hracka pro par adminu, par programatoru delajicich v konsoli. Delat vetsi projekt v radu jednotek ci desitek MB zdrojaku, tak to proste rozumne nejde. Zejmena pak neco mergovat. Samozrejme, ze to pujde, ale s vyssimi naroky na cas a s vetsim poctem chyb.
Git je skvely pocin a v urcitych smerech je velmi dobre projektove rizen. Ale lepsi funkcionalitu mi nabizi Subversion a moduly/pluginy k ni.
Nekdy mam pocit, ze vyse popsane hodne lidi nechape.
Kdyz jsme u tematu: funkcni plugin pro git do Eclipse, existuje ? Bud zdarma nebo do 250$.
Moja evolucia je SCCS -> CVS , prechod do inej firmy, ktora pouzivala Visual Source Safe, utek naspat do CVS ( aj za cenu, ze server a infrastrukturu okolo som si vybudoval sam bez podpory systemoveho oddelenia.)
Teraz ma tlacia na prechod do SVN ako firemneho standardu ( medzitym im doslo ze Visual Source Safe nie je to prave orechove ), mne sa vsak do toho nechce, pretoze mi to neprinasa nic podstatne.
Velmi pokukujem po Mercurial ( http://mercurial.selenic.com/wiki/ ).
Je to distribuovany VCS, ma to prikazovy riadok, GUI pre Windows ako aj plugin do Eclipse.
A najma to ma podporu pre obchodny model vydavania verzii, ktory po nas vyzaduje zakaznik.
Prechod je vsak este dost vzdialeny, uvidim ako to dopadne.
Mercurial pouzivame uz dlouho. Je to asi hodne podobne git-u. Proc vlastne psali git, kdyz uz existoval mercurial?
Tady pisou, ze hg byl oznameny o 5 dni pozdeji nez git. Pro nekoho kdo zna jen centralizovane systemy asi moc rozdil nebude - prechod na distribuovany je urcite nejvetsi zmena. Jinak je podle me hlavnim rozdilem prace s vetvemi, ktera je v Gitu vyrazne jednodussi. V hg nejsou vetve uplne "first-class citizen". Na druhou stranu se rika (nevim, nezkousel jsem, klidne to muze byt urban legend) ze hg ma intuitivnejsi prikazy: v gitu napriklad push neni pravym opakem pull, podobne add neni opakem rm.
-Yenya
ono se to obvykle pocita tak ze kdyby vsichni lide na svete denne vygenerovali kazdy x (napr. 100) hashu v ramci stejneho projektu a nahodny konflikt nastal jeden za y let (napr. milion), tak je hash povazovan za dostatecne neprustrelny. Teoreticky ale konflikt nastat muze, holt se jednou (mozna za nekolik milionu let) Linus stim bude muset poprat a nikdo nebude chapat co se stalo a jak
Už z principu fungování hashování ke kolizi pochopitelně dojít může (výstupem hashovací funkce je řetězec pevné délky, vstup přitom může být libovolně dlouhý (pomineme-li technické detaily)), ale pravděpodobnost, že na dva soubory se stejným hashem narazíte (u dostatečně kvalitních hashovacích funkcí) je strašně malá (např. SHA-1 má výstup 160 bitů dlouhý, tzn. je tu 2160 různých možností, jak se vstup zahashuje – uvědomte si, že 2160 je strašlivě obrovské číslo, a přitom komu by přece jen nestačilo, může použít např. SHA-512 s 512bitovým výstupem, tzn. s 2512 různými možnostmi, na které vstup mapovat).
Ostatně na nepravděpodobnost kolizí kvalitních hashovacích funkcí se spoléhá u digitálního podepisování. Nikdy se nepodepisují samotná data (asymetrická kryptografie je velice pomalá), ale jen jejich hash. Daný podpis tedy platí pro libovolná data se stejným hashem. I přesto se digitálnímu podpisu věří např. v bankovnictví atd.
Ja bych rekl, ze centralizovany _pristup_ nevymizi. Ale mit pod tim centralizovany _verzovaci system_, tj. nemit moznost si u sebe udelat vetev nazvanou "test", neco vyzkouset (treba zkusit vratit zpet nejaky starsi commit), vyzkouset [ne]funkcnost, a vetev zase zrusit, je podle me opravdu vlastnost ktera chybi.
Co se tyce zalohovani a podobne - stejne jako v komercnim svete muzete mit politiku "nejpozdeji pri odchodu z prace je treba udelat commit", muzete totez v distribuovanem verzovacim systemu prepsat jako "nejpozdeji pri odchodu z prace je treba udelat push".
A i v centralizovanem komercnim svete jsou situace, kdy mate dlouhotrvajici paralelni vetve vyvoje, ktere potrebujete _opakovane_ slucovat. Coz v centralizovanem verzovacim systemu fakt nejde.
Jina vec muzou byt ty pluginy do ruznych IDE a tak. V tom fakt nemam prehled. Ale to podle me neni principialni vec - spis pouha otazka casu.
-Yenya
Ja bych rekl, ze centralizovany _pristup_ nevymizi. Ale mit pod tim centralizovany _verzovaci system_, tj. nemit moznost si u sebe udelat vetev nazvanou "test", neco vyzkouset (treba zkusit vratit zpet nejaky starsi commit), vyzkouset [ne]funkcnost, a vetev zase zrusit, je podle me opravdu vlastnost ktera chybi.To přeci v Subversion jde, ne? Pokud je klíčový výraz „u sebe“, tak to mi jako tak zásadní problém nepřijde. Moje zdrojáky jsou vesměs pár kilobajtů, nemám problém tu větev poslat po síti. Chápu, že u větších projektů je to trochu jiný problém. (Mám pocit, že to zastánci DCVS občas berou zbytečně černobíle.)
A i v centralizovanem komercnim svete jsou situace, kdy mate dlouhotrvajici paralelni vetve vyvoje, ktere potrebujete _opakovane_ slucovat. Coz v centralizovanem verzovacim systemu fakt nejde.Mám zkušenosti akorát se Subversion 1.4, kde jde opakované mergování opravdu blbě udělané. Novější verze Subversion už si mergované revize pamatujou, takže by to nemělo být tak zlé…?
Moje zdrojáky jsou vesměs pár kilobajtů, nemám problém tu větev poslat po síti.Jenže to pošlete aktuální stav zdrojáků, bez historie commitů. Ten druhý se pak může na zdrojáky jenom dívat, nebo je začne editovat, tím ale okamžitě vyrobí konflikt.
zoul@naima:wc$ echo "trunk" >> foo zoul@naima:wc$ svn add foo A foo zoul@naima:wc$ svn commit -m "Wrote 'trunk' to foo." Adding foo Transmitting file data . Committed revision 3. zoul@naima:wc$ svn cp ^/trunk ^/branches/alice -m "Created alice's branch." Committed revision 4. zoul@naima:wc$ svn sw ^/branches/alice At revision 4. zoul@naima:wc$ echo "This is alice." > foo zoul@naima:wc$ svn commit -m "Signed Alice in foo." Sending foo Transmitting file data . Committed revision 5. zoul@naima:wc$ svn cp ^/branches/alice ^/branches/bob -m "Copied alice's branch to bob." Committed revision 6. zoul@naima:wc$ svn sw ^/branches/bob At revision 6. zoul@naima:wc$ echo "This is bob." > foo zoul@naima:wc$ svn commit -m "Signed Bob in foo." Sending foo Transmitting file data . Committed revision 7. zoul@naima:wc$ svn sw ^/trunk U foo Updated to revision 7. zoul@naima:wc$ svn merge ^/branches/alice --- Merging r4 through r7 into '.': U foo zoul@naima:wc$ svn merge ^/branches/bob --- Merging r6 through r7 into '.': G foo zoul@naima:wc$ cat foo This is bob.Ano, v gitu by to bylo pohodlnější. Tohle mi ale vůbec nepřipadne zlé. Osobně větve zas tolik nepoužívám, takže budu opravdu rád [bez ironie], když mi někdo vysvětlíte, v čem je háček.
Pokud je klíčový výraz „u sebe“
Ne, klicovy vyraz je "vetev".
-Yenya
100% suhlas. Nie je nic jednoduchsie ako z (grafickeho!) klienta spravit niekde create lokalneho repository a potom spravit merge, ked uz tak velmi trvame na offline "commitoch". Pani uz dlho nerobili s SVN :)
--use-merge-history
, ale to je myslím zhruba všechno. (Je docela dobře možné, že se pletu – budu rád, pokud mě někdo opraví.)
Protoze v Subversion si v centralni repository dva lide zaroven nevytvori stejne pojmenovanou vetev "test", natoz aby ji mohli v pripade ze se ukaze jako slepa cesta po sobe beze stopy smazat.
Pokud je pravda to co se pise vedle, ze by si clovek mohl udelat kopii repozitare, vyvijet v lokalni kopii a pak a mezi ruznymi repozitari mergovat (vcetne cele historie), pak uvitejme Subversion mezi distribuovanymi verzovacimi systemy a zapocteme dalsi hlas me tezi, ze centralizovane verzovaci systemy jsou dnes uz nesmyslne.
-Yenya
Takze duvod proc v SVN branch nestaci je to, ze se neda udelat vic stejne pojmenovanych vetvi a nedaji se smazat beze stopy? To myslite vazne? Myslim, ze treba zachovani historie je neco co je naopak v komercni sfere zadouci.
Zachovani historie neceho co se pak opravdu pouzije je zadouci. Ale neni zadouci zachovavat historie slepych cest, protoze to pak vede k tomu, ze vyvojar radsi tu pokusnou vec do verzovaciho systemu neda, dokud nevi ze to nekam povede. A az se pak rozhodne ze to asi nekam povede, ma uz prilis mnoho kodu na to aby vysledny jeden commit byl citelny.
-Yenya
V komercnich firmach s CVS/SVN pracuju osm let, ale politiku "co den, to commit" jsem nikde nezazil. vzdycky se commituje podle ucelu, neco dodelam, tak to commitnu. Mohu treba commitnout rozpracovanou verzi, aby k ni meli pristup dalsi lidi, nebo aby se na ni sjely automaticke testy, ale to je stejne u DSCM.
Stream je neco jako mailing list kam jednotlivi lide posilaji sve patche. Aby jste mohl pracovat musite si nejdriv vytvorit workspace (neco jako checkout, ale je to spis neco jako soukrome git repo) ktere zinicializujete snapshotem ze streamu. Stream obsahuje dva typy objektu - jednak changesety a jednak snapshoty. Snapshoty se nedaji menit a vsechny changesety casove pred snapshotem se uz nedaji ze streamu odebrat, protoze jsou soucasti snapshotu, jsou to integracni body. V bzr/git/hg existuji jenom snapshoty, protoze se neda comitnout verze s konflikty. Trochu podobny Jazzu byl Darcs
Kdyz se provadi integrace patchu aby se vytvoril snapshot, tak pokud tam existuji konflikty ktere je treba vyresit je dobre si stream zamknout aby se do nej nedaly pridavat nove patche to by pak prace nebyla hotova nikdy. Kdyz se vam nejaky patch nezda, tak ho proste ze streamu smazete. Patch se pak znova objevi u vyvojare v jeho workplace jako outgoing. Provedete integraci, udelate build+unit testy, vytvorite snapshot a odemknete stream. Integrace se u vetsich projektu delaji obvykle tydne pripadne casteji podle potreby. Clenove ostatnich tymu kteri na dane komponente nepracuji si ze streamu neberou jednotlive patche, ale jen snapshoty, kterymi si aktualizuji sva workspace. Snapshotum se rika v Jazz terminologii baseline.
workspace nasubscribujete do streamu podle libosti a IDE vam bude ukazovat rozdil mezi vasim workspace a jednotlivymi streamy - kolik patchu mate oproti nim navic a kolik a ktere patche maji navic oni. Podle sveho uvazeni muzete patche z jednotlivych streamu prijimat (a vyresit si konflikty pokud jsou) ci posilat (pokud mate na to prava). Kdyz udelate nejakou praci a zakomitujete tak se pak ten patch zobrazi jako outgoing pro prihlasene streamy, muzete ho poslat hned ci nemusite. V podstate mate tedy vlastni VCS repository, ktere se uklada centralne, centralne se uklada i rozdelana ale nezakomitovana verze souboru, nikoliv az kdyz je to hotovo (t.j. outgoing patch).
Patche se daji pripojovat k workitemu (bug tracker polozka) aby se s nimi lepe manipulovalo a snadneji se vyhledala skupina patchu ktere patri treba k bugfixu. workitemy nejsou soucasti streamu, ty jsou normalni bug manager ala bugzila.
Offline provoz nebo provoz pres WAN Jazz zvlada, protoze umi synchronizovat (vcetne merge) lokalni workspace s kopii workspace ulozenou na serveru. Takze se muzete odpojit od serveru a lokalne si komitovat jak je libo. Protoze se posilaji na centralni server jenom zmeny (pokud se zrovna nevytvari novy workspace, to se pak poslou cele soubory) je to dostatecne rychle i pres WAN. Sam to pres WAN pouzivam a je to dost rychly i s pingem 180ms. Podpora pro propojovani vice jazz serveru (DVCS) se pripravuje, mozna v 2.0 uz nejaka zakladni je v bete jsem videl v administraci serveru nejake takove polozky.
Demo ke stazeni na http://jazz.net/ vcetne zdrojaku nekterych casti; OSS projektum snad davaji licence na pouziti zdarma. Ma to byt nahrada clearcase; CC se mi nikdy moc nelibil.
HEAD verze stromu je prezitek ze snapshot orientovanych VCS systemu. Na jedne strane tu pokladate vyvoj ala CVS - centralni 1 vetev za archaicky model a na druhe strane pozadujete vzdy posledni snapshot jinak nejste schopen pracovat. Nevite co vlastne chcete.Ani ne, kdyz si vezmete model vyvoje, kdy vetsina tymu pracuje s nejaktualnejsim stavem vyvoje ostatnich, kdezto nekolik tymu si spravuje vlastni kopie a vysledek jejich prace bude pridam do hlavni verze az po nekolika mesicich/letech (a jen obcas si pribiraji aktualni stav hlavni vetve), a k tomu jeste existuje nekolik dalsich verzi jiz dorucenych zakaznikum, o ktere se staraji jini a ty nemaji s "hlavni" vetvi po case moc spolecneho. Takze kazdy ma v takovem modelu jinou potrebu ohledne HEADu. Baseline + nekonfliktni patche (predpokladam ty, jejichz vsechny patch-zavislosti jsou nekonfliktni) je pak aktualni HEAD, jak ten vas popis chapu. Moznost commitnuji konfliktnich patchu pak predstavuje jen obezlicku na to, ze tymy s delsim vyvojovym cyklem nemaji vlastni klon hlavniho repozitare, ale musi vysledky sve prace cpat do centralniho. Coz u decentralizovaneho neni treba, protoze takove tymy vysledky sve prace davaji do sveho sdileneho vyvojoveho repozitory. Tim padem potreba konfliktni patchu v centralnim repozitari odpada a konflikty se resi okamzite, jak je je potreba resit (ne drive, ne pozdeji) a clovekem, ktery smysl daneho konfliktniho kodu nejlepe chape. Jedinou vyhodou centralniho rizeni z meho pohledu je pak to, ze management ma okamzity prehled o stavu prace commitnute vsemi tymy. Jenze treba z prirozenosti cloveka pak vyplyva snaha necommitovat zabordeleny kod a ten si naopak syslit u sebe, coz muze vest ke ztrate znalosti. Nebo naopak se do repozitory dostava hromada nekvalitniho/neotestovaneho kodu, ktery u decentralizovaneho nema narok jit do hlavniho repozitory. Decentralizovany model klade vetsi duraz na potrebu pravidel prace, ovsem ma pak sirsi moznosti pro vyvojare. Samozrejme je mozne, ze mi zpusob prace s Jazzem stale unika, ale prozatim v nem nevidim vyhody. Urcite lze takovy model bez problemu uzivat, jen je treba prislusne nastavit styl prace a ve vysledku lze namapovat na ten decentralizovany.
Jazz neznam, ale jak to tady ctu - neni Jazz neco jineho nez verzovaci system? Z open source sveta bych mozna videl podobnost ve vecech jako je Patchwork Quilt nebo Stacked-Git.
-Yenya
Proc by to nebyl verzovaci system? Baseline jsou obdobou snapshotu t.j. verzi v gitu a ostatni je tam navic.
Ty dva jmenovane systemy neznam
Ja bych rekl, ze centralizovany _pristup_ nevymizi. Ale mit pod tim centralizovany _verzovaci system_, tj. nemit moznost si u sebe udelat vetev nazvanou "test", neco vyzkouset (treba zkusit vratit zpet nejaky starsi commit), vyzkouset [ne]funkcnost, a vetev zase zrusit, je podle me opravdu vlastnost ktera chybi.
Naopak, je zadouci, aby si vyvojar pojmenoval vetev nejak smysluplne, vysledky daval na server a nesmazal to tak, ze uz to nikdo nedohleda. Pokud chce jen vyzkouset revert nejakeho commitu, tak na to ani nepotrebuje vetvit.
Co se tyce zalohovani a podobne - stejne jako v komercnim svete muzete mit politiku "nejpozdeji pri odchodu z prace je treba udelat commit", muzete totez v distribuovanem verzovacim systemu prepsat jako "nejpozdeji pri odchodu z prace je treba udelat push".
Takze chcete resit zalohovani DVCS tak, ze se to nakonec stejne bude davat vsechno do centra, cimz jsme udelali veletoc zpet k centralnim systemum. V komercni sfere stejne neni zadouci aby si vyvojar neco syslil u sebe, z mnoha duvodu.
A i v centralizovanem komercnim svete jsou situace, kdy mate dlouhotrvajici paralelni vetve vyvoje, ktere potrebujete _opakovane_ slucovat. Coz v centralizovanem verzovacim systemu fakt nejde.
Proste to lze, i kdyz to mozna neumite, i kdyz jeste 100x zopakujete ze to nejde, presto to lze. Treba to funguje jinak, ale to neznamena, ze to nejde.
Jina vec muzou byt ty pluginy do ruznych IDE a tak. V tom fakt nemam prehled. Ale to podle me neni principialni vec - spis pouha otazka casu.
Tady uz je temer priznacne, ze jste po nekolika druhoradych duvodech proc komercni sfera potrebuje DVCS elegantne presel docela zasadni duvod proti . Ale uz se neco rodi...
Obecne mam pocit, ze jste zvykly nejak delat veci s GITem a vase argumentace proti jinym systemum je je stavena na tom, ze nefunguji presne jako GIT. To je jako si myslet, ze se neda jezdit na motorce, protoze nema volant. Zkuste trochu uvolnit mysl a popustit uzdu fantazii...
Co se tyce zalohovani a podobne - stejne jako v komercnim svete muzete mit politiku "nejpozdeji pri odchodu z prace je treba udelat commit", muzete totez v distribuovanem verzovacim systemu prepsat jako "nejpozdeji pri odchodu z prace je treba udelat push".
Takze chcete resit zalohovani DVCS tak, ze se to nakonec stejne bude davat vsechno do centra, cimz jsme udelali veletoc zpet k centralnim systemum. V komercni sfere stejne neni zadouci aby si vyvojar neco syslil u sebe, z mnoha duvodu.
V jedné přednášce o gitu na podobné otázky bylo odpovězeno: git dává svobodu, politiku si musíte vytvořit a vynutit jinak.
V komercni sfere stejne neni zadouci aby si vyvojar neco syslil u sebe, z mnoha duvodu.Tak. A že ony to ty vývojářské mrchy stejně dělají, co?! A co se podpory v IDE týče – IDEA podporu má (neviděl jsem, ale jak znám JetBrains, bude to o řád lepší než všechno ostatní), a zbytek je nezajímavý
Bzr moc neznam, ale aspon se neco priucim. Nejprve ke gitu:
A ted k bzr:
-Yenya
Jak dosahuje bzr "lidstejsich" a pritom celosvetove unikatnich cisel verzi?Tady se naskýtá otázka: „Jsou celosvětově unikátní čísla verzí opravdu potřeba?“ Osobně dávám přednost inkrementálnímu číselnému označení verzí. Na první pohled vidím, která verze je novější. Je to výhodné i z pohledu baliče – není potřeba používat různé „obezličky“ jako číslování podle data, kde opět není na první pohled vidět, kterému commitu verze náleží.
A jak se domluvim s ostatnimi, kdyz chci treba rict "bisect mi rika, ze tato chyba byla zanesena commitem cislo XY". Tam prece potrebuju celosvetove unikatni cislo verze, ne?
-Yenya
Pokud tomu dobře rozumím, tak v distribuovaném systému musíš čísla revizí nějak synchronizovat.Synchronizovat? Snad ne centralizovaně? :P
Pripada mi, ze uzivatele GITu, casto postihuje jakasi zaslepenost a maji najednou pocit, ze v jinych VCS nejdou ani zakladni veci jako branch, merge... Polovina povidani o GITu je prachsprosty FUD, na ktery plati argumentace z praxe. Nas sw je radove stejne velky jako linux (9mil radku, 45k souboru, 850mb), pouzivame SVN, na klientech TSVN. Mame radove 20-30 vetvi, bezne je mergujeme. Protoze je vse centralni, je jednoduche to zalohovat, delaji se na tom buildy a testy.
Jedna z veci, ktera byla zasadni pro nasazeni je slozitost pouzivani. Pokud pro tohle potrebuje GIT jiste mentalni usili tak bych to tak jasne s tim vymizenim nevidel .
Aby bylo jasno, nemam nic proti GITu samotnemu, je dobre, ze to existuje a ze to slouzi tem co potrebuji takove moznosti, ale vadi mi, kdyz se z toho dela nabozenstvi.
Ano, ano, ano. Problem je ze ludia si neuvedomuju ze SVN vie dobre robit povedzme 80% toho co GIT. A niektorym to proste staci lebo tych 20% nepotrebuju.
Jak jsem uvedl ten pocet vetvi, tak jsem tim myslel aktivne pouzivane. Cili je najednou asi 20 projektu, kazdy ma vlastni vetev. Na kazdem dela zhruba 1-5 vyvojaru.
ty projekty rozsiruji funkce celeho programu, takze bez toho, aby se pak sesly v hlavni vetvi by nemely moc smysl. Podobne jakoby byly u linuxu vetve na novy FS, driver apod.
Diskutujícím ve webových diskusích bych chtěl vzkázat: Nebuďte tak konzervativní! Přijde mi podivné, jak se s každou novou vlastností open source softwaru najdou spousty názorů typu „co si to zase vymysleli za novotu, vždycky to přece fungovalo tak a tak a stačilo to“. Před pár roky bylo moderní takto nadávat na udev, HAL a D-BusHehe, to je naprosto přesné...
water
, ktery by na onom systemu emuloval nase nativni kernelova rozhrani, a sami netrpeli snizenym vykonem?K tomu, ze to nemusite pouzivat: Prave naopak, vetsine desktopovych uzivatelu bude HAL k uzitku, ale to neznamena, ze by neexistovali lide, kteri ho nepotrebuji a v tom pripade se bez neho opravdu obejdou - vzdyt HAL je jen daemon. Pokud ma uzivatel nejake to KDE nebo Gnome, muze napr. cekat, ze kdyz pripoji k bezicimu systemu fotak pres firewire, system ho pozna a napr. ukaze uzivateli, ze ho pripojil. To, ze k tomuto ucelu v systemu daemon, ktery posle po d-bus sbernici aplikacim zpravu: "hele, uzivatel pripojil fotak" povazuji za sytemove - cpat tohle do jadra je nesmysl a zaroven si tohle nemusi resit kazde desktopove prostredi samo. A pokud jde o server nebo kdyz uzivatel preferuje neco jako fluxbox nebo xmonad a sluzby, co nabizi HAL nepotrebuje, tak mu system muze fungovat i bez nej.
Ale na druhou stranu HAL se pomalu zabydluje napr. v Xorg - coz by melo umoznit za behu pripojit dalsi mys, ktera bude moci byt nakofigurovana jinak, nez ty predchozi (napr. citlivost). To by bez HALu nebylo mozne, protoze Xserver tradicne nastavoval hw pri startu - a opet diky HALu si to X server nemusi resit sam, ale vyuzije k tomu specialniho daemona.
Neco o tom, proc mi to prijde systemove uz jsem zminil v predchozim textu. Ono mne osobne to jmeno "HAL" docela matlo a rozhodne linuxovy HAL je neco uplne jineho nez HAL na WinNT. A co teda dela HAL? V podstate eviduje zarizeni - vi, ze na tehle usb portu je nejaky fotak a dalsim nejaka mys. Zasila po d-busu aplikacim zpravy, kdyz se neco pripoji (na to muze reagovat treba desktopove prostredi vytvorenim ikonky na plose nebo zobrazenim dialogu) a umoznuje aplikaci dotazovat se na zarizeni: napr. chci vypsat vsechny fotaky pripojene k systemu. O pripojovani a vytvareni souboru v /dev se ale stara jine daemon - udev.
Mam tu jeste jednu prednasku o linuxu na desktopu, shodou okolnosti taky od Yenyi z nektereho minuleho EurOpen - o HALu jsou tam sice jen 2 stranky, ale treba se bude libit vic :)
Ja myslim ze adresovat objekty cestou je docela logicke a pekne. A ne, neni to stinovy /dev, protoze to zdaleka neni jen pro zarizeni. Objekt na D-Busu muze byt treba i rozhrani aplikace. Napriklad ekiga muze byt taky viditelna po D-Busu jako objekt, muzete tomu objektu rikat "zavolej na to a to cislo", nebo naopak ten objekt muze pres D-Bus posilat jinym zpravu "vyzvani prichozi hovor" a ti jini treba muzou ztlumit prehravani, pustit grab X serveru, nebo cokoli podobneho.
Volani udev---(dbus)-->HAL--(dbus)-->aplikace je proto, ze HAL (pres PolicyKit, ConsoleKit a dalsi) umi resit pristupova prava a nastavit treba ACL podle toho kdo je zrovna prihlaseny na konzole/konzolach. A taky proto ze aplikace se chce dozvedet "vznikl novy fotak" a nemuset si pamatovat, ze fotak muze byt USB mass storage, USB proprietarni pres gphoto2, FireWire a kdovi co jeste. Podobne treba s klavesnicemi a jejich specialnimi tlacitky. Kazdopadne na tom neni nic neefektivniho, predpokladam ze na beznem systemu nemate stovky hot-plug udalosti za vterinu.
-Yenya
Adresovat objekty cestou je zhruba tak spatne, jako adresovat objekty skrz nejakou formulaci jako "http://www.amarok.net/selectwidget". Neni to uplne spatne, ale proc predstirat, ze to je URL, kdyz to vlastne vubec zadna URL neni?Proč by to nebylo URL? URL je Uniform Resource Locator, objekt je zdroj, „adresovat“ je locator, jednotnost adresování je snad také zřejmá.
(desim se dne, kdy vim bude zaviset na d-busu)Tak toto mě opravdu rozesmálo
Ja nevim jestli si rozumime. Podle me HAL neni zrcadleni /dev jeste jednou.
Adresovani objektu cestou je podle me prirozene. Jde o namespace, a v UNIXu se tradicne namespace dela jako posloupnost jmen oddelenych lomitkem. Samozrejme bylo by to daleko vic UNIXove, kdyby i tento namespace byl soucasti filesystemu. Neni, no co uz.
Namitce s ACL prilis nerozumim. To neni zadne "poloreseni" - proste se vyuziva nejaky demon, ktery prihlasenemu uzivateli umi u souboru v /dev nastavit ty ACL. Ty stejne ACL ktere si muzete nastavit i rucne - neni to tak, ze by "na pozadi behala stara UNIXova prava" - Linux uz dost dlouho podporuje ACL, a muzete si je nastavovat u vseho, na co mate prava. A navic neco za vas nastavi i HAL, mate-li ho. Proste okamzikem prihlaseni (zaregistrovani u ConsoleKitu) dostanou nektere soubory v /dev daneho uzivatele do ACL. A tady se projevi vyhoda HALu - HAL totiz rozlisuje i mezi dost podobnymi zarizenimi pripojenymi pres tutez sbernici: napriklad vi, ze beznemu uzivateli prihlasenemu na konzole nema dat pravo zapisu na systemovy disk /dev/sda, zatimco mu klidne da pravo zapisu na /dev/sdb, coz je treba fotak nebo ctecka karet.
Ve zbytku komentare jsem bohuzel nenasel zadnou konkretni pripominku, ke ktere bych se mohl vyjadrit. Rekl bych ze ten zbytek (posledni 4 odstavce) je presne to, o cem mluvim v posledni otazce toho rozhovoru (neberte si to osobne).
-Yenya
Rovnako by sa zisla aj moznost vidiet version tree nielen pre cele commity, ale aj pre jednotlive subory.Niečo ako
gitk subor
?
mercurial
. Takže se s tím těd seznamuju a vypadá zatím fajn...
Tiskni
Sdílej: