2009-08-18 7 views
2

Ich habe einen SVN-Client auf Mac OS X installiert. Ich bin mir nicht sicher, ob es mit Mac OS X oder Xcode heruntergeladen wurde, die Apple's Developer Tools enthält. Ich kann "svn" über die Befehlszeile ausführen, aber ich bin mir nicht sicher, wo sich die Datei/App befindet.Installierte SVN (1.6) unter Mac OS X zur Integration mit Xcode

Wenn ich "svn --version" starte, heißt es, ich habe Version 1.4 installiert.

Ich stelle fest, dass ich, wenn ich versuche, SVN innerhalb von Xcode zu verwenden, es mir nicht erlaubt, Befehle an einen Server mit 1.6 auszuführen. Vermutlich weil mein Client 1.4 ist und versucht, sich mit 1.6 zu verbinden.

Die Fehlermeldung erhalte ich, wenn ich SCM wählen>Gesamtes Projekt Commit ist:

Error: 155021 (Unsupported working copy format) Description: This client is too old to work with working copy '...'; please get a newer Subversion client

Meine Frage ist, wie ich dieses SVN-Client so zu 1.6 aktualisiere dass Xcode kann es immer noch verwenden und hoffentlich ohne die Notwendigkeit für Software von Drittanbietern.

Ich versuchte mit der Methode beschrieben, aber es hat nicht funktioniert, ich bekomme immer noch die gleiche Fehlermeldung beim Versuch zu aktualisieren/zu committen. Hinweis: Beim Versuch, diese Methode zu verwenden, habe ich festgestellt, dass sie einen Ordner root/usr/lib/haben, aber ich habe den Befehl ln mit dem Ordner /Developer/SDKs/MacOSX10.5.sdk/usr/lib/ verwendet Dort befinden sich alle meine Dateien mit ähnlichen Namen. So zum Beispiel statt der Zeile:

ln -s -f /opt/subversion/lib/libapr-1.dylib /usr/lib/libapr-1.dylib

ersetzt ich jede Zeile wie folgt aussehen:

ln -s -f /opt/subversion/lib/libapr-1.dylib /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libapr-1.dylib

und dann lief ich die Datei. War das das Richtige?

Als ich nach SCM gehen>Repositorys, es mir nicht zeigen, mein Repository (Ich denke, das bedeutet, dass es den SVN Liste Befehl erfolgreich Gebrauch kann dazu führen, dass das, was es auf der Unterseite zeigt).


Irgendwelche anderen Ideen?

Einige Sachen, die ich dachte, könnte helfen, wenn es eine Möglichkeit gibt, herauszufinden, wo die Datei svn ist in der Befehlszeile. Gibt es eine Möglichkeit herauszufinden, wo es sich befindet?

Ich verwende Xcode Version 3.1.3.

Danke für die Hilfe.


-Update: Nach ein paar Antworten zu lesen, verstehe ich es besser. Jetzt habe ich auch SCPlugin installiert, das einen SVN 1.6 Client enthält. Ich möchte, dass sowohl Xcode als auch SCPlugin Seite an Seite arbeiten, daher müsste ich den Client, den Xcode verwendet, auf 1.6 aktualisieren.

Ich habe den 'what svn' Befehl wie empfohlen verwendet und es hat sich gezeigt, dass svn im Verzeichnis/usr/bin/liegt. Ich wusste nicht, dass ich den/usr/Ordner hatte (Mac OS X Neuling ... habe es nicht im Finder gesehen, also dachte ich, dass es nicht existiert).Ich navigierte zum Ordner/usr/und fand alle libsvn_ * -Dateien, was bedeutete, dass ich das Skript nicht ändern musste, um das /Developer/SDKs/MacOSX10.5.sdk/usr/lib/ zu verwenden, also benutzte ich ein wenig optimiert .sh-Datei von dem they recommend here.

Die erste Änderung besteht darin, das erste Auftreten von Delta, das Diff ersetzt, zu entfernen. Dies liegt daran, dass die letzten beiden Zeilen Diff bereits verwenden, um Diff zu ersetzen. Daher ist es redundant und verursacht eine Meldung, wenn Sie die Datei senden. Die andere Sache, die ich änderte, ist das Hinzufügen von "cp" -Zeilen, die alle ursprünglichen Verknüpfungen zu einem root/backup/-Ordner kopiert, den Sie manuell erstellen sollten. Das hat mich gerettet, als ich es zum ersten Mal aus Versehen ausgeführt habe und Dateien in /Developer/SDKs/MacOSX10.5.sdk/usr/lib/ ersetzt habe ... Ich habe einfach alle Dateien mit dem Befehl mv kopiert und alles wurde wie wiederhergestellt Es war ursprünglich.

Falls jemand will, um sie auszuführen, hier ist die Version, die ich lief:

cp -R /usr/lib/libapr-1.dylib /backup/libapr-1.dylib 
ln -s -f /opt/subversion/lib/libapr-1.dylib /usr/lib/libapr-1.dylib 
cp -R /usr/lib/libapr-1.0.dylib /backup/libapr-1.0.dylib 
ln -s -f /opt/subversion/lib/libapr-1.dylib /usr/lib/libapr-1.0.dylib 
cp -R /usr/lib/libaprutil-1.dylib /backup/libaprutil-1.dylib 
ln -s -f /opt/subversion/lib/libaprutil-1.dylib /usr/lib/libaprutil-1.dylib 
cp -R /usr/lib/libaprutil-1.0.dylib /backup/libaprutil-1.0.dylib 
ln -s -f /opt/subversion/lib/libaprutil-1.dylib /usr/lib/libaprutil-1.0.dylib 
cp -R /usr/lib/libsvn_client-1.dylib /backup/libsvn_client-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_client-1.dylib /usr/lib/libsvn_client-1.dylib 
cp -R /usr/lib/libsvn_client-1.0.dylib /backup/libsvn_client-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_client-1.dylib /usr/lib/libsvn_client-1.0.dylib 
cp -R /usr/lib/libsvn_fs_fs-1.dylib /backup/libsvn_fs_fs-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs_fs-1.dylib /usr/lib/libsvn_fs_fs-1.dylib 
cp -R /usr/lib/libsvn_fs_fs-1.0.dylib /backup/libsvn_fs_fs-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs_fs-1.dylib /usr/lib/libsvn_fs_fs-1.0.dylib 
cp -R /usr/lib/libsvn_fs-1.dylib /backup/libsvn_fs-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs-1.dylib /usr/lib/libsvn_fs-1.dylib 
cp -R /usr/lib/libsvn_fs-1.0.dylib /backup/libsvn_fs-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_fs-1.dylib /usr/lib/libsvn_fs-1.0.dylib 
cp -R /usr/lib/libsvn_ra_local-1.dylib /backup/libsvn_ra_local-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_local-1.dylib /usr/lib/libsvn_ra_local-1.dylib 
cp -R /usr/lib/libsvn_ra_local-1.0.dylib /backup/libsvn_ra_local-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_local-1.dylib /usr/lib/libsvn_ra_local-1.0.dylib 
cp -R /usr/lib/libsvn_ra_svn-1.dylib /backup/libsvn_ra_svn-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_svn-1.dylib /usr/lib/libsvn_ra_svn-1.dylib 
cp -R /usr/lib/libsvn_ra_svn-1.0.dylib /backup/libsvn_ra_svn-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra_svn-1.dylib /usr/lib/libsvn_ra_svn-1.0.dylib 
cp -R /usr/lib/libsvn_ra-1.dylib /backup/libsvn_ra-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra-1.dylib /usr/lib/libsvn_ra-1.dylib 
cp -R /usr/lib/libsvn_ra-1.0.dylib /backup/libsvn_ra-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_ra-1.dylib /usr/lib/libsvn_ra-1.0.dylib 
cp -R /usr/lib/libsvn_wc-1.dylib /backup/libsvn_wc-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_wc-1.dylib /usr/lib/libsvn_wc-1.dylib 
cp -R /usr/lib/libsvn_wc-1.0.dylib /backup/libsvn_wc-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_wc-1.dylib /usr/lib/libsvn_wc-1.0.dylib 
cp -R /usr/lib/libsvn_repos-1.dylib /backup/libsvn_repos-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_repos-1.dylib /usr/lib/libsvn_repos-1.dylib 
cp -R /usr/lib/libsvn_repos-1.0.dylib /backup/libsvn_repos-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_repos-1.dylib /usr/lib/libsvn_repos-1.0.dylib 
cp -R /usr/lib/libsvn_subr-1.dylib /backup/libsvn_subr-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_subr-1.dylib /usr/lib/libsvn_subr-1.dylib 
cp -R /usr/lib/libsvn_subr-1.0.dylib /backup/libsvn_subr-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_subr-1.dylib /usr/lib/libsvn_subr-1.0.dylib 
cp -R /usr/lib/libsvn_delta-1.dylib /backup/libsvn_delta-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_delta-1.dylib /usr/lib/libsvn_delta-1.dylib 
cp -R /usr/lib/libsvn_delta-1.0.dylib /backup/libsvn_delta-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_delta-1.dylib /usr/lib/libsvn_delta-1.0.dylib 
cp -R /usr/lib/libsvn_diff-1.dylib /backup/libsvn_diff-1.dylib 
ln -s -f /opt/subversion/lib/libsvn_diff-1.dylib /usr/lib/libsvn_diff-1.dylib 
cp -R /usr/lib/libsvn_diff-1.0.dylib /backup/libsvn_diff-1.0.dylib 
ln -s -f /opt/subversion/lib/libsvn_diff-1.dylib /usr/lib/libsvn_diff-1.0.dylib 

Nun, wenn ich laufen ‚svn --version‘, es als Client 1.6.3 zeigt sich, was perfekt ist. Xcode funktioniert auch einwandfrei. Danke für die Antworten, die mir geholfen haben zu verstehen, was besser läuft.

Antwort

1

Der Fehler, den Sie bekommen, liegt darin, dass Sie irgendwann einen Client der Version 1.6 auf Ihrem Computer installiert haben. Ich nehme an, dass dies passiert ist, als Sie versuchten, zu aktualisieren.

Dies passiert, weil, sobald ein Client eine Arbeitskopie sieht, es auf seine aktuelle Version aktualisiert. Sie haben also einen 1.6-Client ausgeführt, die Arbeitskopie aktualisiert, und jetzt verwenden Sie den 1.4-Client erneut, sodass Sie den Fehler sehen, den Sie sehen.

Es hat nichts mit dem Server zu tun - wenn Sie die aktuelle Arbeitskopie mit einem neuen Client übernehmen, dann die Arbeitskopie löschen und einen neuen Checkout mit xcode bekommen, sind Sie wieder einsatzbereit und kein Problem (mit den alten Kunden noch).

1.4 Clients können ziemlich glücklich mit 1.6 Servern sprechen, Sie erhalten einfach nicht alle 1.6 Funktionen, wie Merge-Tracking und verbesserte Baumkonflikte.

Wie, um herauszufinden, wo der SVN-Client ist, führt den Befehl:

which svn 

Arbeit an einem osx-System?

+0

Danke für die Hilfe, der Befehl 'which svn' funktioniert unter OS X und es zeigt, dass es in/usr/bin/svn ist. Dies führte mich zu der Lösung, nach der ich suchte. – Senseful

1

Presumably because my client is 1.4 and it's trying to connect to 1.6.

Nein. Das Problem ist das Format der lokalen Arbeitskopie, die Sie ausgecheckt haben. Die Metadaten in den .svn-Ordnern werden automatisch auf ein neues Format aktualisiert, wenn Sie sie mit einem neueren Svn-Client, z. ausgecheckt mit svn 1.4.x und verwendet mit svn 1.5.y. Sobald dieses Upgrade durchgeführt wurde, kann der ältere Client die Arbeitskopie nicht mehr verwenden.

Die Lösung ist entweder

  1. Upgrade eines Ihrer SVN-Kunden, so dass sie in der gleichen Version (bevorzugt) sind
  2. oder eine neue Arbeitskopie
  3. überprüfen oder verwenden Sie die downgrade script als erklärt here

Optionen (2) und (3) verlangen, dass Sie nicht versehentlich die Arbeitskopie mit dem newe berühren r Svn Client wieder, so (1) ist wirklich vorzuziehen.