it-swarm-eu.dev

Come faccio a dire a Subversion di trattare un file come un file binario?

Come faccio a dire a Subversion (svn) di trattare un file come un file binario?

62
Nick

È possibile identificare manualmente un file situato all'interno di un repository come binario utilizzando:

svn propset svn:mime-type application/octet-stream <filename>

Questo non è generalmente necessario, poiché Subversion tenterà di determinare se un file è binario quando viene aggiunto per la prima volta. Se Subversion sta etichettando erroneamente un determinato tipo come "testo" quando dovrebbe essere trattato come binario, è possibile configurare il Subversion funzione di propulsione automatica per taggare automaticamente quel file con un tipo MIME non testuale. Indipendentemente dalle proprietà configurate sul file, Subversion archivia comunque il file in un formato binario all'interno del repository.

Se Subversion identifica il tipo MIME come tipo "testo", abilita alcune funzionalità che non sono disponibili sui file binari, come svn diff e svn blame . Consente inoltre la conversione automatica della fine della linea, che è configurabile su base client-per-client.

Per ulteriori informazioni, vedere In che modo Subversion gestisce i file binari?

81
stormlash

Dalla pagina 367 del libro Subversion

Nel senso più generale, Subversion gestisce i file binari in modo più elegante rispetto a CVS. Poiché CVS utilizza RCS, è in grado di memorizzare solo copie complete successive di un file binario in modifica. Subversion, tuttavia, esprime differenze tra i file utilizzando un algoritmo di differenziazione binaria, indipendentemente dal fatto che contengano dati testuali o binari. Ciò significa che tutti i file vengono archiviati in modo differenziato (compresso) nel repository.

Gli utenti CVS devono contrassegnare i file binari con flag -kb per evitare che i dati vengano confusi (a causa dell'espansione delle parole chiave e delle traduzioni di fine riga). A volte dimenticano di farlo.

Subversion prende la via più paranoica. Innanzitutto, non esegue mai alcun tipo di traduzione di parole chiave o di fine riga a meno che non gli venga esplicitamente richiesto di farlo (consultare la sezione chiamata "Sostituzione delle parole chiave" e la sezione chiamata "Sequenze di caratteri di fine riga" per maggiori dettagli). Per impostazione predefinita, Subversion considera tutti i dati dei file come stringhe di byte letterali e i file vengono sempre archiviati nel repository in uno stato non tradotto.

In secondo luogo, Subversion mantiene una nozione interna del fatto che un file sia "testo" o "binario", ma questa nozione esiste solo nella copia di lavoro. Durante un aggiornamento svn, Subversion eseguirà fusioni contestuali su file di testo modificati localmente, ma non tenterà di farlo per i file binari.

Per determinare se è possibile un'unione contestuale, Subversion esamina la proprietà svn: mime-type. Se il file non ha proprietà svn: mime-type o ha un tipo MIME testuale (ad esempio, text/*), Subversion presuppone che sia testo. Altrimenti, Subversion presuppone che il file sia binario. Subversion aiuta anche gli utenti eseguendo un algoritmo di rilevamento binario nei comandi svn import e svn add. Questi comandi faranno una buona ipotesi e quindi (eventualmente) imposteranno una proprietà binaria svn: mime-type sul file che viene aggiunto. (Se Subversion indovina in modo errato, l'utente può sempre rimuovere o modificare manualmente la proprietà.)

Il montaggio a mano verrebbe eseguito da

svn propset svn:mime-type some/type filename.extension
21
Evil Andy

Fondamentalmente, devi impostare il tipo mime su octet-stream:

svn propset svn:mime-type application/octet-stream <filename>
15
KTamas

Se 'svn add' indovina il tipo errato e ti dà un errore come il seguente:

svn: E200009: File 'qt/examples/dialogs/configdialog/images/config.png' has inconsistent newlines
svn: E135000: Inconsistent line ending style

quindi la soluzione alternativa è aggiungere il file senza proprietà e quindi impostare le proprietà in un secondo passaggio:

svn add --no-auto-props qt/examples/dialogs/configdialog/images/config.png
svn propset svn:mime-type image/png qt/examples/dialogs/configdialog/images/config.png
13
user1454388

Per esempio:

svn propset svn:mime-type image/png foo.png
8
Jan Krüger

Sebbene Subversion cerchi di rilevare automaticamente se un file è binario o meno, puoi sovrascrivere il tipo mime usando svn propset . Per esempio, svn propset svn:mime-type application/octet-stream example.txt. Ciò farà agire il tuo file come una raccolta di byte anziché come un file di testo. Vedi anche, il manuale svn su Portabilità del file .

4
grammar31

Se si utilizza tortoise svn in Windows, fare clic con il pulsante destro del mouse sul file e passare a proprietà. Fare clic su nuovo e aggiungere una nuova proprietà di tipo svn: mime-type. Per il valore messo: application/octet-stream

3
Brian R. Bondy

Come per Subversion FAQ , puoi usare svn propset per cambiare la proprietà svn: mime-type in application/octet-stream

2
Adrian Petrescu

svn cerca una proprietà di tipo mime, supponendo che sia un testo se non esiste. È possibile impostare esplicitamente questa proprietà, vedere http://svnbook.red-bean.com/en/1.5/svn.forcvs.binary-and-trans.html

2
Paul Dixon

Di solito lo fa per impostazione predefinita, ma se non lo è è necessario esaminare le proprietà del file e il propset.

0
Frank Wiles