Wie kann ich mich mit der SVN-CLI produktiver machen? Ich muss sich wiederholende Aufgaben wie diese erledigen:
- Suchen Sie nach geänderten Dateien im Verzeichnis
- begehen Sie nur EINIGE von ihnen
- Wählen Sie sie irgendwie anders aus, als sich an ihre Namen zu erinnern
- Liste nicht versionierter Dateien
- füge nur einige hinzu, indem du eine andere effektive Methode verwendest, als dich daran zu erinnern
- Setzen Sie nur einige Dateien in einem bestimmten Verzeichnis zurück
Ich war an TortoiseSVN unter Windows gewöhnt, aber ein Wechsel zu OSX (das ziemlich Linux-ähnlich ist) zwang mich, die CLI von SVN zu verwenden, da andere Clients schlecht oder sehr teuer sind.
bash
osx
subversion
Tomáš Fejfar
quelle
quelle
Antworten:
Ich stoße auf ähnliche Probleme. Mein Ansatz war es, Shell-Aliase oder -Funktionen für die häufigsten Aktionen zu schreiben, die ich ausführe. Als Referenz sind dies ZSH-Shell-Funktionen. Die Funktionen selbst sollten auch in Bash funktionieren, aber die Shell-Vervollständigung wäre anders.
Bei der Überprüfung Ihrer Nutzung unterscheidet sich die Aktion "Einige auswählen", die Sie ausführen möchten, von meiner Nutzung, und es gibt keine Vorkehrungen dafür. Ich würde Ihnen tatsächlich vorschlagen, Ihre Verwendung der Revisionskontrolle zu ändern, um häufigere Commits durchzuführen und mehrere Arbeitskopien oder Zweige in einem Repository zu nutzen, um selektive Änderungssätze zu verfolgen. Wenn Sie in einem Verzeichnis arbeiten, sollte alles, was Sie dort tun, entweder festgeschrieben oder selektiv zurückgesetzt werden, aber es sollte nicht viel übrig bleiben. Legen Sie fest, was Sie zu einem bestimmten Zeitpunkt haben, und verwenden Sie die Funktionen zur Revisionskontrolle, um zu handhaben, was in das Produkt einfließt oder nicht.
Damit dies funktioniert, würden Sie den Code in Ihre
~/.zshrc
Datei einfügen (oder~/.bashrc
für Bash).Hier ist die Hauptfunktion, die ich (jeden Tag) benutze:
Auf diese Weise sollten Sie so etwas wie ausführen können
svnlist unknown
, um alle Dateien im aktuellen Verzeichnis zu finden, die nicht versioniert sind, undsvnlist unknown add
um optional alle hinzuzufügen.svnlist clobered revert
würde alle Dateien finden, die nach einem Update gelöscht wurden, und sie zurücksetzen.svnlist conflicted resolved
würde alle Konflikte als gelöst markieren.svnlist missing del
würde alle in Aktion fehlenden Dateien als im Repository gelöscht markieren.Auch wenn Sie darauf stoßen, finden Sie hier eine zum Bearbeiten der Protokollnachricht einer bestimmten Revision. Ich benutze das nicht mehr so oft, aber ich habe schon früh viele Fehler gemacht und ziehe es vor, die Protokollnachrichten aufgeräumt zu halten:
Wenn ich mir diesen Code anschaue, zeigt sich wirklich, dass ich diese vor vielen Jahren geschrieben habe, als ich gerade mit der Versionskontrolle angefangen habe und in einer Shell nicht sehr elegant war, aber es sollte trotzdem funktionieren.
quelle
Nutzen Sie die Fertigstellung Ihrer Shell . Bash hat einige Fertigstellung für
svn
, zsh's ist deutlich besser.svn add <TAB>
Vervollständigt in zsh beispielsweise nur Dateien, die noch nicht registriert sind,svn commit <TAB>
listet nur Dateien auf, die registriert sind und Änderungen aufweisen, und so weiter. Dies allein sollte Ihnen das meiste geben, was Sie fragen:svn status
odersvn commit <TAB>
svn commit <TAB>
svn status
odersvn add <TAB>
svn add <TAB>
svn revert <TAB>
Definieren Sie Aliase und Funktionen für die Befehle, die Sie am häufigsten verwenden. Hier sind einige, die ich in zsh verwende (beachten Sie, dass ich zu VC-agnostischen Aliasen übergehe; dies sind SVN-spezifische Verknüpfungen, analog zu den CVS-Verknüpfungen, die ich seit etwa einem Jahrzehnt verwende).
Möglicherweise möchten Sie einige Versionskontrollinformationen mit zsh's in Ihre Eingabeaufforderung aufnehmen
vcsinfo
.quelle