2010-01-28 9 views
13

C'è un modo per dire a Perforce di lasciare i file di testo da solo senza impostare il tipo di file come binario? O a parte questo, c'è un modo per dire al client Perforce di diffare i binari? Il binario di solito non è desiderabile, perché perdo la capacità di diff.Perforce: mantenere Perforce dal modificare il formato di file di testo

Per chiarire: Se si modifica e si apportano modifiche a un file * .txt sul mio client finestra, newline avrà CR + LF come per il formato DOS. Ma se I P4 si sincronizza su un client Unix, avrà solo LF. Ho bisogno che Perforce mantenga il formato così com'è, indipendentemente da dove risiede il cliente Perforce.

Detto questo, ho una soluzione: impostare il tipo di file come binario; e/o creare un ramo con file di testo impostati come "testo" e integrarlo periodicamente nella riga principale in cui i file di testo sono impostati come "binari". Ma questo è un work-around troppo complicato per quello che dovrebbe essere un problema molto semplice.

Infine, sono in Perforce client Windows 2006.2.

Grazie in anticipo.

risposta

8

Impostare tutte le specifiche client/spazio di lavoro su terminazioni di riga 'unix'. Quindi nessuna conversione avverrà quando effettui il check-in su Windows.

Vedi http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/

+0

Ok. Questo è molto meglio. Anche se non è l'ideale, è molto meglio che dover creare un ramo separato. Grazie! – hythlodayr

+0

Link aggiornato a: http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/ –

-3

Dai ai file un'estensione diversa.

+1

No, poiché si suppone che siano file di qualità di produzione. Uno dovrebbe essere in grado di sincronizzare e copiare nell'ambiente senza problemi e senza problemi. Allo stesso modo, anche unix2dos non è un'opzione. – hythlodayr

5

Il client Perforce può gestire la fine della linea correttamente durante la sincronizzazione su piattaforme diverse a condizione che l'opzione LineEnd sia impostata correttamente sul client. Forse hai sbagliato il tuo? Apri le specifiche del cliente e imposta l'opzione LineEnd in base alle tue esigenze.

Dai un'occhiata al this KB article sul loro sito web per maggiori informazioni. Ecco un estratto:

Sul lato server, Perforce elabora tutti i file di testo utilizzando in stile Unix LF line-terminazioni. Anche se Perforce negozi file di archivio del server su disco in nativo linea convenzione cessazione del sistema operativo (CR/LF in di Windows, LF su Unix), tutte le line-terminazioni sono normalizzati a LF in stile Unix line-desinenze per interni Perforce Operazioni server come sincronizzazione p4, p4 invio e p4 diff.

Sul lato di lavoro client, Perforce movimentazione di terminatore è determinata da un'opzione globale di ciascuna clientspec. Quando si file di testo di sincronizzazione a un'area di lavoro cliente con sync p4, o presentare di nuovo a un server Perforce con p4 presentare, loro line-terminazioni sono convertite come specificato nella sezione LineEnd clientspec .

+0

Avevo paura di ciò, ma grazie per l'articolo. In poche parole, i nostri client perforx Unix (e file server) devono essere in grado di contenere un insieme di file di testo Windows e Unix. Ancora peggio: abbiamo alcuni file di testo di localizzazione (simili ai file delle proprietà Java) che il server Perforce manipola. Ahimè, l'unica soluzione è quella di impostare le cose in binario. – hythlodayr

+0

@hythlodayr: al momento hai un contratto di supporto con Perforce? Se è così, potresti chiamarli. Forse conoscono alcuni trucchi che possono portarlo a comportarsi nel modo desiderato. – raven

+0

Il problema è che non funziona e Perforce si rifiuta di riconoscere il bug. Perforce corrompe tutti i file di testo per impostazione predefinita se si invia un file da * nix con terminazioni di linea Windows o viceversa. – Richard1403832

1

Quando si aggiungono file di testo che si desidera essere considerato binario in Perforce, utilizzare il comando p4 add con l'opzione -t per ignorare la tabella di mapping. Vedere la documentazione here. L'esempio dato è p4 add -t binary file.pdf.

3

Ho appena incontrato esattamente lo stesso problema, ma ho una soluzione migliore che non comporta il cambiamento delle specifiche del client (che sono internazionali, e non tutte a cui ho accesso in scrittura).

Tutti i nostri client sono PC Windows, ma Cygwin è incluso nel Perforce Depot. Cygwin è un'implementazione di Unix di Windows e richiede che i file di testo utilizzino LF per le terminazioni di riga.

Una possibile soluzione per le versioni precedenti di Cygwin consiste nel montare la radice utilizzando l'opzione "testo", il che significa che i file possono avere terminazioni di linea CR + LF. Tuttavia, durante l'aggiornamento a Cygwin 1.7.9, questo non funzionava più, poiché i montaggi sono transitori a meno che non siano scritti in/etc/fstab. Non sono riuscito a farlo funzionare.

Per fortuna, il Perforce Guru seduto accanto a me si avvicinò con la soluzione di cambiare il tipo di file per binario + D, che utilizza la stessa RCS memorizzazione di patch incrementale come file di testo, ma senza la linea automatica fine di conversione.

Sono in grado di diffare questi file "di testo" correttamente tra il mio spazio di lavoro locale e il depot.

Problemi correlati