Dirk Lubahn Freiberufler Knowledge-Base Privat Links
Knowledge-Base / Tools
Info
Betriebssysteme
Sprachen
Techniken
Datenbanken
Netzwerke
Tools

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")
Es wird kein Anspruch auf inhaltliche Richtigkeit oder Vollständigkeit der Seiten erhoben.
Die Seit: "http://www.dlubahn.de/knowledge/tools.htm" wurde zuletzt geändert am 08.10.2004 von Dirk Lubahn.