Domanda

Quindi ho un problema. Ho controllato le mie gemme e rotaie congelate anche se non dovresti farlo. Ho pensato che fosse facile e comunque non sarebbe stato un grosso problema. Bene, in seguito ho aggiornato le rotaie e così facendo ho eliminato tutti i file .svn nelle directory del fornitore / rails. Ho sentito che ciò che veramente dovrei è semplicemente fare qualcosa con svn: externals nella mia directory del fornitore. Cosa devo fare esattamente e Capistrano utilizzerà ancora le mie gemme congelate se non sono nel mio repository? Se non utilizzerà le mie gemme congelate come posso rigenerare correttamente quei file .svn, perché questo accadrà di nuovo .

Grazie!

È stato utile?

Soluzione

  1. Per recuperare le directory .svn eliminate, basta eseguire un svn update. Torneranno.

  2. Controllo solo le gemme esportate. Uso gem unpack <gemname> nella vendor/gems directory e svn add e commit da lì.

  3. Qualsiasi cosa in vendor/plugins o vendor/rails seguo usando il pistone. Ad esempio, è così che ottengo binari lì dentro:

    % piston import http://dev.rubyonrails.org/svn/rails/tags/rel_2-0-2/ vendor/rails

Per ottenere il pistone usare gem install piston.

Nota Dovrò trovare una soluzione diversa / migliore per sostituire il pistone poiché Rails continua a usare git e potrebbe non aggiornare il repository di sovversione.

Altri suggerimenti

Personalmente, sono parziale all'utilizzo di Piston per gestire la directory dei fornitori.

Dovrei sconsigliare svn: externals per due motivi

  1. potresti distribuire in un ambiente che non può raggiungere quei servizi svn

  2. cosa succede quando si desidera distribuire e quelle svn esterne sono inattive?

Il mio consiglio è di utilizzare il disimballaggio del pistone o della gemma e gestire le dipendenze di produzione nella struttura del fornitore.

Dichiarazione di non responsabilità: non conosco Ruby / Rails, quindi non so cosa siano le gemme congelate (anche se presumo siano binari compilati o fonti tokenizzate), ma conosco bene Subversion.

Le directory

.svn contengono solo Subversion " contabilità " ;. Non c'è nulla che sia irrecuperabile.

L'eliminazione dei file .svn non è affatto un problema. Se le directory con le directory .svn mancanti sono da qualche parte all'interno di un albero di directory nella copia di lavoro di sovversione (la directory in cui hai effettuato il checkout), elimina semplicemente quelle directory, fai un aggiornamento svn e verranno ricreate.

Se sull'intero albero mancano i file .svn, elimina l'intero albero ed esegui nuovamente un controllo svn.

svn: externals è come un " link simbolico " ;. Hai il Progetto A e il Progetto B, che utilizza il Progetto A. Quello che fai è aggiungere una proprietà svn: external che fa riferimento alla directory della libreria del Progetto A, quindi ogni volta che verifichi il Progetto B, inserirà automaticamente la directory della biblioteca dal Progetto A dentro. Ad esempio, ho spesso una directory chiamata & Quot; terze parti & Quot; che contiene gli esterni alle biblioteche di altri luoghi, incluso evn: riferimenti esterni ad altri progetti in sovversione.

Un suggerimento per risolvere problemi di versione come questo è avere directory di rilascio separate per le librerie (o gemme congelate) e nei progetti che ne hanno bisogno, utilizzare un riferimento svn: external alla directory di rilascio appropriata. Quando vengono rilasciate nuove versioni, basta cambiare la proprietà svn: external per puntare alla nuova directory di rilascio e svn update.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top