OpenChaos.dev je 'samovolně se vyvíjející open source projekt' s nedefinovaným cílem. Každý týden mohou lidé hlasovat o návrzích (pull requestech), přičemž vítězný návrh se integruje do kódu projektu (repozitář na GitHubu). Hlasováním je možné změnit téměř vše, včetně tohoto pravidla. Hlasování končí vždy v neděli v 9:00 UTC.
Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.
Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.
Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).
Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.
AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.
Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou
… více »Patchouli je open source implementace EMR grafického tabletu (polohovací zařízení). Projekt je hostován na GitLabu.
V tomto díle se konečně podíváme na to, jak se vlastně Subversion ovládá a jak ji využít ke své práci. Základní pracovní cyklus je stejný jako u CVS; stáhnout aktuální verzi (checkout, update), udělat nějaké změny na souborech (add, delete, copy, move), zjistit, co je na pracovní verzi změněno (status, diff, revert), vypořádat se s konflikty (merge, resolved) a následně změny uložit do repository (commit). Existuje ale ještě mnoho dalších příkazů, a zdaleka ne o všech si tu něco povíme. Všechny jsou samozřejmě popsány v dokumentaci.
Řádkový klient Subversion se jmenuje svn a po normální instalaci leží v
/usr/bin/svn. Všechny následující příkazy se tedy zapisují
ve tvaru:
svn <příkaz> <parametry>
|
Ještě než se pustím do popisu příkazů, upozorním na jednu, mně ne úplně
sympatickou, věc. Pokud se přistupuje k autentizované repository a klient
žádá pro přístup heslo, pak se toto heslo implicitně ukládá do souboru
~/.subversion/auth/svn.simple/nějaký_hash. V tomto souboru
je uloženo uživatelské jméno a heslo v textové podobě. Proto je potřeba
ohlídat to, kdo má k tomuto souboru přístup, případně zakázat ukládání
hesla do tohoto souboru (viz dále). Proč tomu tak je, a jak tento soubor
vypadá, se můžete dočíst zde.
HEADBASECOMMITTEDPREVNachází se v ~/.subversion/config a lze v něm nastavit pár
hodnot, se kterými pak klient pracuje. Pokud mají být tyto parametry
užitečné, je třeba je v konfiguračním souboru odkomentovat, včetně
příslušné kategorie zapsané v hranatých závorkách. Patří mezi ně:
store-auth-creds = [yes|no][auth]. Může nabývat hodnot yes|no a určuje, jestli se mají ukládat autentizační údaje (viz poznámka výše). V
konfiguračním souboru je tato položka nazvána chybně
'store-password', takže pozor ať nemáte v konfiguráku
'store-password = no' a nedivili se, že se vám hesla vesele ukládají na disk.editor-cmd = [vim|pico|joe|..][helpers]. Určuje, jaký editor se má spustit při psaní logu. Tento editor se spustí, pokud nezadáte log přímo na řádku za
parametr '-m'.diff-cmd[helpers]. Říká, jaký program se má spouštět při
vytváření rozdílového výpisu. Někomu se může hodit více například
zdiff, xmldiff nebo třeba nějaký vlastní. Záleží na tom, jaké soubory se v
repository skladují.
V případě použití nějakého externího diffu je ale nutné pouštět ho
přes nějaký skript, protože Subversion mu předhodí stejné parametry
jako klasickému diffu, což celkem dělá neplechu. Je tedy možné
řešit to třeba následovně:
diff-cmd=muj_diff_skript.sh
|
a v muj_diff_skript.sh mít:
#!/bin/bash
|
$6 a $7 jsou právě ty argumenty, které určují cestu k souborům, mezi kterými se má muj_diff provést.
global-ignores[miscellany]. Specifikuje masku souborů, které nejsou
verzované a nemají se zobrazovat při výpisu u 'svn status'. V
normálním případě se neverzované soubory zobrazují se značkou '?'.
Je to užitečné, třeba když jsou v pracovní kopii např. zkompilované
binárky, dočasné soubory, ..., které se stejně nebudou commitovat.log-encoding[miscellany]. Říká, v jakém kódování budou ukládány "commit logy".Najde se ještě pár dalších parametrů, které tu už ale nebudu v tuhle chvíli rozebírat.
To nejhorší máme za sebou, teď už to bude vesměs legrace. V dalším textu
budu předpokládat existující repository na adrese
svn://svn.example.cz/repository/. Budou zde ukázány jen nejčastěji
používané parametry. Kompletní výpis možných parametrů se dělá příkazem
svn help <příkaz>
|
Pokud už máme nějaký rozpracovaný projekt a chceme ho jen vložit pod Subversion, není nutné tyto soubory kopírovat, a poté přidávat v pracovní kopii, ale je možné je rovnou importovat do repository. Import se nepoužívá příliš často, většinou jen při vytvoření nové repository a jejím naplnění již nějakými existujícími soubory.
svn import jméno svn://svn.example.cz/repository
|
Kde 'jméno' je buď jméno adresáře nebo souboru. Vzhledem k tomu,
že se v podstatě jedná o commit zatím neverzovaných souborů přímo
do repository, má tedy i import stejné parametry jako commit,
tj. hlavně povinný log.
svn checkout svn://svn.example.cz/repository working_copy
|
Stáhne poslední revize ze zadané adresy do adresáře working_copy. Uvedu některé parametry, které se dají u checkout využít:
-r nebo --revision-N nebo --non-recursive--no-auth-cache
svn update working_copy
|
Do adresáře s pracovní kopií nahraje aktuální verzi repository, resp.
verzi, která se explicitně určí. Důležité parametry jsou stejné jako
u checkout. Při stahování aktuální verze (HEAD) se před každým souborem vypisuje atribut, který oznamuje stav souboru oproti naší pracovní kopii.
Tyto atributy se budou ukazovat i u svn status. Jsou to:
U souborsoubor byl aktualizovánA souborsoubor byl přidán do pracovní kopieD souborsoubor byl smazán z pracovní kopieR souborsoubor byl přesunut na jiné místo v pracovní kopiiG souborsoubor byl stažen z repository v aktuální verzi, ale soubor
v naší pracovní kopii byl také změněn. Nicméně změny proběhly na
odlišných místech v souboru a mohly být spojeny do jednoho
souboru(merGed)C souborsouboru jsou v přímém konfliktu s našimi změnami v
pracovní kopii. Tento konflikt se musí řešit ručně a patřičné kroky
na vypořádání se s tímto problémem budou probrány za chvíli.Soubory v pracovní kopii je možné editovat, přidávat, mazat,
kopírovat nebo přesouvat. Kromě editace, která se provádí naším
oblíbeným editorem, existují pro práci se soubory speciální příkazy.
Používáním těchto příkazů nepřicházíme o historii souborů, což je
jejich hlavní přednost. Bylo by například možné v pracovní kopii soubor
někde smazat a posléze ten samý vytvořit o adresář vedle. Ale svn move
udělá tu samou práci plus zachová historii. Příkazy jsou velmi intiutivní:
svn add souborsoubor do pracovní kopie. Tento soubor musí být fyzicky
přítomen. V podstatě se tím říká, že se má tento soubor začít
verzovat. Pokud není zadán soubor, ale adresář, přidají se všechny
soubory v tomto adresářisvn delete souborsoubor z pracovní kopiesvn copy soubor1 soubor2soubor1 do soubor2 s tím, že soubor2 si sebou nese historii soubor1svn move soubor1 soubor2soubor1 na soubor2. Jde o spojení dvou příkazů a to svn copy soubor1 soubor2 a svn delete soubor1
svn status working_copy
|
Vypíše soubory z pracovní kopie, na kterých se stala nějaká změná oproti
verzi, která byla naposledy stažena. Jako u svn update vypíše atribut
a jméno souboru. Tyto atributy jsou stejné jako u svn update plus
existuje ještě pár dalších:
M souborL soubor? souborsvn add).! souborsvn delete, ale třeba příkazem rm.~ souborsvn status má kromě těch, které už byly popsány u svn checkout, navíc několik parametrů o kterých se zmíním:
-u nebo --show-updatessvn status pro zjištění změn nemusí kontaktovat repository,
protože má historii uloženou v pracovní kopii. V případě, že chceme
vědět, jestli nepracujeme se soubory, které už jsou zastaralé, pak k
tomu slouží právě tento parametr. Soubory, které jsou v repository
novější než v pracovní kopii, jsou označeny hvězdičkou.-v nebo --verboseTakový výpis svn status working_copy --show-updates --verbose pak může vypadat třeba takto:
| Status | Update? | Aktuální revize |
Poslední změna - revize |
Poslední změna - uživatel |
Jméno souboru |
|---|---|---|---|---|---|
| M | * | 50 | 31 | cipisek | working_copy/my_prog.c |
| 50 | 10 | cipisek | working_copy/my_prog.h | ||
| ? | working_copy/my_prog | ||||
| * | 50 | 16 | rumcajs | working_copy/INSTALL | |
| A | 0 | ? | ? | working_copy/README | |
| D | 50 | 27 | cipisek | working_copy/test |
svn diff [soubor] [verze]
|
Pokud se napíše svn diff přímo v adresáři s pracovní kopií, vypíše se
diff na všech změnených souborech. Je možně ale určit pouze jeden soubor
a zároveň i mezi jakými verzemi se má diff provést. Výpis je v
"unifikovaném diff formátu", to znamená, že před odebranými řádky je
znaménko '-', před přidanými '+'. Dále obsahuje vždy jméno souboru a
čísla řádků, kde změny proběhly. To umožňuje jednoduše generovat
"patche". Příklad:
svn diff soubor1 soubor2 -r 60:80 > r60-r80.patchfile
|
Vytvoří "patch" na soubory soubor1 a soubor2 mezi verzemi 60 a 80 a uloží jej do souboru r60-r80.patchfile.
Pokud se při update nebo commit ukáže, že soubor, na kterém jsme prováděli nějaké změny, byl během našich úprav v těch samých místech změněn a "commitnut" někým jiným, vznikne konflikt, který je třeba řešit ručně. V případě, že Subversion označí soubor jako konfliktní, provede pár akcí, které je dobré znát. Jednak vytvoří několik nových souborů, a to:
soubor.minesoubor.rXXrXX označuje
číslo revize tohoto souborusoubor.rYYrYY označuje číslo nové revize.
Dále v souboru s původním jménem budou označena místa, kde jsou změny konfliktní, a v těchto místech se musí provést ruční úpravy a dát tak soubor do pořádku. Subversion si pamatuje, že je soubor konfliktní a dokud se neřekne, že je problém vyřešen, tak nepovolí změny "commitnout".
V zásadě jsou tři možnosti, jak s konfliktním souborem naložit:
soubor.mine, prosadíme svou změnu,
pokud se souborem soubor.rYY, akceptujeme změnu provedenou někým
jiným.svn revert soubor, což způsobí návrat
k původní verzi z poslední aktualizace (BASE revision). V podstatě
je to totéž, jako pracovní soubor překopírovat souborem soubor.rXX
z bodu 2.Jakmile je konflikt vyřešen, je potřeba dát o tom Subversion vědět. To se
dělá příkazem svn resolved soubor. Tímto příkazem se smažou všechny
pomocné soubory a povolí se commit do repository. Je potřeba si dobře
rozmyslet a zkontrolovat, jestli už mohu říct, že konflikt byl vyřešen.
Po tomto příkazu je možné "commitovat" i v případě, že v souboru zůstanou
místa označená jako konfliktní.
Nejdůležitější a také poslední akcí, kterou člověk při svém pracovním
cyklu udělá, je odeslání změn zpátky do repository. Před samotným
commitem by tedy měly proběhnout akce jako svn status pro kontrolu
toho, co jsme změnili, a svn update pro kontrolu, jestli někdo nepracuje
na stejných souborech jako my.
svn commit [soubory]
|
V pracovním adresáři je možné zadat jen svn commit a odešlou se všechny změněné soubory. Je možné je ale určit jednotlivě. Commit má několik
následujících parametrů:
-m nebo --message-F nebo --file--encodingMyslím, že už toho bylo probráno celkem dost a na tomto místě bych tento miniseriálek ukončil. Subversion toho sice skrývá ještě mnohem víc, ale tento základní kurz by měl obsáhnout všechny běžně používané akce, které obyčejný uživatel potřebuje. Pokud by se ukázalo, že je zájem o pokračování v takových už spíše lahůdkách, je klidně možné, že ještě nějaký ten díl vznikne.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Pokud by se tedy nekdo zeptal mne, rekl bych "CVS zahodit, Subversion pouzivat"... (Muj nazor - no flame, please)