Può collegamenti al client di Subversion (SVN) derefence simboliche come se fossero dei file?

StackOverflow https://stackoverflow.com/questions/1379722

  •  21-09-2019
  •  | 
  •  

Domanda

Ho una directory su un sistema Linux che contiene per lo più collegamenti simbolici ai file su un filesystem diverso. Mi piacerebbe aggiungere la directory in un repository Subversion, dereferenziazione i link simbolici nel processo (trattandoli come i file a cui puntano, invece di collegamenti). In generale, mi piacerebbe essere in grado di gestire tutte le operazioni di lavoro di copia con questo comportamento, ma il comando 'add svn' è dove inizia, credo.

L'utilità client SVN non sembra avere tutte le opzioni relative al link simbolico dereferenziazione nella copia di lavoro. Non ho trovato i riferimenti a tale nel manuale ( http: // svnbook. red-bean.com/en/1.5/index.html ), sia.

Ho trovato un poster sugli utenti SVN lista che ha chiesto la stessa domanda, ma non ha mai ricevuto una risposta, qui mailing:

(quel poster finito per usare hard link invece di link simbolici. Quella tecnica non è un'opzione, nel mio caso, perché il vero file sottostanti risiedono su un filesystem separato.)

Sto usando Subversion v1.6.1 su Fedora 11.

Per quello che vale, so che ci sono strumenti alternativi / tecniche che potrebbero aiutare approssimativa questo comportamento, ma che devo scartare per vari motivi. Ho già considerato [e polvere-binned] queste possibilità:     - una "unione" di montaggio, la fusione di tutte le directory che contengono i file reali, con la directory di lavoro copia SVN come il livello "top" nel sindacato;     - copia / spostamento dei file reali per lo stesso file system come il lavoro di copia-SVN, e l'utilizzo di collegamenti fisici invece di link simbolici;     - sistemi di controllo di versione non-SVN. Queste erano tutte le idee pulite, e sono sicuro che siano buone soluzioni ad altri problemi, ma non funzionerà tenuto conto dei vincoli di questo ambiente e situazione.

È stato utile?

Soluzione

Hai un sacco di vincoli, ma c'è una cosa che funziona sempre: incidere la fonte

.

Si può facilmente costruire il proprio svn per Linux, anche se facendo questo può mod o non essere "facile". In ogni caso, se non si dispone di tutti i link simbolici gestiti, è possibile effettuare un hack grezza e solo svn li seguono sempre, come se fossero hard link.

Se il repository non contiene collegamenti di versione, e avete bisogno di controllare quella parte di essa, allora si avrà bisogno di un hack più sofisticato che, per esempio, utilizza una proprietà che controlla la funzionalità di ogni file o per gerarchia o qualcosa del genere.

Ci potrebbe essere una altra scelta:. Di versione link apparso in 1.1.0, se il comportamento prima che doveva seguire i link simbolici allora forse si può solo eseguire un vecchio cliente

Altri suggerimenti

Idea: iniettare una libreria condivisa utilizzando LD_PRELOAD che intercetta stat / aperto / scollegare ecc in modo che svn non vede i link simbolici. Che si sarebbe evitare di dover modificare l'origine svn.

È anche possibile utilizzare collegamenti fisici, invece di link simbolici.

Per quanto ne so, con la versione corrente di eversione (1.6.x) non v'è alcun modo per farlo. Se fosse stato per i file (non directory) sullo stesso file system si potrebbe avere utilizzato collegamenti reali (w / o l'interruttore -s al comando ln).

Ho affrontato una sfida simile. La mia home directory contiene molti script in ~/scripts sparsi per i vari sub-directory. Tuttavia, ho voluto un layout più pulito in SVN di beneficiare colleghi che sfogliare le cose alla ricerca di esempi di codice.

ho creato una directory ~/scripts/svn/signal15/code/ con prod e test sub-directory sotto, quindi hard-linked tutti gli script sparsi altrove.

Il seguente comando quindi importato il layout di directory / file di cui avevo bisogno;

cd ~/scripts ; svn import svn http://svn_server/repos/code

Il pronti contro termine mostra ora http://svn_server/repos/code/signal15/ con "prod" e "test" sotto-directory.

Ora ho layout personalizzati; a) il layout La mia casa di directory rimane invariato (sans ~/scripts/svn sottodirectory) b) Il repository SVN contiene un ramo "signal15" con i miei script organizzati. P.S:. Con una funzione di shell, posso check-in e check-out, se necessario, anche

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