Re: [Bash] Svn Update
Inviato: venerdì 22 agosto 2008, 19:55
Dall'output sembra di si, ma da `svn help info` sembra di no... 
Il forum della comunità italiana di Ubuntu.
https://forum.ubuntu-it.org/
Dannazione >:(Volans ha scritto: Dall'output sembra di si, ma da `svn help info` sembra di no...![]()
Potresti provare con il comandoMarkon ha scritto: Potrebbe essere un'idea, ma dovresti essere sicuro che se l'output è maggiore di uno allora ci sono aggiornamenti, nel senso che a me con emesene mi dà questo:
Però a quanto pare non è un aggiornamento, quindi non saprei...Codice: Seleziona tutto
$ svn status -u emesene/ ? emesene/MANIFEST Stato rispetto alla revisione: 1453
Ciao![]()
Codice: Seleziona tutto
svn status -uqCodice: Seleziona tutto
svn status -uq > svnstatus.txt
$rev=`wc --lines svnstatus.txt | grep svnstatus.txt`Sisi, lo so ... non mi prendo il merito, ho solo seguito il tuo consiglio!Volans ha scritto: Se proprio vogliamo trovare il pelo nell'uovo il -uq te lo avevo suggerito io![]()
se non mi sbaglio il simbolo * viene utilizzato per i file Nuovi, per quelli modificati ad esempio si utilizza la M...Volans ha scritto: Comunque come ti ho già detto prima se fai un controllo di questo genere io andrei a controllare che effettivamente ci sono dei file da aggiornare (simbolo *) e che non ci siano conflitti dopo l'update.
L'output del comando diventa di questo tipo:Volans ha scritto: Il tuo comando non mi è chiaro, wc -l ritorna il numero di righe, a cosa ti serve fare il grep del nome del file?
Codice: Seleziona tutto
[numero_righe] [nome_file] Codice: Seleziona tutto
svn status -uq > svnstatus.txt
$rev=`wc -l file | sed s/' .*$'/''/`Se io faccio svn up questo mio aggiorna tutto ogni volta che avvio il programma, mentre io preferirei dare la possibilità all'utente di scegliere se effettuare l'update o meno...Volans ha scritto: Per questo motivo, dato che sia per fare `svn status -u` che per fare `svn up` serve avere una connessione attiva, farei direttamente l'up e mi concentrerei sull'output dell'up così da evidenziare eventuali anomalie, conflitti eccc
Volans ha scritto: Magari aggiungendo prima un controllo per vedere se la rete è attiva.
Codice: Seleziona tutto
var=`ping -c 1 www.google.com | grep "received" | awk '{print $4}'`
if [ $var = 1 ]; then
echo "Done";
else
echo "Err";
fiCodice: Seleziona tutto
var=`ping -c 1 www.google.com | grep "received" | awk '{print $4}'`
if [ $var = 1 ]; then
svn status -uq > svnstatus.txt
$rev=`wc -l svnstatus.txt | sed s/' .*$'/''/`
zenity --info --text="in numero di righe è $rev"
else
zenity --error --text="Impossibile controllare gli Aggiornamenti"
fi
e la schermata di zenity che dovrebbe apparire dopo, quella dove viene specificata visualmente la variabile, rimane vuota... ovvero appare scritto:line 5: =1: command not found
senza scrivere nessun numero...il numero di righe è
Scusa avevo sbagliato a scrivere...Volans ha scritto: le variabili le definisci senza il dollaro, solo quando le richiami devi usare il dollaro, potrebbe tornarti utile guardare qualche guida di bash a partire dal nostro wiki![]()
Non voglio dire all'utente quante righe ci sono... mi serve a me per capire se fino a li va tutto bene con quella variabile..Volans ha scritto: Anche se continuo a non capire l'utilità di dire all'utente che ci sono N righe nell'svn up, se conosce svn preferirebbe vedere direttamente l'output, se non lo conosce non sa cosa voglia dire... ma queste sono scelte implementative che sta a voi fare![]()
Codice: Seleziona tutto
#!/bin/bash
var=`ping -c 1 www.google.it | grep "received" | awk '{print $4}'`
if [ $var = 1 ]
then
#Ricevo la revisione del Server
svn info [percorso_server] | grep Revisione: > svnstatus.txt
sed -i 's/Revisione: //g' svnstatus.txt
revsvn=` sed -n '1p' svnstatus.txt`
#Ricevo la revisione Locale
svn info [percorso_locale] | grep Revisione: > svnstatuslocale.txt
sed -i 's/Revisione: //g' svnstatuslocale.txt
revsvnloc=` sed -n '1p' svnstatuslocale.txt`
rm svnstatus.txt svnstatuslocale.txt
#Confronto i numeri delle due revisioni
if [ $revsvn -eq $revsvnloc ]
then
zenity --info --text="Non sono presenti aggiornamenti"
else
zenity --question --text="Sono presenti aggiornamenti\n si desidera fare l'update?"
if [ $? -eq 0 ]
then
pass=`zenity --entry --hide-text --text="Inserisci la password di root .:" --title="Update..."`
echo "$pass" | sudo -S svn up [percorso_locale] | tee >(zenity --text-info --title="Update...")
else
zenity --text="Aggiornamento annullato..."
fi
fi
else
zenity --error --text="Impossibile controllare la presenza di aggiornamenti" --title="Errore!"
fi