2010-01-28 22 views
13

Gibt es eine Möglichkeit, Perforce mitzuteilen, dass Textdateien allein gelassen werden sollen, ohne den Dateityp als Binärdatei festzulegen? Oder gibt es eine Möglichkeit, dem Perforce-Client Diff-Binärdateien mitzuteilen? Binary ist normalerweise nicht wünschenswert, weil ich die Fähigkeit zum diff. Verliere.Perforce: Ändern des Textdateiformats durch Perforce

Zur Verdeutlichung: Wenn ich eine * .txt-Datei auf meinem Fenster-Client bearbeite und ändere, haben Zeilenumbrüche CR + LF wie im DOS-Format. Aber wenn ich P4 auf einem Unix-Client synchronisieren, wird es nur LF haben. Ich brauche Perforce, um das Format so zu belassen, wie es ist, unabhängig davon, wo der Perforce-Client lebt.

Das sagte, ich habe eine Umgehung: Set-Datei-Typ als binär; und/oder erstellen Sie eine Verzweigung mit Textdateien, die als "Text" definiert sind, und integrieren Sie regelmäßig in die Hauptzeile, in der Textdateien als "binär" festgelegt sind. Aber das ist ein zu komplizierter Work-Around für das, was ein sehr einfaches Problem sein sollte.

Schließlich bin ich auf Perforce Windows-Client 2006.2.

Vielen Dank im Voraus.

Antwort

8

Legen Sie alle Ihre Client/Arbeitsbereich-Spezifikationen auf 'Unix' Zeilenenden fest. Dann findet keine Konvertierung statt, wenn Sie unter Windows einchecken.

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

+0

Ok. Das ist viel besser. Obwohl es nicht ideal ist, ist es viel besser, als einen separaten Zweig zu erstellen. Vielen Dank! – hythlodayr

+0

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

-3

Geben Sie den Dateien eine andere Erweiterung.

+1

Nein, da diese Dateien in Produktionsqualität sein sollen. Man sollte in der Lage sein, nahtlos und problemlos in die Umgebung zu synchronisieren und zu kopieren. In diesem Sinne ist auch unix2dos keine Option. – hythlodayr

5

Der Perforce-Client kann die Zeilenendung bei der Synchronisierung mit verschiedenen Plattformen ordnungsgemäß verarbeiten, vorausgesetzt, die Option LineEnd ist auf Ihrem Client richtig eingestellt. Vielleicht hast du deine falsch? Öffnen Sie Ihre Kundenspezifikationen und stellen Sie die Option LineEnd entsprechend Ihren Anforderungen ein.

Check out this KB article auf ihrer Website für weitere Informationen. Hier ein Auszug:

Auf der Serverseite verarbeitet Perforce alle Textdateien mit Unix-LF Zeilenende. Obwohl Perforce speichert Server-Archivdateien auf der Festplatte in der Betriebssystem native Linie Abschluss Konvention (CR/LF auf Windows LF auf Unix), alle Zeilenenden sind normiert auf Unix-LF Zeilenenden für die interne Perforce Server-Operationen wie p4 sync, p4 reichen und p4 diff.

Auf der Client-Seite Arbeitsbereich, Perforce Handhabung von Zeilenenden ist durch eine globale Option für jeden clientspec bestimmt. Wenn Sie die Textdateien mit einem Clientarbeitsbereich mit p4 sync oder mit p4 submit an einen Perforce-Server senden, werden die Zeilenenden wie im Abschnitt clientspec LineEnd angegeben konvertiert.

+0

Ich hatte davor Angst, aber danke für den Artikel. Einfach ausgedrückt, müssen unsere Unix-Clients (und der Dateiserver) in der Lage sein, eine Mischung aus Windows- und Unix-Textdateien zu speichern. Noch schlimmer: Wir haben bestimmte Lokalisierungstextdateien (ähnlich den Java-Eigenschaftendateien), die der Perforce-Server austrickst. Leider gibt es nur eine Lösung, die Dinge binär zu machen. – hythlodayr

+0

@hythlodyr: Haben Sie derzeit einen Supportvertrag mit Perforce? Wenn ja, könnten Sie sie anrufen. Vielleicht kennen sie ein paar Tricks, mit denen sie sich so verhalten kann, wie Sie es wollen. – raven

+0

Das Problem ist, dass es nicht funktioniert und Perforce weigern sich, den Fehler zu bestätigen. Perforce beschädigt standardmäßig alle Textdateien, wenn Sie eine Datei von * nix mit Windows-Zeilenenden oder umgekehrt senden. – Richard1403832

1

Wenn Textdateien hinzufügen, die Sie wollen Perforce als binäres wird, verwenden Sie den Befehl p4 add mit der -t Option der Typ-Mapping-Tabelle zu überschreiben. Siehe Dokumentation here. Das dort angegebene Beispiel ist p4 add -t binary file.pdf.

3

Ich bin gerade genau auf das gleiche Problem gestoßen, habe aber eine bessere Lösung, die keine Änderung der Client-Spezifikationen mit sich bringt (die international sind und nicht alle, auf die ich Schreibzugriff habe).

Alle unsere Kunden sind Windows-PCs, aber Cygwin ist im Perforce Depot enthalten. Cygwin ist eine Windows-Implementierung von Unix und erfordert, dass Textdateien LF für Zeilenenden verwenden.

Eine mögliche Lösung für ältere Versionen von Cygwin ist das Mounten des Root mit der Option "text", was bedeutet, dass Dateien CR + LF Zeilenenden haben können. Beim Upgrade auf Cygwin 1.7.9 funktionierte dies jedoch nicht mehr, da Mounts vorübergehend sind, es sei denn, sie werden in/etc/fstab geschrieben. Ich habe es nicht geschafft, diese Arbeit zu machen.

Zum Glück, das Perforce Guru neben mir sitzt, kam mit der Lösung der Änderung des Dateitypen binären bis + D, die die gleiche RCS inkrementelle Patch Speicherung als Textdateien verwendet, aber ohne die automatischen Zeilenende-Konvertierung.

Ich kann diese "Text" -Dateien erfolgreich zwischen meinem lokalen Arbeitsbereich und dem Depot unterscheiden.