Byl vydán Debian 13.5, tj. pátá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.14, tj. čtrná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.
CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.
Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.
Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.
Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.
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)