[Risolto] [Bash] Svn Update
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
[Risolto] [Bash] Svn Update
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)
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
- Markon
- Entusiasta Emergente

- Messaggi: 1536
- Iscrizione: mercoledì 17 gennaio 2007, 10:34
- Località: Sperone Beach(AV)
- Contatti:
Re: [Bash] Svn Update
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:
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)
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)
Ciao
PS: puoi farlo con le regular expressions (o REGEX)
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
Ti dico subito che non sono molto esperto di bash per ora... 
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!
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
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
ho trovato il comodissimo comando
Se ci sono differenze l'output è come questo:
Se invece non ci sono differenze (quindi è alla versione più aggiornata):
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??
Codice: Seleziona tutto
svn status -uCodice: Seleziona tutto
svn status -u
* 76 Multimedia/banshee
* 76 Multimedia/smile
M 76 Network/web_svr
Stato rispetto alla revisione: 83Codice: Seleziona tutto
Stato rispetto alla revisione: 83NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
- Markon
- Entusiasta Emergente

- Messaggi: 1536
- Iscrizione: mercoledì 17 gennaio 2007, 10:34
- Località: Sperone Beach(AV)
- Contatti:
Re: [Bash] Svn Update
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...
Ciao
Codice: Seleziona tutto
$ svn status -u emesene/
? emesene/MANIFEST
Stato rispetto alla revisione: 1453Ciao
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
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
Re: [Bash] Svn Update
Se tu non modifichi mai i file di questo repository SVN in locale ma devi solo aggiornarlo puoi usare l'opzione:
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.
Codice: Seleziona tutto
svn status -uqIl 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!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
In questo repo capita che a volte vengano fatte modifiche all'interno dei singoli file...
Tu volans come mi consigli di fare?
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
Re: [Bash] Svn Update
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.
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!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
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!
- 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!
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Re: [Bash] Svn Update
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'è
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!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
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?
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
Re: [Bash] Svn Update
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.
`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!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
- Demiurgo
- Entusiasta Emergente

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

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
Chiedo troppo dicendoti di fare tutto in background (tranne l'approvazione dell'aggiornamento da parte dell'utente)? 
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Re: [Bash] Svn Update
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.
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!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
Ferma Ferma... 
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
P.s. ho trovato anche il comando che da come output:
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
P.s. ho trovato anche il comando
Codice: Seleziona tutto
svn info | grep 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?Revisione: [numero_revisione]
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
Re: [Bash] Svn Update
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.
`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!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
- Demiurgo
- Entusiasta Emergente

- Messaggi: 2093
- Iscrizione: domenica 10 giugno 2007, 13:06
- Località: Pesaro
Re: [Bash] Svn Update
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?
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
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti
