Domanda

Considerando che Git non riconosce i link simbolici che punto al di fuori del repository, c'è qualche problema utilizzando hard link?

Potrebbe Git romperle? Potete per favore mi punto a informazioni dettagliate?

È stato utile?

Soluzione

L'oggetto 'albero', che rappresenta le directory in Git, il nome del file e negozi (sottoinsieme) permessi. Essa non memorizza il numero di inode (o altro tipo di file di id). Pertanto hard link non possono essere rappresentati in git , almeno non senza strumenti di terze parti come ad esempio metastore o git-cache-meta ( e io non sono sicuro se è possibile anche con questi strumenti).

Git cerca di non toccare i file che non ha bisogno di aggiornamento, ma si deve tener conto che git non cerca di preservare la hardlinks, in modo che possano essere rotti da git.


A proposito di link simbolici che puntano fuori repository : git non ha problemi con loro e dovrebbe conservare contenuti dei link simbolici ... ma l'utilità di tali collegamenti è dubbia a me, come se tali link simbolici sarebbero rotti o non dipende dalla struttura del filesystem fuori repository git, e non sotto il controllo di git.

Altri suggerimenti

Ok, ora si tratta di una risposta tardiva = D

ho scoperto che, utilizzando i ganci, è possibile catturare l'evento git pull (quando c'è qualcosa per tirare ...) scrivendo il gestore di eventi script per il file .git/hooks/post-merge.

In primo luogo, bisogna chmod +x esso.

Poi, mettere i comandi ln suo interno per ricreare collegamenti fisici per ogni tiro. eh Neat!

Funziona, ho solo bisogno che per il mio progetto e ls -i spettacoli che i file sono stati collegati automaticamente dopo pull.


Il mio esempio di .git/hooks/post-merge:

#!/bin/sh
ln -f $GIT_DIR/../apresentacao/apresentacao.pdf $GIT_DIR/../capa/apresentacao.pdf
ln -f $GIT_DIR/../avaliacoesMono/avaliacao_monografias_2011_Nilo.pdf $GIT_DIR/../capa/avaliacoes.pdf
ln -f $GIT_DIR/../posters/poster_Nilo_sci.pdf $GIT_DIR/../capa/poster.pdf
ln -f $GIT_DIR/../monografia/monografia_Nilo.pdf $GIT_DIR/../capa/monografia_Nilo.pdf

IMPORTANTE:. Come si può vedere, il percorso a qualsiasi file nel repository dovrebbe iniziare con $GIT_DIR, quindi aggiungere il percorso relativo parziale al file

Inoltre importante:. -f è necessario, perché si sta ricreando il file di destinazione

Da questo msysgit problema

  

punti di giunzione non sono collegamenti simbolici; di conseguenza, i link simbolici sono semplicemente   non supportato in msysgit.

     

Inoltre, hard link non sono mai stati seguiti da Git .

Il problema era di Windows-oriented (in quanto si tratta di msysgit) e il dibattito sul potenziale supporto di collegamento simbolico.
Ma il commento su hard link preoccupazioni Git in generale.

Google 'git preserva i collegamenti' e dimostra che git non sa come preservare duro struttura di link per quanto ne so, forse in base alla progettazione.

i progetti Web di mine usano hard link come segue:

www/products/index.php
www/products/dell_latitude_id577/index.php #(hard linked to above)
www/products/dell_inspiron_id323/index.php #(hard linked again to above)

me@server:www/products$ ls -l index.php
-rwxr-xr-x 3 me me 1958 Aug 22 22:10 index.php*

Se avessi voluto fare i cambiamenti a index.php lo cambio in un posto e gli hard link (pagine di dettaglio del prodotto) punto alle modifiche -. Eccezione git non conserva questo rapporto durante la clonazione e tirando su altri computer

me@server:www$ git pull

su un'altra macchina creerà un nuovo index.php per ogni hard link.

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