Tools
CVS
Eclipse
Emacs
CVS - Concurrent Version System
Befehle
allgemeine Optionen
cvs -q für quiet z.B. bei update nur die Files anzeigen, die upgedatet werden
cvs -n für not (nicht ausführen des Befehls) bei update werden die Files die upzudaten
sind angezeigt, es erfolgt aber kein update
add
damit ein neuer File commitet werden kann wird er mit add provisorisch ins cvs eingecheckt.
checkout
auschecken aller Sourcen, die unterhalb und im Verzeichnis liegen aus dem aufgerufen wurde.
commit (Kurzform ci)
zum einchecken (Files aus dem Arbeitsverzeichnis ins Repository) der Files,
cvs commit *.cc ein commit auf ein Verzeichnis sorgt für rekursiven commit
diff
vergleich die Versionen aus dem Arbeitsverzeichnis mit denen im Repository
export
erzeugt im Unterschied zum checkout keine CVS-Verwaltungs-Strukturen
help
Hilfe zu den Kommandos gibt es mit cvs Kommandoname --help
import
zum impotieren ganzer Verzeichnisstrukturen, in das entsprechende Verzeichnis (bin) reingehen,
cd tools/bin, dann mit cvs import tools/bin gurke Release_0_31 importieren.
Nach der Eingabe der Log-Message ist das Verzeichnis komplett im Repository unter CVSROOT/tools/bin,
mit dem Vendor-Tag: gurke und mit dem Releasnamen: Release_0_31.
log
zeigt die Versionen eines Files mit Datum und Eintrag zur Änderung
quite
die Optionn -q direkt hinter cvs führt ein Kommando ohne oder nur mit
den wichtigen Ausgaben am Bildschirm aus.
Beispiel:
cvs -q update zeigt nur die Dateien an, die wirklich einer Veränderung unterliegen.
release
gibt ein File frei,
es besteht keine Verbindung mehr zwischen File im Repository und File im Arbeitsverzeichnis.
die Optionn -d löscht das File auch aus dem Arbeitsverzeichnis
remove (Kurzform rm)
löscht Files aus dem cvs,
-r = für rekursiv
-f = um auch von der Platte zu löschen, wenn diese Option nicht besteht müßen die Files vorher von der Platte glöscht werden
mit commit wird die Löschung Bestätigt
remove Directories
damit ein Verzeichnis komplett gelöscht wird, müssen zuerst alle Files mit remove aus dem Repository gelöscht werden.
Danach wird mit der Option -P, z.B. bei cvs update -P, das Verzeichnis auch im working
directory gelöscht. Das Verzeichnis steht im Repository noch zum Abrufen alter Versionen zur
Verfügung.
status
zeigt die Version des Arbeitsverzeichnisses im Vergleich zur Version im Repository
update
holt Files aus dem Repository ins Arbeitsverzeichnis,
ersetzt also alle Files rekursive, die in einer neueren Version vorliegen,
Damit bei einem Update noch nicht existierende Unterverzeichnisse erstellt werden:
cvs update -d.
Damit nur geänderte Files angezeigt werden: cvs -q update.
um eine alte Version (1.25 von test.cc) auszuchecken cvs update -r 1.25 test.cc, vorher
muß die alte Version von test.cc aus dem Arbeitsverzeichnis gelöscht sein.
Diese alte Version kann aber nicht umgearbeitet und dann wieder eingecheckt werden,
sonst gibt er Fehler mit den Sticky Tag. Auch das löschen dieser Version und ein erneutes
cvs update test.cc würde die Version 1.25 wiederholen und nicht die aktuellste (Sticky Tag).
Zum Löschen des Sticky Tag im Verzeichnis der Datei in das Unterverzeichnis CVS gehen und die
Datei Entrys öffnen. Hier z.B. bei /UserData.hh/1.4/Thu Apr 5 15:45:39 2001//1.3 die 1.3 löschen (Sticky Tag).
Um nur eine alte Version anzusehen, kann mit:
cvs update -p -r 1.25 test.cc > test.txt, die Version 1.25 von test.cc in die Datei
test.txt geschrieben werden.
-p = Sticky Tag nicht umsetzen und Ausgabe auf Standardoutput leiten
Branches
mit cvs history -a -T werden alle Tags aus dem CVS angezeigt
-a = alle user
-T = tags
mit cvs update -r TEST_BRANCH wird der Branch-Zweig abgerufen
mit cvs update -r TEST_BRANCH m.c holt m.c aus dem Branch: Branch_Tag und setzt das Sticky Tag entsprechend und merged das aktuelle File aus dem Head mit dem File im Branch
mit cvs update -A werden alle Einstellungen vergessen, die Sticky-Tag betreffen,
die Entwicklung steht also wieder auf dem Hauptzweig
mit cvs update -j Branch_Tag m.c und danach cvs commit m.c änderungen aus einem Branch in den Head übernehmen
cvs status filename.cc zeigt das Sticky-Tag
cvs status -v filename.cc zeigt alle verfügbaren Tags zum Fiele test.java an, Branchtags und Releasetags
mit test_release -R TEST_BRANCH RELEASE_TEST wird ein Releasetag: RELEASE_TEST erstellt, auf dem Branch: TEST_BRANCH
Eclipse
ShortCuts
Ctrl-F6 alle offenen Editor-Fenster
Ctrl Bild rauf und runter wechsel der offenen Editor-Fenster
Ctrl-O Methodenübersicht
Ctrl-Shift-F Codeformatierung, die Templates stehen unter Windows->Preferences->Java->CodeStyle
Ctrl-Shift-R open resource (alle Files im workspace)
Ctrl Shift T open type alle Types auch von Librarys aus dem classpath
Ctrl-Space auto complete
Ctrl-T Typhirarchie
F11 run des letzten Debug-Launch
Alt Shift O (gelber Stift im Toolbar) mark occurences
Navigator - View
rechte Maustaste->Close Projekt schließen
rechte Maustaste->Compare With->Local History vergleicht zur lokalen Historie
rechte Maustaste->Restore from local History Stand aus lokaler Historie wieder herstellen
Team Synchronization - View
rechte Maustaste auf Verzeichnis->Remove from View die Resource wird bei der Synchronisierung nicht mehr berücksichtigt
Breakpoints
Setzen von Breakpoints mit Bedingungen
Während des Debuggens Im View Variables eine Variable selektieren und rechte Maustaste->Toggle Watchpoint.
Danach kann der angelegte Watchpoint im View Breakpoints mit rechte Maustaste->properties, bearbeitet werden.
Field Modification würde einen Break bei Wertzuweisung erzeugen. Watchpoints auf Klassenvariablen sind nicht auf einzelne Instanzen,
sondern auf die Variable in allen Instanzen der Klasse bezogen. Um eine einzelne Instanz zu erreichen muss ein: "Instance Breakpoint" gesetzt werden.
Starten der Eclipse
Eclipse über DOS-Script starten mit Eintrag: start eclipse -vmargs -mx512m.
Eclipse über Desktop Link starten C:\eclipse\eclipse.exe -clean -data C:\workspace\projektname -showlocation projektname -vmargs -Xmx800m -Duser.language=en -Duser.country=US
VM Variable
Run->Debug->Arguments->VM arguments: "-DMode=Test", setzt die Variable Mode auf den Wert Test.
Auf der Kommandozeile identisch zur java -D Option. Im Programm werden die Werte abgefragt über:
System.getProperty("Mode");
Einbinden Librarys, Server und Runtimes
Für ein Projekt können in Properties->JavaBuildPath->Libraries folgende Einstellungen gemacht werden.
Add Jars jars aus dem Workspaces
Add External Jars jars außerhalb des Workspaces
Add Vaiable
Add Library -> Server Runtime die Laufzeitumgebung eines WebServers oder JSPContainers, eingerichtet werden
diese unter Preferences->Properties->Server->Installed Runtimes (nur vorhanden, wenn die PlugIns sauber installiert wurden)
Add Library -> JRE System Library Java Runtime
Logfile
Unter C:\eclipse\.metadata stehen die *.log files.
javabuilder
In den Properties der Projekte können einzelne Builder eingestellt werden, die bei jedem Start eines
Projektes aufgerufen werden
Parameter für den Programmstart von Console
Im Debuger auf dem Mainthread recht Maustaste Properties öffnen, dort steht der komplette String zum Start
des Programms mit Classpath und Parametern
javadoc des jdk in Eclipse verfügbar machen (Tooltips)
window->preferences->java->installed jres jre wählen dann edit, dann auf allen jars javadoc location setzen
jad
Für ein automatisches decompilieren kann das Plugin jadclipse installiert werden.
Dieses Plugin benötigt dann noch über die window->prefernces java->jadclipse die Info, wo eine jad.exe auf
der Platte liegt.
wtp
Erzeugt einen Unterpunkt Server in den allgemeinen Preferences, an dem der entsprechende Server z.B. Tomcat ausgewählt wird.
Die Librarys, die zur Laufzeit benötigt werden, z.B. log4j müssen unter Projekt->Properties in die J2EE Module Dependencies.
Emacs oder XEmacs
Allgemein
in .emacs wird die Configuration gespeichert
in .xemacs-options stehen die Optionen
Buffer
Mit C-x C-b wird ein Fenster mit den Puffern angezeigt.
Dann mit d markieren und mit x am Ende alle markierten löschen.
CVS
Damit cvs in den XEmacs integriert werden kann muß der Pfad des Repositorys eingetragen werden.
Mit M-x in Funktionsmodus dann cvs-update dann wird das entsprechende Directory angezeigt
auf das der update erfolgen soll. Der update wird standardmäßig mit der Option -l ausgeführt,
für local, also nicht rekursiv.
Das Fenster kann auch erzeugt werden ohne einen update auszuführen. Mit cvs-examine, wird
ein cvs -n update ausgeführt (die Option -n sorgt bei den cvs Commandos für eine Anzeige
des Outputs der Kommandos ohne sie auszuführen).
Nach erfolgtem Update wird ein *cvs* -Fenster angezeigt. In diesem Fenster kann mit folgenden
Optionen gearbeitet werden:
a - add (unten erscheint eine Eingabeaufforderung für add-Kommentar -> return drücken)
c - commit (checkin-Message in entsprechendes Fenster eingeben und 2 * C-c drücken)
m - selektiertes File markieren
M - alle Files markieren
u - selektiertes File entmarkieren
U - alle Files entmarkieren
EDiff
wenn Cursor im Helpfenster steht:
| - teil das Fenster horizontal
space - geht zum nächsten Unterschied
p - geht zum nächsten Unterschied
q - beendet den EDiff (nach Abfrage im Hauptfensterminibuffer)
? - gibt ein Fenster mit der Hilfe aus
Find File
C-x C-F einen File nicht über den Open-Dialog öffnen, sondern im MiniBuffer
einmal Tab vervollständigt im Minibuffer
zweimal Tab zeigt ein Fenster mit möglichen Vervollständigungen zur Auswahl
FTP
mit dem Emacs können auch Files von anderen Rechnern via FTP angesehen werden.
Mit C-x C-F dann /username@111.22.33.444:/opt/test.txt dann Passwort eingeben,
wird versucht auf dem Server mit der IPAdresse: 111.22.33.444, und der Kennung: username, das
File test.txt im Verzeichnis /opt zu lesen.
History
Alle M-x Befehle kommen in eine History.
Um den Befehl an sich anzuzeigen M-x und dann scrollen mit den Pfeiltasten.
Mit C-x 2*ESC kommt man in den Wiederausführungsmodus. Es wird die Funktion angezeigt,
die den letzten Befehl realisiert hat.
mit M-p vorhergehende Funktion anzeigen,
mit M-n nächste Funktion anzeigen.
Hilfe
Mit C-h d wird als Eingabe eine XEmacs-Funktion erwartet z.B. cvs- dann Enter,
es folgt eine Liste mit sämtlichen XEmacs-Funktionen die mit cvs- beginnen.
mit C-h A werden alle Apropos - Commandos angezeigt.
Dazu Kommando in den Minibuffer eingeben, für welches ein Apropos erwartet wird.
mit C-h m wird eine Hilfe zum aktuellen Puffer ausgegeben
mit C-h k key Online-Hilfe für 'key'
Keyboard Macros
C-x ( record keyboard macro
C-x ) Makroaufzeichnung beenden
C-u 100 C-x e aufgezeichnetes Makro 100 mal Ausführen
M-x edit-kbd-macro C-x e aufgezeichnetes Makro editieren
Iterieren über z.B. alle Plausi.cc-Files:
make -f ../../Makefile TAGS
M-x list-tags
M-x tags-search dann Eingabe einer reg. Expression
M-, nächste Datei (am Ende eines auszuführenden Makros angeben)
Manual
die Manual-Pages werden mit M-x man topic gestartet
Shell
eine Shell im Emacs öffnen mit M-x shell
Short Cuts
cut, copy, paste
M-d = cut word
C-K = cut line
C-w = cut selektion
C-y = paste
C-einfg = copy
C-space = Einfügemodus einschalten
insert = Einfügemodus ausschalten
suchen
C-s = vorwärts suchen (C-ss = letztes Suchwort reaktivieren)
C-r = rückwärts suchen (C-ss = letztes Suchwort reaktivieren)
M-C-s suchen nach regulären Ausdrücken vorwärts
M-C-r suchen nach regulären Ausdrücken rückwärts
um nicht das ganze Suchwort einzutippen, kann mit C-w das Wort hinterm Cursor selektiert werden
undo
C-Shift - = undo, letztes Commando
M-x danach mit Filetasten letzte Befehle scrollen
C-x dann 2 mal M zeigt den letzten Befehl als Funktion mit M-p und M-n
weiterscrollen
Siehe auch History
automatisches Einrücken von Programmcode
M C-q
Fensterwechsel
C-tab
Sprünge
M-> Sprung ans Ende der Datei
M-< Sprung an den Anfang der Datei
M-C-n Sprung zur korrespondierenden schließenden Klammer (alle Klammertypen)
M-C-p Sprung zur korrespondierenden öffnenden Klammer (alle Klammertypen)
markieren
M-C-f Vorwärts-Markierung (gesamtes Wort, stoppt nicht schon beim '_')
M-C-b Rückwärts-Markierung (gesamtes Wort, stoppt nicht schon beim '_')
C-x / buchstabe Registriert aktuelle Position (point) unter dem Namen "buchstabe"
C-x j buchstabe Sprung an unter "buchstabe" angegebene registrierte Position
C-x-x Markieren von point bis register
Suchen und ersetzen
mit M-x query-replace oder M % kann im aktuellen File suchen und ersetzen
durchgeführt werden (Im Minibuffer erst den Suchstring, dann der Ersatzstring eingeben,
beide mit enter beenden).
Wenn mit mehreren Files gearbeitet werden soll muß zuerst ein ETAGS-File angelegt werden.
mit find . -name *.cc -type f -links 1 -print | xargs etags -a -o TAGS
werden alle Files mit der Endung .cc aus dem aktuellen Verzeichniss und dessen Unterverzeichnissen
vom Type File mit einer Linktiefe 1 zum xargs gepipet. Der Befehl etags baut daraus das
Tagfile: TAGS.
-a append an bestehenden Tagfile,
-o explicite Angabe des Tagfilenamens (sonst defaultname)
mit M-x tags-query-replace kann mit Hilfe des zu bestätigenden Tagfiles ein Suchen
und ersetzen durchgeführt werden.
Für beide Befehle gelten die Optionen:
Space - ersetze aktuellen match
n - nicht ersetzen
! - alle ersetzen
Mit query-replace-regexp kann ein Suchen und Ersetzen durch reguläre Ausdrücke unterstützt werden.
Wiederherstellen von Files
Wiederherstellen von Files nach einem Absturz mit M-x recover-file danach den Filenamen
im erscheinenden Dialog eingeben. Der File wird automatisch durch den File #Filename# ersetzt,
welcher beim Absturz angelegt wird.
Optionen im Optionfile .emacs
setzen der Variablen workshop-path auf den entsprechenden Pfad mit der LISP-Funktion: setq
(setq workshop-path "/opt/bin/workshop")
|