2009-01-19 8 views
35

Ich habe eine Reihe von Dateien, die ich in SVN eingecheckt, ohne ihre Mime-Typen richtig eingerichtet. SVN klassifizierte sie zunächst als binär.Wie erklärst du SVN, um eine Datei als Text, nicht binär zu behandeln

Ich habe seit ihrem Mime-Typ in SVN über Propset auf "Text/plain; charset = UTF-8" gesetzt und ich habe sichergestellt, dass alle Dateien UTF-8 signiert sind. Wenn ich 'Svn Schuld' bin, sagt Svn, dass die Datei binär ist und mir keine explizite Schuld-Typ-Ausgabe gibt.

Irgendwelche Vorschläge, um SVN zu überzeugen, dass dies wirklich Textdateien sind?

+0

Liefert propget den richtigen Mime-Typ? –

+0

Danke für die Interaktion! Ja, Propget gibt den richtigen Typ zurück. Ich habe gerade einen: svn propget svn: MIME-Typ Dateiname Ausgabe: Text/plain; charset = UTF-8 – DWright

+1

@DWright, nur um zu bestätigen, svn-propset ändert den Typ in der lokalen Arbeitskopie und _erfordert eine SVN-Commit_ für den Typ im Repository geändert werden. Beide Typen müssen übereinstimmen und "diff-fähig" sein, damit svn diff/svn die Schuld geben kann. – Fox

Antwort

46

Einstellung der svn: mime-type Eigenschaft nur "text/plain" hilft:

svn propset svn:mime-type text/plain build.xml 
svn commit build.xml 

Auch Sie Subversion zwingen kann, eine Datei als Text zu behandeln, wenn die Schuld:

svn blame file/to/blame --force 
+0

Danke. Die --force-Flagge hat getan, was ich brauchte. Ich habe auch versucht, nur "text/plain" zu verwenden, aber das änderte nichts daran. – DWright

+7

Für zukünftige Leser: svn propset svn: mime-type text/plain build.xml –

+0

Verwendung 'finden. -name * .proto | xargs svn propset svn: mime-type text/plain 'um alle' proto' Dateien als reine Textdatei zu markieren: –

1

This answer hat die gleiche Idee, aber umgekehrt. Die darin enthaltenen Zitate sind immer noch relevant für Ihre Anfrage.

+0

Ja, ich habe das umgekehrt versucht, indem ich die Eigenschaft auf text/plain gesetzt habe. Es schien nicht zu funktionieren. – DWright

0

Nachdem Sie dem Repository eine Datei hinzugefügt haben, müssen Sie wahrscheinlich auch den Typ für das REPOSITORY festlegen. Verwenden Sie die URL zum Repository anstelle des Pfads zur Arbeitskopie in Ihrem Propset-Befehl.

+1

Das ist falsch (oder unklar genug, um falsch zu liegen). Subversion-Eigenschaften werden dem Repository beim Einchecken übergeben, genau wie jede andere Dateiänderung. – yam655

0

Sieht aus wie Manipulationen mit MIME-Typ nicht Svn überzeugen, eine Datei als Text zu behandeln. Aber wenn der richtige Mime-Typ vor dem ersten Commit gesetzt wurde, dann behandle die Datei richtig. Zum Beispiel fügt svn eclipse .project und .classpath als application/xml hinzu und behandelt sie als bin. Wenn Sie es jedoch vor dem ersten Commit in text/xml ändern, werden sie als Text behandelt.

2

Ich hatte das gleiche Problem: Ich habe eine Reihe von utf8-Dateien (native Encoding für Linux) eingecheckt, von denen einige falsch als binär aufgenommen wurden und "(bin)" anzeigen. Ich habe tauchen nicht in, wie der Fehler aufgetreten ist, aber überprüft, was es war ...

$ svn propget svn:mime-type * 

... darauf hingewiesen, dass korrekt ausgecheckten in Textdateien hatte keine svn: mime-Eigenschaft überhaupt, und einfach löschte den SVN : Mime-Type-Eigenschaft aus Textdateien falsch falsch binär.

$ svn propdel svn:mime-type [mislabeled-text-file...] 
$ svn ci -m "zap binary mime-types" [mislabeled-text-file...] 

Dies scheint ohne negativen Effekt gearbeitet zu haben. Vorbehaltsnutzer: Ich habe keine Ahnung, wie sich Windows in diesem Fall verhalten würde, obwohl dies leicht überprüfbar ist.