Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
cs:doc:subversion [07/04/2010 22:06] pavelcs:doc:subversion [20/11/2014 14:01] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Používání skladiště Subversion vývojáři/přispěvateli ======
  
 +Tyto stránky chtějí provést rychlé shrnutí ovládání souvisejícího se Subversion, se kterým se snad může přispěvatel do projektu QElectroTech setkat. Biblí Subversion zůstává nicméně [[http://svnbook.red-bean.com/en/1.5/svn-book.pdf|SVN Book]]
 +
 +===== Získání kopie skladiště SVN (check out) =====
 +
 +===== Získání kopie skladiště SVN =====
 +
 +Získání kopie skladiště SVN ("Check out") umožňuje vytvoření místní kopie (mluví se o "pracovním adresáři") adresáře, který je přítomen v SVN (obyčejně pro QET: "kmen - trunk" nebo větev 0.3).
 +Použijte příkazy dole a nahraďte jimi ''identifiant'' svým přístupovým klíčem (přihlášení: "login"). Spojení přecházející SSH, heslo se obecně požaduje 3 krát při každé operaci (svn checkout, commit, up, ...). Podívejte se na [[http://faq.tuxfamily.org/User/Fr#Utilisation_de_SSH_sous_GNU.2FLinux|FAQ TuxFamily]] kvůli automatizaci prokázání totožnosti pomocí klíče SSL.
 +
 +<code bash>
 +# Vyzkoušení si kmene
 +svn co "svn+ssh://identifiant@svn.tuxfamily.org/svnroot/qet/qet/trunk" qelectrotech_trunk
 +# Vyzkoušení si větve 0.3
 +svn co "svn+ssh://identifiant@svn.tuxfamily.org/svnroot/qet/qet/branches/0.3" qelectrotech_0.3
 +</code>
 +
 +===== Zbodl jsem se, udělal jsem nepodepsané získání =====
 +Vraťte se do svého pracovního adresáře Subversion a použijte následující příkazy:
 +<code bash>
 +svn_user=votre_identifiant_ici
 +find . -type f -name entries -exec sed -i "s,svn://svn.tuxfamily.org,svn+ssh://${svn_user}@svn.tuxfamily.org,g" {} \;
 +svn up
 +</code>
 +
 +===== Vyřídit svůj pracovní seznam =====
 +<code>svn up</code>
 +Vyřízené soubory jsou zobrazeny tak, že je předchází písmeno, které představuje stav vyřízení:
 +  * A : přidaný soubor
 +  * D : odstraněný soubor
 +  * U : soubor vyřízený bez potíží
 +  * G : soubor upravený ve vašem pracovním adresáři a vyřízený bez střetu
 +  * C : soubor upravený ve vašem pracovním adresáři ale z vyřízení je ve střetu s místními změnami
 +===== Spravovat změny =====
 +Je možné listovat změněnými soubory pomocí příkazu: <code bash>svn status</code> Zobrazení je totéž jako při svn up.
 +Soubory lze do verzování přidat pomocí svn add, a pak s nimi zacházet pomocí svn mv, svn cp a svn rm.
 +Změny je možné ukázat pomocí svn diff; příklad:
 +<code>svn diff sources/qetproject.h</code>
 +<code diff>
 +Index: sources/qetproject.h
 +===================================================================
 +--- sources/qetproject.h        (révision 449)
 ++++ sources/qetproject.h        (copie de travail)
 +@@ -21,7 +21,9 @@
 + #include <QtXml>
 + class Diagram;
 + class ElementsCollection;
 ++class ElementsCategory;
 + class XmlElementsCollection;
 ++class MoveElementsHandler;
 + /**
 +        tato třída představuje jeden projekt QET. Obyčejně zaznamená do jednoho
 +        souboru, jedná se o dokument XML zahrnující nákresy stejně jako
 +</code>
 +
 +Stejně tak je možné ukázat rozdíly na textovém souboru pomocí [[http://www.caffeinated.me.uk/kompare/|Kompare]] a [[doc:showdiff|tímto malým skriptem]].
 +
 +Poslední možnost: <code bash>svn diff | colordiff | less -R</code>
 +
 +Jiné užitečné příkazy:
 +  * svn export : stejná užitečnost jako co / checkout, ale obdržený výsledek není pracovní adresář Subversion (= nejsou tu podadresáře .svn); dovolí udělat jednoduché vyzískání stromečkovitosti skladiště.
 +  * svn cat : bere jako parametr seznam souborů (tím se rozumí přímo ve skladišti) a vystaví jejich obsah na obvyklém výstupu.
 +  * svn revert : obnoví stav souboru (místní změny jsou ztraceny ve prospěch stavu souboru ve skladišti Subversion)
 +  * svn resolved : vyznačuje soubor ve střetu (stav ''C'') jako vyřešený.
 +  * svn blame : umožňuje dozvědět se, kdo je autorem kterého řádku v seznamu zadaných souborů.
 +  * svn merge : vezme tři argumenty, udělá porovnání rozdílů (diff) mezi dvěma prvními a užije je na třetí. Používá se při pokročilé správě větví.
 +  * svn info : zobrazí informace o současném pracovním adresáři
 +  * svn help : vyvolá nápovědu k příkazu
 +
 +===== Poslat své úpravy =====
 +
 +Jednou, když jsou změny hotové a jsou hodny toho, aby se objevily ve skladišti Subversion, je třeba je odevzdat. Před jejich odesláním se doporučuje udělat poslední svn up, abychom se ujistili, že změny mezitím již nebyly provedeny jiným přispěvatelem. Odeslání změn by mělo být doprovázeno zprávou o odeslání; příklad:
 +<code bash>svn ci -m "Correction d'un bug qui empechait la fermeture d'un projet ne comportant aucun schema."</code>
 +Doporučuje se ale provést jednoduchý svn ci, který použije editor zmíněný v proměnné prostředí $EDITOR na úpravu souboru obsahujícího:
 +  * oblast pro zapsání vzkazu o odeslání
 +  * oblast vypisující soubory, které budou odeslány
 +Toto umožní naposledy provést ověření obsahu odeslání změn. Pokud soubor nebyl změněn ('':q!'' v editoru vim), svn podá možnost opuštění odeslání změn. Jinak je odeslání změn provedeno po zapsání souboru a zavření editoru ('':x'' v editoru vim).
 +<file>
 +Correction d'un bug qui empechait la fermeture d'un projet ne comportant aucun schema.
 +
 +--Cette ligne, et les suivantes ci-dessous, seront ignorées--
 +M    sources/diagramview.cpp
 +M    sources/qetproject.h
 +M    sources/qetproject.cpp
 +</file>
 +Poznámka: z různých důvodů vám děkujeme za to, že se ve zprávě o odeslání vyhnete akcentovaným znakům nebo zvláštním.
 +
 +===== Upravit zprávu o odeslání =====
 +Mít možnost upravit zprávu o odeslání znamená být správcem skladiště Subversion => požádat Xaviera.
 +<code bash>
 +#!/bin/bash
 +
 +REV="$1"
 +REPOS_URL="file:///home/xav/qet"
 +REPOS_PATH="qet"
 +TMP_FILE="commit_message"
 +
 +# recupere le message actuel
 +svn log -r "${REV}" "${REPOS_URL}" | tail -n +3 | grep -v -- '----' > "${TMP_FILE}"
 +vim "${TMP_FILE}"
 +
 +echo -n "Modifier (y/n) ? "
 +read answer
 +[ "${answer}" == "n" ] && exit 0
 +svnadmin setlog "${REPOS_PATH}" -r "${REV}" "${TMP_FILE}"
 +
 +echo "Message de la revision ${REV} apres modification :"
 +svn log -r "${REV}" "${REPOS_URL}"
 +</code>
Tisk/export