2012-02-11 5 views
5

Eventuali duplicati:
Locking binary files using git version control systemIn Git, c'è un modo per contrassegnare un file come "puro"?

sto commettendo un file che non dovrebbe mai essere fuse, ma sovrascritti (magari con un avvertimento) quando gli altri tirano. C'è un modo per realizzare questo?

+1

In che modo è "puro"? È un file derivato o forse un file binario? – cmbuckley

+0

Non riuscivo a pensare ad un'altra parola. Insolubile, forse? Sì, per i nostri scopi diciamo che è un file derivato. –

+0

Questo ha un odore simile a un argomento "Ho bisogno di serrature in Git", anche se formulato in modo diverso. Quello che chiedi è contrario allo spirito di un DVCS. – Perception

risposta

5

È poco chiaro quale sia la tua situazione attuale. La prima domanda che dovresti porci è se il file ha effettivamente bisogno di essere rintracciato - i file non divergenti sono spesso file derivati, come suggerito nei commenti, e quindi non è necessario (e non dovrebbe) essere tracciati.

Se è davvero necessario rintracciarlo, è un file binario? Git non tenta di unire file binari - vengono sempre visualizzati come conflitti di unione. Git è bravo nel rilevare i file binari, quindi in questo caso probabilmente sei al sicuro. Se non è un file binario, devi comunque forzare Git a gestirlo appropriatamente. In un file .gitattributes, aggiungere qualcosa come:

path/to/file merge=binary 

Ciò dirigerla a trattarlo come un file binario a scopo di fusione. Potresti anche, se lo desideri, definire un driver di unione personalizzato. Utilizzare merge=my_merge_driver nel file gitattributes, poi nella vostra gitconfig aggiungere qualcosa come:

[merge "my_merge_driver"] 
    name = descriptive name 
    driver = my_script %O %A %B 

I tre argomenti per lo script sono la versione antenato comune (O per originale), la versione del ramo corrente (A) e l'altro ramo del versione (% B): sono file temporanei e il driver di unione deve eseguire l'unione e lasciare il risultato in% A. Vedi man gitattributes per ulteriori informazioni.

+0

Funzionerebbe anche su un'unione avanti veloce? – Carl

+0

@carleeto Il driver di unione viene richiamato solo se il file deve essere effettivamente unito, il che non è il caso in un'unione di avanzamento rapido. Ma a meno che tu non stia facendo qualcosa di diverso dall'OP qui, non importa: l'unione in avanti veloce sta già sovrascrivendo la versione originale con la versione unita. – Cascabel

+0

Grazie per quello. Stavo solo cercando di mantenere alcuni fastidiosi prodotti di costruzione che erano nel repository principale di distrarmi nel mio ramo :) – Carl

Problemi correlati