5617
Comment: #language de
|
5839
|
Deletions are marked like this. | Additions are marked like this. |
Line 9: | Line 9: |
Our silly goal is to get the "hello, world" program to print another line of output. First, we create a new repository called {{{my-hello-new-output}}}, by cloning from {{{my-hello}}}, for our little project. | Unser simples Ziel ist es das "Hallo Welt!" Program dazu zu bringen eine weitere Zeile auszugeben. Als erstes erzeugen wir ein neues Repository, das wir {{{my-hello-new-output}}} nennen, in dem wir von {{{my-hello}}} für unser kleines Projekt klonen. |
Line 16: | Line 16: |
In this case, the clone command prints no output if it succeeds. | In diesem Falle wird der "clone"-Befehl nichts ausgeben, wenn er erfolgreich ist. |
Line 18: | Line 18: |
'''Note:''' Notice that we have given our new ["Repository"] a descriptive name, basically identifying the purpose of the ["Repository"]. Since making a ["Clone"] of a ["Repository"] in ["Mercurial"] is cheap, we will quickly accumulate many slightly different repositories. If we do not give these repositories descriptive names, we will rapidly lose the ability to tell them apart. | ''Hinweis:''' Beachte, das wir unserem neuen ["Repository"] einen beschreibenden Namen gegeben haben, der den grundsätzlichen Zweck des ["Repository"] beschreibt. Da das [:Clone:Klonen] eines ["Repository"] in ["Mercurial"] "billig" ist, werden wir bald eine Menge etwas unterschiedlicher Repositoriesg ansammeln. Wenn wir diesen keine beschreibenden Namen geben, werden wir schnell Probleme haben, diese auseinander zu halten.''' '' |
Line 20: | Line 20: |
Now it's time to make a change in the new repository. Let's go into the WorkingDirectory, which is simply our name for the directory where all the files are, and modify the source code with our favorite editor: | Nun ist es an der Zeit eine Änderung in unserem neuen ["Repository"] zu machen. Lass uns dazu in unser Arbeitsverzeichnis gehen, welches einfach nur der Name des Verzeichnisses ist, in dem sich all unsere Dateien befinden und modifiziere dort den Quellcode mit deinem Lieblingseditor: |
Line 27: | Line 27: |
The contents of {{{hello.c}}} initially look like this: | Der Inhalt von {{{hello.c}}} sollte beim ersten Öffnen so aussehen: |
Line 48: | Line 48: |
Let's edit {{{main}}} so that it prints an extra line of output: | Lass uns die {{{main}}} Funktion so editieren, dass sie noch eine extra Zeile ausgibt: |
Tutorial - Eine erste Änderung durchführen
Wir bauen auf GermanTutorialHistory auf und befinden uns in unserem my-hello-Repository, dass wir in GermanTutorialClone geklont haben.
Es ist gute Praxis beim Entwickeln mit ["Mercurial"], jede Änderung isoliert in einem separaten ["Repository"] durchzuführen. Damit vermeidet man, dass nicht zusammengehöriger Code vermischt wird und es das Ergebnis nicht zusammengehöriger Arbeitsschritte lässt sich leichter testen. XXX Let's start out by following that model.
Unser simples Ziel ist es das "Hallo Welt!" Program dazu zu bringen eine weitere Zeile auszugeben. Als erstes erzeugen wir ein neues Repository, das wir my-hello-new-output nennen, in dem wir von my-hello für unser kleines Projekt klonen.
$ cd .. $ hg clone my-hello my-hello-new-output
In diesem Falle wird der "clone"-Befehl nichts ausgeben, wenn er erfolgreich ist.
Hinweis: Beachte, das wir unserem neuen ["Repository"] einen beschreibenden Namen gegeben haben, der den grundsätzlichen Zweck des ["Repository"] beschreibt. Da das [:Clone:Klonen] eines ["Repository"] in ["Mercurial"] "billig" ist, werden wir bald eine Menge etwas unterschiedlicher Repositoriesg ansammeln. Wenn wir diesen keine beschreibenden Namen geben, werden wir schnell Probleme haben, diese auseinander zu halten.
Nun ist es an der Zeit eine Änderung in unserem neuen ["Repository"] zu machen. Lass uns dazu in unser Arbeitsverzeichnis gehen, welches einfach nur der Name des Verzeichnisses ist, in dem sich all unsere Dateien befinden und modifiziere dort den Quellcode mit deinem Lieblingseditor:
$ cd my-hello-new-output $ vi hello.c
Der Inhalt von hello.c sollte beim ersten Öffnen so aussehen:
/*
* hello.c
*
* Placed in the public domain by Bryan O'Sullivan
*
* This program is not covered by patents in the United States or other
* countries.
*/
#include <stdio.h>
int main(int argc, char **argv)
{
printf("hello, world!\n");
return 0;
}
Lass uns die main Funktion so editieren, dass sie noch eine extra Zeile ausgibt:
(...)
int main(int argc, char **argv)
{
printf("hello, world!\n");
printf("sure am glad I'm using Mercurial!\n");
return 0;
}
Once we're done, we quit out of our favorite editor, and we're done. That's it. The edit is now ready for us to create a ChangeSet.
But what if we're interrupted, and we've forgotten what changes are going to make it into the ChangeSet once we create it? For this, we use the status command.
$ hg status M hello.c
The output is terse, but prefix M is simply telling us that hello.c has been modified, so our change is ready to go into a ChangeSet.
We may also examine the actual changes we have made to the file using the diff command:
$ hg diff diff -r 82e55d328c8c hello.c --- a/hello.c Fri Aug 26 01:21:28 2005 -0700 +++ b/hello.c Fri Sep 30 10:27:47 2005 +0800 @@ -12,5 +12,6 @@ int main(int argc, char **argv) { printf("hello, world!\n"); + printf("sure am glad I'm using Mercurial!\n"); return 0; }
In case we wish to discard our changes and start over, we may use the revert command to restore hello.c to its unmodified state (or use the -a option to revert all files). Just make sure you know this is what you really want.
$ hg revert hello.c
The act of creating a ChangeSet is called ["Commit"]ting it. We perform a ["Commit"] using the commit command:
$ hg commit
This drops us into an editor, and presents us with a few cryptic lines of text.
Note: The default editor is vi. This can be changed using the EDITOR or HGEDITOR environment variables. Also, the manifest hash might be different, depending on how you typed and saved the file.
(empty line) HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944 HG: changed hello.c
The first line is empty and the lines that follow identify the files that will go into this ChangeSet.
To ["Commit"] the ChangeSet, we must describe the reason for it. This is usually called a ChangeSet comment. Let's type something like this:
Express great joy at existence of Mercurial HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944 HG: changed hello.c
Next, we save the test and quit the editor, and, if all goes well, the commit command will exit and prints no output. If you quit the editor without saving the text, commit will abort the operation, so you may change your mind before committing.
Note: Before committing anything into a serious project, you may want to configure a meaningful username in ~/.hgrc; see ["QuickStart2"].
Let's see what the status command will tell us now?
$ hg status
Nothing! Our change has been ["Commit"]ted to a ChangeSet, so there's no modified file in need of a commit. Our ["Tip"] now matches our working directory contents.
We can now examine the change history for our new work:
$ hg log changeset: 2:a58809af174d tag: tip user: mpm@selenic.com date: Fri Aug 26 01:26:28 2005 -0700 summary: Express great joy at existence of Mercurial (...)
There it is! We've ["Commit"]ted a ChangeSet.
Note: The user, date, and ChangeSetID will of course vary.
As we discussed in TutorialClone, the new ChangeSet only exists in this repository. This is a critical part of the way ["Mercurial"] works.
To share changes, we must continue to TutorialShareChange.