[Risolto] [Bash] Svn Update

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

Dall'output sembra di si, ma da `svn help info` sembra di no... :)
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

Volans ha scritto: Dall'output sembra di si, ma da `svn help info` sembra di no... :)
Dannazione  >:(

Quindi? hai qualche idea in particolare?
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

Dai ragazzi! ;D non siate timidi!

Ne ho bisogno!  >:(
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

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

Codice: Seleziona tutto

$ svn status -u emesene/
?                   emesene/MANIFEST
Stato rispetto alla revisione:   1453
Però a quanto pare non è un aggiornamento, quindi non saprei...
Ciao ;)
Potresti provare con il comando

Codice: Seleziona tutto

svn status -uq
non dovrebbe visualizzarti il ? ed in quel caso saremo a posto...

Il ? indica un file presente nella tua copia locale ma non ne repository...
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

Qual'è la domanda?
I file con "?" sono quelli che non sono sotto il controllo di SVN, quindi non puoi averli scaricati da SVN ma sono files aggiunti localmente. (pensa ad un programma che si compila, tu scarichi i sorgenti e lo compili, dopo avrai tanti files "nuovi" che se fai un svn status ti dice che non sono sotto il controllo di SVN)
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

La mia richiesta era specifica per Markon perchè, per quanto ho capito, con il parametro q non segnala i ? e quindi sarebbe la soluzione al nostro problema, volevo solo la conferma da parte sua:

Ho trovato un comando molto interessante con i quel potrei risolvere il problema:

Codice: Seleziona tutto

svn status -uq > svnstatus.txt
$rev=`wc --lines svnstatus.txt | grep svnstatus.txt`
Potrebbe andare?
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

Se proprio vogliamo trovare il pelo nell'uovo il -uq te lo avevo suggerito io ;)
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.
Il tuo comando non mi è chiaro, wc -l ritorna il numero di righe, a cosa ti serve fare il grep del nome del file?
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

Volans ha scritto: Se proprio vogliamo trovare il pelo nell'uovo il -uq te lo avevo suggerito io ;)
Sisi, lo so ... non mi prendo il merito, ho solo seguito il tuo consiglio! ;D
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.
se non mi sbaglio il simbolo * viene utilizzato per i file Nuovi, per quelli modificati ad esempio si utilizza la M...
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?
L'output del comando diventa di questo tipo:

Codice: Seleziona tutto

 [numero_righe] [nome_file] 
quindi per inserirlo in una variabile devo eliminare la parola svnstatus.txt... mi sbaglio??
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

Ci sono alcune incongruenze:
- come puoi vedere leggendo `svn help status` la M è per i file modificati in locale mentre l'asterisco è per quelli che saranno aggiornati se si fa un `svn up`
- wc -l non mi sembra una buona soluzione perché tu devi controllare che ci sia almeno un file da aggiornare, se ci sono file modificati in locale non ti cambia nulla. Inoltre se usi wc -l devi togliere il nome del file, quindi usare `wc -l file | sed s/' .*$'/''/`e non grep
- come ti ho già detto sopra se c'è la rete puoi anche fare comunque un `svn up`, l'unica cosa è che devi controllare l'output per evitare conflitti.
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

Quindi mi suggerisci di fare così??

Codice: Seleziona tutto

svn status -uq > svnstatus.txt
$rev=`wc -l file | sed s/' .*$'/''/`
L'utente non deve modificare i file in locale e, nel caso in cui lo faccia, è tenuto comunque ad inviarli a noi amministratori in modo da poter rendere disponibile l'aggiornamento a tutti...
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

Io di solito quando programmo cerco di fare tutto "user-free" e "bug-free", mentre la seconda accezione è ovvia, con la prima intendo prendere in considerazione qualsiasi comportamento l'utente potrà avere, anche il più assurdo, perché non sai mai che può fare un utente.

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
Magari aggiungendo prima un controllo per vedere se la rete è attiva.
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

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
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: 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"; 
fi
Penso vada bene no? ;) Fonte: http://forum.ubuntu-it.org/viewtopic.php?t=211918
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

Ho creato uno script di prova così:

Codice: 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
Sembra funzionare per quanto riguarda la parte del ping ma quando va a controllare gli aggiornamenti restituisce da terminale questo errore:
line 5: =1: command not found
e la schermata di zenity che dovrebbe apparire dopo, quella dove viene specificata visualmente la variabile, rimane vuota... ovvero appare scritto:
il numero di righe è
senza scrivere nessun numero...
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

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

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 ;)
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

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 ;)
Scusa avevo sbagliato a scrivere...
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 ;)
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..

Adesso penso di farcela da solo, se avrò altri problemi provvederò a contattarvi... grazie!
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: [Bash] Svn Update

Messaggio da Demiurgo »

Risolto  ;D (good)

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
Enjoy! ;D
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti