Apple představil (YouTube) telefony iPhone 17 Pro a iPhone 17 Pro Max, iPhone 17 a iPhone Air, sluchátka AirPods Pro 3 a hodinky Watch Series 11, Watch SE 3 a Watch Ultra 3.
Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.6.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze již instalovat také ze Snapcraftu a Flathubu.
Polské vývojářské studio CD Projekt Red publikovalo na Printables.com 3D modely z počítačové hry Cyberpunk 2077.
Organizátoři konference LinuxDays 2025 vydali program a zároveň otevřeli registrace. Akce se uskuteční 4. a 5. října na FIT ČVUT v pražských Dejvicích, kde vás čekají přednášky, workshopy, stánky a spousta šikovných lidí. Vstup na akci je zdarma.
Uživatelé komunikátoru Signal si mohou svá data přímo v Signalu bezpečně zálohovat a v případě rozbití nebo ztráty telefonu následně na novém telefonu obnovit. Zálohování posledních 45 dnů je zdarma. Nad 45 dnů je zpoplatněno částkou 1,99 dolaru měsíčně.
Server Groklaw, zaměřený na kauzy jako právní spory SCO týkající se Linuxu, skončil před 12 lety, resp. doména stále existuje, ale web obsahuje spam propagující hazardní hry. LWN.net proto v úvodníku připomíná důležitost zachovávání komunitních zdrojů a upozorňuje, že Internet Archive je také jen jeden.
Jakub Vrána vydal Adminer ve verzi 5.4.0: "Delší dobu se v Admineru neobjevila žádná závažná chyba, tak jsem nemusel vydávat novou verzi, až počet změn hodně nabobtnal."
V Německu slavnostně uvedli do provozu (en) nejrychlejší počítač v Evropě. Superpočítač Jupiter se nachází ve výzkumném ústavu v Jülichu na západě země, podle německého kancléře Friedricha Merze otevírá nové možnosti pro trénování modelů umělé inteligence (AI) i pro vědecké simulace. Superpočítač Jupiter je nejrychlejší v Evropě a čtvrtý nejrychlejší na světě (TOP500). „Chceme, aby se z Německa stal národ umělé inteligence,“ uvedl na
… více »V Berlíně probíhá konference vývojářů a uživatelů desktopového prostředí KDE Plasma Akademy 2025. Při té příležitosti byla oznámena alfa verze nové linuxové distribuce KDE Linux.
Byl vydán Debian 13.1, tj. první opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.12, tj. dvaná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.
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.
HEAD
BASE
COMMITTED
PREV
Nachá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 soubor
soubor
byl aktualizovánA soubor
soubor
byl přidán do pracovní kopieD soubor
soubor
byl smazán z pracovní kopieR soubor
soubor
byl přesunut na jiné místo v pracovní kopiiG soubor
soubor
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 soubor
souboru
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 soubor
soubor
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 soubor
soubor
z pracovní kopiesvn copy soubor1 soubor2
soubor1
do soubor2
s tím, že soubor2
si sebou nese historii soubor1
svn move soubor1 soubor2
soubor1
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 soubor
L soubor
? soubor
svn add
).! soubor
svn delete
, ale třeba příkazem rm
.~ soubor
svn 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-updates
svn 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 --verbose
Takový 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.mine
soubor.rXX
rXX
označuje
číslo revize tohoto souborusoubor.rYY
rYY
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
--encoding
Myslí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: