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í:

  • 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:

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:

  • 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:

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:

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

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}"
Tisk/export