Table des matières

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ě 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 FAQ TuxFamily kvůli automatizaci prokázání totožnosti pomocí klíče SSL.

# 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

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:

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

Vyřídit svůj pracovní seznam

svn up

Vyřízené soubory jsou zobrazeny tak, že je předchází písmeno, které představuje stav vyřízení:

Spravovat změny

Je možné listovat změněnými soubory pomocí příkazu:

svn status

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:

svn diff sources/qetproject.h
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

Stejně tak je možné ukázat rozdíly na textovém souboru pomocí Kompare a tímto malým skriptem.

Poslední možnost:

svn diff | colordiff | less -R

Jiné užitečné příkazy:

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:

svn ci -m "Correction d'un bug qui empechait la fermeture d'un projet ne comportant aucun schema."

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:

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).

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

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.

#!/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}"