Se ho ben capito il problema, si ha:
project1/
project1/link1 -> ../../some/where/else
Se fate una semplice svn add link1
aggiunge una voce di collegamento simbolico al repository subversion, ma cosa stai cercando di ottenere le cose da qualche altra parte nell'albero.
In questo caso, si sta combattendo nella direzione sbagliata, è necessario creare i file e le directory reali sotto link1 e creare i collegamenti simbolici delle posizioni di destinazione nella directory link1. Questa sarebbe una soluzione semplice al problema.
Un'altra soluzione potrebbe essere quella di rendere la posizione ../../some/where/else
una posizione svn a sé stante, e rendere link1 una definizione esterna a quella posizione. Quando si esegue il commit nella directory principale, gli esterni verrebbero commessi allo stesso tempo e ciò consentirebbe di archiviare le informazioni; tuttavia, per garantire che l'altra posizione fosse mantenuta sincronizzata, è necessario assicurarsi di aggiornarla alla stessa versione dei dati memorizzati.
Nel mio caso, il mio desktop, ho una directory impostazioni:
$HOME/settings
Questa è una copia controllato da una directory contenente .bashrc
, .profile
, .vimrc
, .vim
, ecc file e cartelle da un svn
pronti contro termine. Tutti i miei file e le mie directory di profilo erano symlink in questa cartella, quindi ad esempio .profile
->settings/.profile
, ecc. Quando apporto le modifiche, esse si riflettono nella struttura svn, a cui posso eseguire il commit per assicurarmi di non perdere le mie impostazioni di configurazione quando vado su un altro sistema.
Se si vuole veramente svn di seguire i link simbolici come collegamenti fisici (non è possibile effettuare collegamenti fisici di directory perché sarebbe una brutta cosa ™ ), allora si dovrà incidere la fonte client SVN in modo che quello che ha fatto volevi; ma questo sarebbe un incubo di manutenzione.
È potrebbe farla franca facendo il link simbolico in un vicolo cieco punto diretto verso il bersaglio di montaggio, ma che ha il proprio problemi - si avrebbe bisogno di essere root per raggiungere questo obiettivo, e si finisce per lasciare voci divertenti nella vostra/proc/mounts per realizzare questo:
mount --bind /absolute/path/to/some/where/else project1/link1
Ottima risposta.Per ora andrò con la soluzione semplice. – Cyrille
Oh, ho appena ricordato perché l'ho fatto in questo modo (collegamento simbolico alla directory esterna all'interno della copia di lavoro): mi serviva l'utente di www-data per poter scrivere file in questa directory. Dal momento che non voglio modificare i permessi nella mia home directory fino alla mia copia di lavoro, credo che dovrò sfogliare le tue soluzioni alternative ... – Cyrille
lol, Pete, indovina quale link simbolico mi ha portato qui? ;-) Facciamolo presto! – gatopeich