4/9/2006

Project en backup map

Filed under: — pinguim @ 4:24 pm

Stel dat je aan een klein projectje werkt, of het nu een een tekst met wat extra notities is, of een berekening in een spreadsheet met wat verklaringen in een tekstbestand, of een paar html pagina’s voor een site of een toepassing, altijd zal je merken dat je soms een aantal dingen veranderd hebt die niet zo goed waren als je oorspronkelijk dacht. Dan is het makkelijk om terug te kunnen naar het punt voor je die omstreden verandering deed.
directories
Voor deze situatie bij een bepaald project “DaDi” ging ik werken met een onderverdling van enkele aparte mapjes:
In de project-map maak* ik volgende subdirectories:
Run : de versie die ik op een bepaald moment als OK beschouw
Bak : map met backup van een goede versie
Dev : daarin doe ik mijn experimentele wijzigingen
Tst : hierin hou ik een te testen versie terwijl ik al kan verderwerken aan de dev versie.

Er is dus een zeker verband tussen de mapjes:

Ik werk in de “Dev” map.

Als ik in “Dev” tot een punt kom waar ik even stop, maak ik een kopie naar “Tst”
Dan kan ik die versie bekijken of laten bekijken door iemand die mee test.

Als ik tevreden ben over de test (of als die is goedgekeurd) kan die gekopieerd
worden naar de “Run” map. Dan weet ik dat daar de huidige goeie versie staat die in een (tijdelijk) bruikbare toestand is (bv. in geval van een handleiding)

Op het moment dat ik iets in de “Run” map zet maak ik eerst een backup van wat er op dat moment staat naar de “Bak” map. Dat ingeval er iets fout gaat met de run map, of er nadien moet vergeleken worden met een vorige “Run” versie.

Eigenlijk schuiven de kopies dus altijd op*, en als je dat zelf moet doen kan het vervelend zijn, zeker als er verschillende bestanden (misschien nog onderverdeeld in mapjes) bij het project horen. Dus maak je de kopieer-commando’s 1 keer en gebruikt ze door eenvoudig oproepen op de “command prompt”.
(* zie schema van het doorschuiven)

Daarvoor zet je een “terminal venster” open (en laat dat open staan) waar je het commando geeft al naargelang wat je wil doen; testen van de dev of “bevorderen” van “test” tot “run”. Het maken van de backup kan automatisch bij het “bevorderen”.
shell scripts
Elke reeks commando’s krijgt wel een eigen file (in je eigen “bin” map) zodat je ze ook manueel afzonderlijk kan starten (bv de backup maken van de run map).

prjtest : van dev naar tst map
prjrun : van tst naar run map
backup van run naar bak gebeurt in prjrun

prjuntest = van tst terug naar dev kopieren
prjunrun = van run terug naar tst kopieren


Onderhoud

bv de hele directory leegmaken:

prjclrtst : test dir leegmaken
prjlcrrun : run directory leegmaken
prjlcrdev : dev directory leegmaken


Automatisch log

Als er een foute versie ontstaat wil je nakijken wat de laatste handelingen waren. Daarom schrijven we telkens een regel in een log bestand, dat je eenvoudig kan nazien of tonen.
De logfile staat in de hoofddirectory met de naam log.txt

Een paar scripts voor het gebruik van het log:

prjlog : tonen van laatste bewerkingen.

prjclrlog : log wissen.


Kopieer al deze commando bestanden (shell scripts) in je /home/usernaam/bin map en geef ze rechten om uit te voeren: chmod +x Vergeet ook niet overal even de juiste projectmap in te vullen! Dat kan gemakkelijk met een editor als Kedit, Kate, mcedit enz. Test de goede gang van zaken voor je het begint te gebruiken. In de map heb je prjhelp.txt dat je er aan herinnert wat al die prj dingen betekenen.


Uitbreidingen:

In de toekomst misschien:
prjcomp = inpakken tot tar.gz en klaarzetten voor upload
prjupl = uploaden naar andere computer
prjdown = downloaden van andere computer
prjinst = download uitpakken en in werkdir zetten.

Natuurlijk kunnen de scripts nog uitgebreid worden met foutdetectie enz.
Een voorbeeld met project DaDi in de webserver directory.

Lijst van de commando-files die nodig zijn:

prjclrdev prjclrrun prjhelp prjlog prjtest
prjclrlog prjclrtst prjhelp.txt prjrun prjuntest

En wat erin staat:

# prjtest : dev to test directory
project="/var/www/html/DaDi"
dev="Dev"
test="Tst"
#
cd $project
cp -r $dev/* $test/
echo $0 > $test/last.txt
date >> $test/last.txt
cat $test/last.txt >> log.txt


# prjrun : files from test to run directory
project="/var/www/html/DaDi"
run="Run"
test="Tst"
bak="Bak"
# make backup first before overwriting "run"
cd $project
cp -r $run/* $bak/
cp -r $test/* $run/
# trace in run dir
echo $0 > $run/last.txt
date >> $run/last.txt
# trace in bak dir
cp $run/last.txt $bak/last.txt
# trace in project root
cat $test/last.txt >> log.txt

Foutje tijdens wijzigen dev?

# prjuntest : get dev from test directory
project="/var/www/html/DaDi"
dev="Dev"
test="Tst"
#
cd $project
cp -r $test/* $dev/
echo $0 > $dev/last.txt
date >> $dev/last.txt
cat $dev/last.txt >> log.txt

Onderhoud:

# prjlog : show log file cumul in project dir
project="/var/www/html/DaDi"
logfile="log.txt"
cd $project
cat log.txt|more
echo "$0 : Log view on `date` " >> log.txt


# prjclrdev : clean up dev directory
project="/var/www/html/DaDi"
dev="Dev"
#
cd $project
rm -r $dev/*
echo $0 > $dev/last.txt
date >> $dev/last.txt
cat $dev/last.txt >> log.txt


# prjclrrun : clean up run directory
project="/var/www/html/DaDi"
run="Run"
#
cd $project
rm -r $run/*
echo $0 > $run/last.txt
date >> $run/last.txt

cat $run/last.txt >> log.txt


# prjtest : clean up test directory
project="/var/www/html/DaDi"
test="Tst"
#
cd $project
rm -r $test/*
echo $0 > $test/last.txt
date >> $test/last.txt
cat $test/last.txt >> log.txt


# prjclrlog : delete log file cumul in project dir
project="/var/www/html/DaDi"
logfile="log.txt"
cd $project
cat log.txt|more
rm log.txt
echo "$0 : Log deleted on `date` " > log.txt

* ik gebruikte dit om de mapjes te maken (bewaard in bin, chmod +x om uit te voeren)

# make project subdirs
project="/var/www/html/DaDi"
cd $project
mkdir Bak
mkdir Dev
mkdir Tst
mkdir Run
touch log.txt

upd 0707
Pas aan aan de eigen shell; gebruik “tst” ipv “test”, wat eigenlijk een commando is, let op gebruik aanhalingstekens, enz. Ik moest bv de tilde die verwijst naar de homedirectory uit een script halen
~/dev vervangen door /home/loginnaam/dev

commentaar 25/09/06: Als je wat verder wil gaan kan je Subversion opzoeken…

Reacties zijn gesloten.

Powered by WordPress