[Risolto] [Bash] Svn Update

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

[Risolto] [Bash] Svn Update

Messaggio da Demiurgo »

Ciao a tutti ragazzi...

Sono alle prese con un carinissimo progetto in bash che si aggiorna tramite svn quando l'utente clicca sul tasto "aggiorna", quello che vorrei fare è una funzione con if che mi permetta di fare ciò:

Si connette a svn e controlla se sono presenti aggiornamenti ad ogni avvio, se sono presenti mostra un messaggio e richiede all'utente di fare l'update, invece se non sono presenti aggiornamenti il programma prosegue normalmente... qualcuno ha idee??  (b2b)
Ultima modifica di Anonymous il martedì 9 settembre 2008, 11:12, modificato 1 volta in totale.
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
Markon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1536
Iscrizione: mercoledì 17 gennaio 2007, 10:34
Località: Sperone Beach(AV)
Contatti:

Re: [Bash] Svn Update

Messaggio da Markon »

Ciao!

Allora, dovresti fare uno script bash/perl/python o come vuoi che faccia questa cosa:

svn info PacchettoDaControllare.

Solitamente rilascia delle informazioni, che tu devi confrontare.
Ad esempio:

Codice: Seleziona tutto

Percorso: emesene
URL: https://emesene.svn.sourceforge.net/svnroot/emesene/trunk/emesene
Repository: https://emesene.svn.sourceforge.net/svnroot/emesene
UUID del Repository: 1e86ae66-1a1c-0410-8f2d-e5c3504d5e31
Revisione: 1449
Tipo di Nodo: directory
Azione: normale
Autore dell'Ultimo Cambiamento: JoinTheHell
Revisione dell'Ultimo Cambiamento: 1437
Data dell'Ultimo Cambiamento: 2008-07-28 14:56:12 +0200(lun, 28 lug 2008)
Come puoi notare la Revisione e la Revisione dell'ultimo cambiamento non corrispondono, perchè non aggiorno da un po'. Per cui dovresti controllare quelle due cose. Se sono diverse, allora aggiorni.

Ciao ;)
PS: puoi farlo con le regular expressions (o REGEX)
My Guitar Wants to Kill your Mama!

DIVENTA PYTHONEER
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 »

Ti dico subito che non sono molto esperto di bash per ora...  ;D

Non potrei fare una cosa del tipo:

- chiedi con svn la revisione che è online al momento
- vedi la versione che è presente in locale
- se le due versioni sono diverse ==> svn up

Non so se si può fare ma non mi sembra impossibile...

P.s. non si tratta di un singolo pacchetto come nel tuo caso ma di una serie di file!
Ultima modifica di Anonymous il giovedì 21 agosto 2008, 11:11, modificato 1 volta in totale.
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 trovato il comodissimo comando

Codice: Seleziona tutto

svn status -u
Se ci sono differenze l'output è come questo:

Codice: Seleziona tutto

 svn status -u
       *       76   Multimedia/banshee
       *       76   Multimedia/smile
M              76   Network/web_svr
Stato rispetto alla revisione:     83
Se invece non ci sono differenze (quindi è alla versione più aggiornata):

Codice: Seleziona tutto

Stato rispetto alla revisione:     83
Una cosa un po grezza sarebbe questa: se le righe di output del comando sono maggiori di 1 allora svn up, se no continua l'esecuzione del programma... cosa ne dici??
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
Markon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1536
Iscrizione: mercoledì 17 gennaio 2007, 10:34
Località: Sperone Beach(AV)
Contatti:

Re: [Bash] Svn Update

Messaggio da Markon »

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 ;)
My Guitar Wants to Kill your Mama!

DIVENTA PYTHONEER
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 »

mmmm.... quindi? altre soluzioni?
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 tu non modifichi mai i file di questo repository SVN in locale ma devi solo aggiornarlo puoi usare l'opzione:

Codice: Seleziona tutto

svn status -uq
che non fa vedere i file che non sono sotto il controllo di revisione di SVN (quelli con la ? appunto).

Il controllo che puoi fare è cercare se ci sono asterischi nella colonna corretta quando ci sono più righe di output.
Se invece fai modifiche al codice, ti sconsiglio vivamente di fare update tramite script perché ti perderesti i messaggi di SVN che ti dicono se ci sono conflitti tra le modifiche locali e quelle scaricate dal repository.
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 »

In questo repo capita che a volte vengano fatte modifiche all'interno dei singoli file...

Tu volans come mi consigli di fare?
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 »

Ma le modifiche le fai tu nella tua copia locale?
Perché altrimenti va benissimo l'update automatico.
Può dare conflitti solo se tu fai modifiche alla tua copia locale senza aver aggiornato prima e se non le committi.

Inoltre se non ci tieni ad essere super pignolo, puoi fare un `svn up` comunque, senza controllare se ci sono aggiornamenti o no. Di fatto `svn status` è una simulazione di un `svn up` e se non ci sono aggiornamenti l'`svn up` non fa altro che dirti che è già all'ultima revisione.
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 »

Io faccio sempre così prima di modificare i file:

- do svn up e aggiorno il tutto
- Svn commit dei file interessati dalla modifica

Scusa se ti faccio immattire con sto benedetto svn ma io non ne capisco molto, quindi ti sarei grato se potessi parlare nel modo piu' dettagliato possibile , grazie mille comunque! ;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
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 fai sempre così non c'è problema, perché vuol dire che quando avvii il computer non hai MAI (ed è bene che non succeda mai ;)) files la cui copia locale è diversa da quella su SVN.
In questo caso quindi puoi anche dare un update all'avvio da script, certo non vedrai quali files sono stati aggiornati, ma se non ti interessa particolarmente puoi farlo senza problemi.

Altro controllo di sicurezza che potresti fare è prendere l'output dell' `svn up` e controllare che non ci siano conflitti, in quel caso ti salvi quello che ti serve in un file in un posto dove lo vedi di sicuro se c'è ;)
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 »

Ok... ho capito come vuoi fare ma ho qualche problema nel metterlo in pratica...

Io voglio che sia l'utente a scegliere se fare o meno l'aggiornamento, ad ogni avvio lo script deve controllare solo se sono presenti nuovi aggiornamenti, se sono presenti manda una maschera all'utente dove richiede l'aggiornamento se no il programma deve proseguire normalmente, anche perchè se faccio come dici te (con aggiornamento sempre e comunque ad ogni avvio) l'utente è costretto ogni volta a digitare la password di root per fare l'svn up... 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 »

Aspetta, a questo punto sono io a non essere sicuro di aver capito cosa vuoi fare... rileggendo il tuo primo messaggio non mi è chiarissimo cosa intendi per "quando l'utente clicca sul tasto aggiorna" e non ho capito di che progetto si tratti, se da distribuire o una cosa tua personale.

`svn up` non va fatto da root, ma dall'utente che ha fatto il checkout che può tranquillamente essere l'utente standard, dipende anche da chi deve usare quei files e per farci cosa.

Se quello che vuoi fare è un'interfaccia grafica ad svn credo che ce ne siano già in giro e vari IDE o programmi di diff riescono a gestire sistemi di controllo della versione come SVN graficamente.
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 »

Mi spiego meglio  ;)

Ho un programma che sto costruendo con un mio collaboratore ( http://nude.netsons.org ), una raccolta di script in bash fatti con zenity con una piccola interfaccia grafica (sempre in zenity) che serve per fare una sorta di "raccoglitore" e suddivide gli script in categorie.

Quello che vorrei fare è questo: ogni volta che si avvia il programma deve essere controllato (tramite svn) se sono presenti nuove revisioni o aggiornamenti, se sono presenti allora mostra una maschera all'utente chiedendo di effettuare l'aggiornamento del programma altrimenti il programma deve proseguire normalmente, e voglio che questo si svolga ad ogni avvio del programma..

Mi sono spiegato?
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 »

Chiarissimo! :)
Dato che fai tutto con zenity e che trattandosi di script si presuppone che l'utente sia un minimo a conoscenza di linux e del bash potresti fare un `svn status -uq` e stampare in una finestra di zenity l'output e chiedere all'utente se vuole aggiornare o no. (facendo il controllo se non ci sono aggiornamenti ovviamente)
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 »

Chiedo troppo dicendoti di fare tutto in background (tranne l'approvazione dell'aggiornamento da parte dell'utente)? ;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
Avatar utente
Volans
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4915
Iscrizione: domenica 4 dicembre 2005, 11:25
Contatti:

Re: [Bash] Svn Update

Messaggio da Volans »

Non è troppo è che secondo me è concettualmente sbagliato perché se ho capito bene l'utente ha scaricato gli script facendo un svn checkout.
Ora credo sia normale che l'utente avrà modificato qualche script per adattarlo alle proprie esigenze, e magari non lo ha fatto facendo una copia da qualche altra parte ma modificando proprio quelli dentro alla cartella dove ha fatto il checkout di SVN.
Ora se in questa situazione voi avete aggiornato sul repository proprio quello script e magari modificato proprio le righe che l'utente aveva modificato in locale, si crea un Conflitto che va gestito e risolto da svn.

Per questo motivo credo che sia doveroso far vedere all'utente quali files saranno aggiornati e lasciare a lui una scelta consapevole o trovare un'altra soluzione per gli aggiornamenti.
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 »

Ferma Ferma... ;D

L'utente non modifica gli script! gli utilizza solo per l'installazione di Programmi/Utility, nel caso in cui un utente voglia apportare una miglioria sarà lui ad inviarci lo script modificato e saremo quindi noi a introdurlo all'interno del server svn...

Tutte le impostazioni che l'utente deve normalmente modificare a mano modificando il testo dello script vengono risolte tramite zenity e quindi l'utilizzatore non ha altro da fare oltre che selezionare lo script che vuole avviare e seguire la procedura guidata...

Scusa se ti sto facendo impazzire :D

P.s. ho trovato anche il comando

Codice: Seleziona tutto

svn info | grep Revisione:
che da come output:
Revisione: [numero_revisione]
Potremo trovare il modo per tagliare da questo output la parola Revisione, trovare un comando che ci dica in numero della revisione LOCALE e poi fare una semplice funzione in if che se i due numeri sono diversi fa partire la maschera di aggiornamento... no?
Ultima modifica di Anonymous il venerdì 22 agosto 2008, 19:28, modificato 1 volta in totale.
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 »

E una volta che tramite zenity l'utente ha dato i suoi parametri per quello script dove vengono salvati, nel file scaricato da svn? (in questo caso ci sono modifiche locali ;))

`svn info` puoi usarlo ma è sui singoli file o cartelle e devi usarlo due volte, una in locale e una in remoto per controllare la differenza.
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 »

Le impostazioni non vengono salvate! ogni volta l'utente deve rimetterle! non immaginarti script elaboratissimi, sono per coloro che per la prima volta si avvicinano al mondo di linux!  (rotfl)

svn info posso usarlo sull'eseguibile che viene obbligatoriamente modificato ad ogni aggiornamento... se lo lascio senza nessun file specifico non mi da la revisione di tutto il pacchetto svn?
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