From 2d512c510b666f2ea5255b3aeb3de0dd658dc4cd Mon Sep 17 00:00:00 2001 From: lordofbikes Date: Mon, 1 Nov 2010 22:39:52 +0100 Subject: [PATCH] po4a files for german translation --- de/.gitignore | 2 + de/Makefile | 1 + de/pot/basic.po | 720 ++++++++++++++++++++++++++++++++++++++++++++++++++ de/pot/branch.po | 655 +++++++++++++++++++++++++++++++++++++++++++++ de/pot/clone.po | 580 ++++++++++++++++++++++++++++++++++++++++ de/pot/drawbacks.po | 348 ++++++++++++++++++++++++ de/pot/grandmaster.po | 612 ++++++++++++++++++++++++++++++++++++++++++ de/pot/history.po | 538 +++++++++++++++++++++++++++++++++++++ de/pot/intro.po | 367 +++++++++++++++++++++++++ de/pot/multiplayer.po | 567 +++++++++++++++++++++++++++++++++++++++ de/pot/preface.po | 221 ++++++++++++++++ de/pot/secrets.po | 528 ++++++++++++++++++++++++++++++++++++ de/pot/translate.po | 113 ++++++++ 13 files changed, 5252 insertions(+) create mode 100644 de/.gitignore create mode 120000 de/Makefile create mode 100644 de/pot/basic.po create mode 100644 de/pot/branch.po create mode 100644 de/pot/clone.po create mode 100644 de/pot/drawbacks.po create mode 100644 de/pot/grandmaster.po create mode 100644 de/pot/history.po create mode 100644 de/pot/intro.po create mode 100644 de/pot/multiplayer.po create mode 100644 de/pot/preface.po create mode 100644 de/pot/secrets.po create mode 100644 de/pot/translate.po diff --git a/de/.gitignore b/de/.gitignore new file mode 100644 index 0000000..9f8072e --- /dev/null +++ b/de/.gitignore @@ -0,0 +1,2 @@ + +*~ diff --git a/de/Makefile b/de/Makefile new file mode 120000 index 0000000..0d2fefa --- /dev/null +++ b/de/Makefile @@ -0,0 +1 @@ +../po4gitmagic/Makefile \ No newline at end of file diff --git a/de/pot/basic.po b/de/pot/basic.po new file mode 100644 index 0000000..09151ad --- /dev/null +++ b/de/pot/basic.po @@ -0,0 +1,720 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"POT-Creation-Date: 2010-09-12 12:56+0300\n" +"PO-Revision-Date: 2010-11-01 22:14+0100\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: DE \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: UTF-8\n" +"Report-Msgid-Bugs-To: git-magic@lordofbikes.de\n" +"Plural-Forms: \n" + +#. type: Plain text +#: basic.txt:2 +msgid "== Basic Tricks ==" +msgstr "== Erste Schritte ==" + +#. type: Plain text +#: basic.txt:6 +msgid "" +"Rather than diving into a sea of Git commands, use these elementary examples " +"to get your feet wet. Despite their simplicity, each of them are useful. " +"Indeed, in my first months with Git I never ventured beyond the material in " +"this chapter." +msgstr "" +"Bevor wir uns in ein Meer von Git-Befehlen stürzen, schauen wir uns ein paar " +"einfache Beispiele an. Trotz ihrer Einfachheit, sind alle davon wichtig und " +"nützlich. Um ehrlich zu sein, meine ersten Monate mit Git brauchte ich nicht " +"mehr als in diesem Kapitel beschrieben steht." + +#. type: Plain text +#: basic.txt:8 +msgid "=== Saving State ===" +msgstr "=== Stand sichern ===" + +#. type: Plain text +#: basic.txt:11 +msgid "" +"About to attempt something drastic? Before you do, take a snapshot of all " +"files in the current directory with:" +msgstr "" +"Hast du gravierende Änderungen vor? Nur zu, aber speichere deinen aktuellen " +"Stand vorher lieber nochmal ab:" + +#. type: Plain text +#: basic.txt:15 +#, no-wrap +msgid "" +" $ git init\n" +" $ git add .\n" +" $ git commit -m \"My first backup\"\n" +msgstr "" +" $ git init\n" +" $ git add .\n" +" $ git commit -m \"Meine erste Sicherung\"\n" + +#. type: Plain text +#: basic.txt:17 +msgid "Now if your new edits go awry, restore the pristine version:" +msgstr "" +"Falls deine Änderungen schief gehen, kannst du jetzt die alte Version " +"wiederherstellen:" + +#. type: Plain text +#: basic.txt:19 +#, no-wrap +msgid " $ git reset --hard\n" +msgstr " $ git reset --hard\n" + +#. type: Plain text +#: basic.txt:21 +msgid "To save the state again:" +msgstr "Um den neuen Stand zu sichern:" + +#. type: Plain text +#: basic.txt:23 +#, no-wrap +msgid " $ git commit -a -m \"Another backup\"\n" +msgstr " $ git commit -a -m \"Eine andere Sicherung\"\n" + +#. type: Plain text +#: basic.txt:25 +msgid "=== Add, Delete, Rename ===" +msgstr "=== Hinzufügen, Löschen, Umbenennen ===" + +#. type: Plain text +#: basic.txt:27 +msgid "" +"The above only keeps track of the files that were present when you first ran " +"*git add*. If you add new files or subdirectories, you'll have to tell Git:" +msgstr "" +"Bisher kümmert sich Git nur um Dateien, die existierten, als du das erste " +"Mal *git add* ausgeführt hast. Wenn du Dateien oder Verzeichnisse " +"hinzufügst, musst du Git das mitteilen:" + +#. type: Plain text +#: basic.txt:29 +#, no-wrap +msgid " $ git add readme.txt Documentation\n" +msgstr " $ git add readme.txt Dokumentation\n" + +#. type: Plain text +#: basic.txt:31 +msgid "Similarly, if you want Git to forget about certain files:" +msgstr "Ebenso, wenn Git Dateien vergessen soll:" + +#. type: Plain text +#: basic.txt:34 +#, no-wrap +msgid "" +" $ git rm kludge.h obsolete.c\n" +" $ git rm -r incriminating/evidence/\n" +msgstr "" +" $ git rm ramsch.h veraltet.c\n" +" $ git rm -r belastendes/material/\n" + +#. type: Plain text +#: basic.txt:36 +msgid "Git deletes these files for you if you haven't already." +msgstr "Git löscht diese Dateien für dich, falls du es noch nicht getan hast." + +#. type: Plain text +#: basic.txt:38 +msgid "" +"Renaming a file is the same as removing the old name and adding the new " +"name. There's also the shortcut *git mv* which has the same syntax as the " +"*mv* command. For example:" +msgstr "" +"Eine Datei umzubenennen ist das selbe wie sie zu löschen und unter neuem " +"Namen hinzuzufügen. Git benutzt hierzu die Abkürzung *git mv*, welche die " +"gleiche Syntax wie *mv* hat. Zum Beispiel:" + +#. type: Plain text +#: basic.txt:40 +#, no-wrap +msgid " $ git mv bug.c feature.c\n" +msgstr " $ git mv fehler.c feature.c\n" + +#. type: Plain text +#: basic.txt:42 +msgid "=== Advanced Undo/Redo ===" +msgstr "=== Fortgeschrittenes Rückgängig machen/Wiederherstellen ===" + +#. type: Plain text +#: basic.txt:44 +msgid "" +"Sometimes you just want to go back and forget about every change past a " +"certain point because they're all wrong. Then:" +msgstr "" +"Manchmal möchtest du einfach zurück gehen und alle Änderungen ab einem " +"bestimmten Zeitpunkt verwerfen, weil sie falsch waren. Dann:" + +#. type: Plain text +#: basic.txt:46 +#, no-wrap +msgid " $ git log\n" +msgstr " $ git log\n" + +#. type: Plain text +#: basic.txt:48 +msgid "shows you a list of recent commits, and their SHA1 hashes:" +msgstr "" +"zeigt dir eine Liste der bisherigen 'Commits' und deren SHA1 Hashwerte:" + +#. type: Plain text +#: basic.txt:49 +#, no-wrap +msgid "----------------------------------\n" +msgstr "----------------------------------\n" + +#. type: Plain text +#: basic.txt:53 +#, no-wrap +msgid "" +"commit 766f9881690d240ba334153047649b8b8f11c664\n" +"Author: Bob \n" +"Date: Tue Mar 14 01:59:26 2000 -0800\n" +msgstr "" +"commit 766f9881690d240ba334153047649b8b8f11c664\n" +"Author: Bob \n" +"Date: Tue Mar 14 01:59:26 2000 -0800\n" + +#. type: Plain text +#: basic.txt:55 +#, no-wrap +msgid " Replace printf() with write().\n" +msgstr " Ersetze printf() mit write().\n" + +#. type: Plain text +#: basic.txt:59 +#, no-wrap +msgid "" +"commit 82f5ea346a2e651544956a8653c0f58dc151275c\n" +"Author: Alice \n" +"Date: Thu Jan 1 00:00:00 1970 +0000\n" +msgstr "" +"commit 82f5ea346a2e651544956a8653c0f58dc151275c\n" +"Author: Alice \n" +"Date: Thu Jan 1 00:00:00 1970 +0000\n" + +#. type: Plain text +#: basic.txt:61 +#, no-wrap +msgid "" +" Initial commit.\n" +"----------------------------------\n" +msgstr "" +" Initial commit.\n" +"----------------------------------\n" + +#. type: Plain text +#: basic.txt:65 +msgid "" +"The first few characters of the hash are enough to specify the commit; " +"alternatively, copy and paste the entire hash. Type:" +msgstr "" +"Die ersten paar Zeichen eines Hashwert reichen aus um einen 'Commit' zu " +"identifizieren; alternativ benutze kopieren und einfügen für den kompletten " +"Hashwert. Gib ein:" + +#. type: Plain text +#: basic.txt:67 +#, no-wrap +msgid " $ git reset --hard 766f\n" +msgstr " $ git reset --hard 766f\n" + +#. type: Plain text +#: basic.txt:69 +msgid "" +"to restore the state to a given commit and erase all newer commits from the " +"record permanently." +msgstr "" +"um den Stand eines bestimmten 'Commits' wieder herzustellen und alle " +"nachfolgenden Änderungen für immer zu löschen." + +#. type: Plain text +#: basic.txt:71 +msgid "" +"Other times you want to hop to an old state briefly. In this case, type:" +msgstr "" +"Ein anderes Mal willst du nur kurz zu einem älteren Stand springen. In " +"diesem Fall, gib folgendes ein:" + +#. type: Plain text +#: basic.txt:73 +#, no-wrap +msgid " $ git checkout 82f5\n" +msgstr " $ git checkout 82f5\n" + +#. type: Plain text +#: basic.txt:75 +msgid "" +"This takes you back in time, while preserving newer commits. However, like " +"time travel in a science-fiction movie, if you now edit and commit, you will " +"be in an alternate reality, because your actions are different to what they " +"were the first time around." +msgstr "" +"Damit springst du in der Zeit zurück, behältst aber neuere Änderungen. Aber, " +"wie bei Zeitreisen in einem Science-Fiction-Film, wenn du jetzt etwas " +"änderst und 'commitest', gelangst du in ein alternative Realität, denn deine " +"Änderungen sind anders als beim früheren 'Commit'." + +#. type: Plain text +#: basic.txt:77 +msgid "" +"This alternate reality is called a 'branch', and <>. For now, just remember that" +msgstr "" +"Diese alternative Realität heißt 'Branch' und <>. Für jetzt, merke dir" + +#. type: Plain text +#: basic.txt:79 +#, no-wrap +msgid " $ git checkout master\n" +msgstr " $ git checkout master\n" + +#. type: Plain text +#: basic.txt:82 +msgid "" +"will take you back to the present. Also, to stop Git complaining, always " +"commit or reset your changes before running checkout." +msgstr "" +"bringt dich wieder in die Gegenwart. Um zu verhindern, dass sich Git " +"beschwert, solltest du vor einem 'Checkout' alle Änderungen 'commiten' oder " +"'reseten'." + +#. type: Plain text +#: basic.txt:84 +msgid "To take the computer game analogy again:" +msgstr "Um wieder die Computerspielanalogie anzuwenden:" + +#. type: Plain text +#: basic.txt:86 +msgid "" +"- *`git reset --hard`*: load an old save and delete all saved games newer " +"than the one just loaded." +msgstr "" +"- *`git reset --hard`*: Lade einen alten Stand und lösche alle Spielstände, " +"die neuer sind als der jetzt geladene." + +#. type: Plain text +#: basic.txt:88 +msgid "" +"- *`git checkout`*: load an old game, but if you play on, the game state " +"will deviate from the newer saves you made the first time around. Any saved " +"games you make now will end up in a separate branch representing the " +"alternate reality you have entered. <>." +msgstr "" +"- *`git checkout`*: Lade einen alten Spielstand, aber wenn du weiterspielst, " +"wird der Spielstand von den früher gesicherten Spielständen abweichen. Jeder " +"Spielstand, der ab jetzt gesichert wird, entsteht in dem separaten 'Branch', " +"welcher der alternative Realität entspricht. <>." + +#. type: Plain text +#: basic.txt:90 +msgid "" +"You can choose only to restore particular files and subdirectories by " +"appending them after the command:" +msgstr "" +"Du kannst auch nur einzelne Dateien oder Verzeichnisse wiederherstellen " +"indem du sie an den Befehl anhängst:" + +#. type: Plain text +#: basic.txt:92 +#, no-wrap +msgid " $ git checkout 82f5 some.file another.file\n" +msgstr " $ git checkout 82f5 eine.datei andere.datei\n" + +#. type: Plain text +#: basic.txt:96 +msgid "" +"Take care, as this form of *checkout* can silently overwrite files. To " +"prevent accidents, commit before running any checkout command, especially " +"when first learning Git. In general, whenever you feel unsure about any " +"operation, Git command or not, first run *git commit -a*." +msgstr "" +"Sei Vorsichtig, diese Art des '*Checkout*' kann Dateien überschreiben, ohne " +"dass du etwas merkst. Um Unfälle zu vermeiden solltest du immer 'commiten' " +"bevor du ein 'Checkout' machst, besonders am Anfang wenn du Git noch " +"erlernst. Allgemein gilt: Wenn du unsicher bist, egal ob ein Git Befehl oder " +"irgendeine andere Operation, führe zuerst *git commit -a* aus." + +#. type: Plain text +#: basic.txt:98 +msgid "Don't like cutting and pasting hashes? Then use:" +msgstr "Du magst Kopieren und Einfügen von Hashes nicht? Dann nutze:" + +#. type: Plain text +#: basic.txt:100 +#, no-wrap +msgid " $ git checkout :/\"My first b\"\n" +msgstr " $ git checkout :/\"Meine erste Si\"\n" + +#. type: Plain text +#: basic.txt:103 +msgid "" +"to jump to the commit that starts with a given message. You can also ask " +"for the 5th-last saved state:" +msgstr "" +"um zu einem 'Commit' zu springen, dessen Beschreibung so anfängt. Du kannst " +"auch nach dem 5. letzten 'Commit' fragen:" + +#. type: Plain text +#: basic.txt:105 +#, no-wrap +msgid " $ git checkout master~5\n" +msgstr " $ git checkout master~5\n" + +#. type: Plain text +#: basic.txt:107 +msgid "=== Reverting ===" +msgstr "=== Rückgängig machen ===" + +#. type: Plain text +#: basic.txt:109 +msgid "" +"In a court of law, events can be stricken from the record. Likewise, you can " +"pick specific commits to undo." +msgstr "" +"In einem Gerichtssaal können Ereignisse aus den Akten gelöscht werden. " +"Ähnlich kannst du gezielt 'Commits' rückgängig machen." + +#. type: Plain text +#: basic.txt:112 +#, no-wrap +msgid "" +" $ git commit -a\n" +" $ git revert 1b6d\n" +msgstr "" +" $ git commit -a\n" +" $ git revert 1b6d\n" + +#. type: Plain text +#: basic.txt:115 +msgid "" +"will undo just the commit with the given hash. The revert is recorded as a " +"new commit, which you can confirm by running *git log*." +msgstr "" +"wird den 'Commit' mit dem angegebenen Hashwert rückgängig machen. Das " +"Rückgängig machen wird als neuer 'Commit' erstellt, was mit *git log* " +"überprüft werden kann." + +#. type: Plain text +#: basic.txt:117 +msgid "=== Changelog Generation ===" +msgstr "=== Changelog erstellen ===" + +#. type: Plain text +#: basic.txt:120 +msgid "" +"Some projects require a http://en.wikipedia.org/wiki/Changelog[changelog]. " +"Generate one by typing:" +msgstr "" +"Verschiedene Projekte benötigen ein http://de.wikipedia.org/wiki/" +"%C3%84nderungsprotokoll[Änderungsprotokoll]. Das kannst du mit folgendem " +"Befehl erstellen:" + +#. type: Plain text +#: basic.txt:122 +#, no-wrap +msgid " $ git log > ChangeLog\n" +msgstr " $ git log > ChangeLog\n" + +#. type: Plain text +#: basic.txt:124 +msgid "=== Downloading Files ===" +msgstr "=== Dateien herunterladen ===" + +#. type: Plain text +#: basic.txt:126 +msgid "Get a copy of a project managed with Git by typing:" +msgstr "Eine Kopie eines mit Git verwalteten Projekts bekommst du mit:" + +#. type: Plain text +#: basic.txt:128 +#, no-wrap +msgid " $ git clone git://server/path/to/files\n" +msgstr " $ git clone git://server/pfad/zu/dateien\n" + +#. type: Plain text +#: basic.txt:130 +msgid "For example, to get all the files I used to create this site:" +msgstr "" +"Um zum Beispiel alle Dateien zu bekommen, die ich zum Erzeugen dieser Seiten " +"benutze:" + +#. type: Plain text +#: basic.txt:132 +#, no-wrap +msgid " $ git clone git://git.or.cz/gitmagic.git\n" +msgstr " $ git clone git://git.or.cz/gitmagic.git\n" + +#. type: Plain text +#: basic.txt:134 +msgid "We'll have much to say about the *clone* command soon." +msgstr "Es gibt gleich noch viel mehr über den 'clone' Befehl zu sagen." + +#. type: Plain text +#: basic.txt:136 +msgid "=== The Bleeding Edge ===" +msgstr "=== Das Neueste vom Neuen ===" + +#. type: Plain text +#: basic.txt:138 +msgid "" +"If you've already downloaded a copy of a project using *git clone*, you can " +"upgrade to the latest version with:" +msgstr "" +"Wenn du schon eine Kopie eines Projektes hast, kannst du es auf die neuste " +"Version aktualisieren mit:" + +#. type: Plain text +#: basic.txt:140 basic.txt:166 +#, no-wrap +msgid " $ git pull\n" +msgstr " $ git pull\n" + +#. type: Plain text +#: basic.txt:142 +msgid "=== Instant Publishing ===" +msgstr "=== Einfaches Veröffentlichen ===" + +#. type: Plain text +#: basic.txt:144 +msgid "" +"Suppose you've written a script you'd like to share with others. You could " +"just tell them to download from your computer, but if they do so while " +"you're improving the script or making experimental changes, they could wind " +"up in trouble. Of course, this is why release cycles exist. Developers may " +"work on a project frequently, but they only make the code available when " +"they feel it is presentable." +msgstr "" +"Angenommen du hast ein Skript geschrieben und möchtest es anderen zugänglich " +"machen. Du könntest sie einfach bitten es von deinem Computer " +"herunterzuladen, aber falls sie das tun während du experimentierst oder das " +"Skript verbesserst könnten sie in Schwierigkeiten geraten. Genau deswegen " +"gibt es Releasezyklen. Entwickler arbeiten regelmäßig an einem Projekt, " +"veröffentlichen den Code aber nur, wenn sie ihn für vorzeigbar halten." + +#. type: Plain text +#: basic.txt:146 +msgid "To do this with Git, in the directory where your script resides:" +msgstr "Um dies in Git zu tun, gehe ins Verzeichnis in dem das Skript liegt:" + +#. type: Plain text +#: basic.txt:150 +#, no-wrap +msgid "" +" $ git init\n" +" $ git add .\n" +" $ git commit -m \"First release\"\n" +msgstr "" +" $ git init\n" +" $ git add .\n" +" $ git commit -m \"Erster Stand\"\n" + +#. type: Plain text +#: basic.txt:152 +msgid "Then tell your users to run:" +msgstr "Dann sage deinen Nutzern:" + +#. type: Plain text +#: basic.txt:154 +#, no-wrap +msgid " $ git clone your.computer:/path/to/script\n" +msgstr " $ git clone dein.computer:/pfad/zum/skript\n" + +#. type: Plain text +#: basic.txt:156 +msgid "" +"to download your script. This assumes they have ssh access. If not, run *git " +"daemon* and tell your users to instead run:" +msgstr "" +"um dein Skript herunterzuladen. Das setzt voraus, dass sie einen SSH-Zugang " +"haben. Falls nicht, führe *git deamon* aus und sage den Nutzern folgendes:" + +#. type: Plain text +#: basic.txt:158 +#, no-wrap +msgid " $ git clone git://your.computer/path/to/script\n" +msgstr " $ git clone git://dein.computer/pfad/zum/skript\n" + +#. type: Plain text +#: basic.txt:160 +msgid "From now on, every time your script is ready for release, execute:" +msgstr "Ab jetzt, immer wenn dein Skript reif für eine Veröffentlichung ist:" + +#. type: Plain text +#: basic.txt:162 +#, no-wrap +msgid " $ git commit -a -m \"Next release\"\n" +msgstr " $ git commit -a -m \"Nächster Stand\"\n" + +#. type: Plain text +#: basic.txt:164 +msgid "" +"and your users can upgrade their version by changing to the directory " +"containing your script and typing:" +msgstr "und deine Nutzer können ihr Skript aktualisieren mit:" + +#. type: Plain text +#: basic.txt:168 +msgid "" +"Your users will never end up with a version of your script you don't want " +"them to see." +msgstr "" +"Deine Nutzer werden nie mit Versionen in Kontakt kommen, von denen du es " +"nicht willst. Natürlich funktioniert der Trick für fast alles, nicht nur " +"Skripts." + +#. type: Plain text +#: basic.txt:170 +msgid "=== What Have I Done? ===" +msgstr "=== Was habe ich getan? ===" + +#. type: Plain text +#: basic.txt:172 +msgid "Find out what changes you've made since the last commit with:" +msgstr "Finde heraus was du seit dem letzten 'Commit' getan hast:" + +#. type: Plain text +#: basic.txt:174 +#, no-wrap +msgid " $ git diff\n" +msgstr " $ git diff\n" + +#. type: Plain text +#: basic.txt:176 +msgid "Or since yesterday:" +msgstr "Oder seit Gestern:" + +#. type: Plain text +#: basic.txt:178 +#, no-wrap +msgid " $ git diff \"@{yesterday}\"\n" +msgstr " $ git diff \"@{gestern}\"\n" + +#. type: Plain text +#: basic.txt:180 +msgid "Or between a particular version and 2 versions ago:" +msgstr "Oder zwischen irgendeiner Version und der vorvorletzten:" + +#. type: Plain text +#: basic.txt:182 +#, no-wrap +msgid " $ git diff 1b6d \"master~2\"\n" +msgstr " $ git diff 1b6d \"master~2\"\n" + +#. type: Plain text +#: basic.txt:185 +msgid "" +"In each case the output is a patch that can be applied with *git apply*. " +"Try also:" +msgstr "" +"Jedes mal ist die Ausgabe ein 'Patch' der mit *git apply* eingespielt werden " +"kann. Versuche auch:" + +#. type: Plain text +#: basic.txt:187 +#, no-wrap +msgid " $ git whatchanged --since=\"2 weeks ago\"\n" +msgstr " $ git whatchanged --since=\"2 weeks ago\"\n" + +#. type: Plain text +#: basic.txt:193 +msgid "" +"Often I'll browse history with http://sourceforge.net/projects/qgit[qgit] " +"instead, due to its slick photogenic interface, or http://jonas.nitro.dk/tig/" +"[tig], a text-mode interface that works well over slow connections. " +"Alternatively, install a web server, run *git instaweb* and fire up any web " +"browser." +msgstr "" +"Um mir die Geschichte eines 'Repositories' anzuzeigen benutze ich häufig " +"http://sourceforge.net/projects/qgit[qgit] da es eine schicke " +"Benutzeroberfläche hat, oder http://jonas.nitro.dk/tig/[tig], eine " +"Konsolenanwendung, die sehr gut über langsame Verbindungen funktioniert. " +"Alternativ kannst du einen Webserver installieren mit *git instaweb*, dann " +"kannst du mit jedem Webbrowser darauf zugreifen." + +#. type: Plain text +#: basic.txt:195 +msgid "=== Exercise ===" +msgstr "=== Übung ===" + +#. type: Plain text +#: basic.txt:197 +msgid "" +"Let A, B, C, D be four successive commits where B is the same as A except " +"some files have been removed. We want to add the files back at D. How can we " +"do this?" +msgstr "" +"A, B, C, D sind 4 aufeinander folgende 'Commits'. B ist identisch mit A, " +"außer dass einige Dateien gelöscht wurden. Wir möchten die Dateien in D " +"wieder hinzufügen, aber nicht in B. Wie machen wir das?" + +#. type: Plain text +#: basic.txt:199 +msgid "There are at least three solutions. Assuming we are at D:" +msgstr "Es gibt mindestens 3 Lösungen. Angenommen, wir sind bei D:" + +#. type: Bullet: ' 1. ' +#: basic.txt:201 +msgid "" +"The difference between A and B are the removed files. We can create a patch " +"representing this difference and apply it:" +msgstr "" +"Der Unterschied zwischen A und B sind die gelöschten Dateien. Wir können " +"einen 'Patch' erstellen, der diesen Unterschied darstellt und diesen dann " +"auf D anwenden:" + +#. type: Plain text +#: basic.txt:203 +#, no-wrap +msgid " $ git diff B A | git apply\n" +msgstr " $ git diff B A | git apply\n" + +#. type: Bullet: ' 2. ' +#: basic.txt:205 +msgid "Since we saved the files back at A, we can retrieve them:" +msgstr "" +"Da die Dateien im 'Repository' unter dem 'Commit' A gespeichert sind, können " +"wir sie wieder herstellen:" + +#. type: Plain text +#: basic.txt:207 +#, no-wrap +msgid " $ git checkout A foo.c bar.h\n" +msgstr " $ git checkout A foo.c bar.h\n" + +#. type: Bullet: ' 3. ' +#: basic.txt:209 +msgid "We can view going from A to B as a change we want to undo:" +msgstr "" +"Wir können den 'Commit' von A auf B als Änderung betrachten, die wir " +"rückgängig machen wollen:" + +#. type: Plain text +#: basic.txt:211 +#, no-wrap +msgid " $ git revert B\n" +msgstr " $ git revert B\n" + +#. type: Plain text +#: basic.txt:212 +msgid "" +"Which choice is best? Whichever you prefer most. It is easy to get what you " +"want with Git, and often there are many ways to get it." +msgstr "" +"Welche Lösung ist die beste? Die, welche dir am besten gefällt. Es ist " +"einfach mit Git das zu bekommen was du willst und oft führen viele Wege zum " +"Ziel." diff --git a/de/pot/branch.po b/de/pot/branch.po new file mode 100644 index 0000000..5bbd77a --- /dev/null +++ b/de/pot/branch.po @@ -0,0 +1,655 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Plain text +#: ../en/branch.txt:2 +msgid "== Branch Wizardry ==" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:4 +msgid "" +"Instant branching and merging are the most lethal of Git's killer features." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:8 +#, no-wrap +msgid "" +"*Problem*: External factors inevitably necessitate context switching. A severe\n" +"bug manifests in the released version without warning. The deadline for a\n" +"certain feature is moved closer. A developer whose help you need for a key section of the project is about to leave. In all cases, you must abruptly drop what you are doing and focus on a completely different task.\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:10 +msgid "" +"Interrupting your train of thought can be detrimental to your productivity, " +"and the more cumbersome it is to switch contexts, the greater the loss. With " +"centralized version control we must download a fresh working copy from the " +"central server. Distributed systems fare better, as we can clone the desired " +"version locally." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:12 +msgid "" +"But cloning still entails copying the whole working directory as well as the " +"entire history up to the given point. Even though Git reduces the cost of " +"this with file sharing and hard links, the project files themselves must be " +"recreated in their entirety in the new working directory." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:14 +#, no-wrap +msgid "*Solution*: Git has a better tool for these situations that is much faster and more space-efficient than cloning: *git branch*.\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:16 +msgid "" +"With this magic word, the files in your directory suddenly shapeshift from " +"one version to another. This transformation can do more than merely go back " +"or forward in history. Your files can morph from the last release to the " +"experimental version to the current development version to your friend's " +"version and so on." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:18 +msgid "=== The Boss Key ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:20 +msgid "" +"Ever played one of those games where at the push of a button (``the boss " +"key''), the screen would instantly display a spreadsheet or something? So if " +"the boss walked in the office while you were playing the game you could " +"quickly hide it away?" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:22 +msgid "In some directory:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:27 +#, no-wrap +msgid "" +" $ echo \"I'm smarter than my boss\" > myfile.txt\n" +" $ git init\n" +" $ git add .\n" +" $ git commit -m \"Initial commit\"\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:29 +msgid "" +"We have created a Git repository that tracks one text file containing a " +"certain message. Now type:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:33 +#, no-wrap +msgid "" +" $ git checkout -b boss # nothing seems to change after this\n" +" $ echo \"My boss is smarter than me\" > myfile.txt\n" +" $ git commit -a -m \"Another commit\"\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:35 +msgid "" +"It looks like we've just overwritten our file and committed it. But it's an " +"illusion. Type:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:37 +#, no-wrap +msgid " $ git checkout master # switch to original version of the file\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:39 +msgid "" +"and hey presto! The text file is restored. And if the boss decides to snoop " +"around this directory, type:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:41 +#, no-wrap +msgid " $ git checkout boss # switch to version suitable for boss' eyes\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:43 +msgid "" +"You can switch between the two versions of the file as much as you like, and " +"commit to each independently." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:45 +msgid "=== Dirty Work ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:48 +msgid "" +"[[branch]] Say you're working on some feature, and for some reason, you need " +"to go back three versions and temporarily put in a few print statements to " +"see how something works. Then:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:51 +#, no-wrap +msgid "" +" $ git commit -a\n" +" $ git checkout HEAD~3\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:53 +msgid "" +"Now you can add ugly temporary code all over the place. You can even commit " +"these changes. When you're done," +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:55 +#, no-wrap +msgid " $ git checkout master\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:57 +msgid "" +"to return to your original work. Observe that any uncommitted changes are " +"carried over." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:59 +msgid "What if you wanted to save the temporary changes after all? Easy:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:61 +#, no-wrap +msgid " $ git checkout -b dirty\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:63 +msgid "" +"and commit before switching back to the master branch. Whenever you want to " +"return to the dirty changes, simply type:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:65 +#, no-wrap +msgid " $ git checkout dirty\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:67 +msgid "" +"We touched upon this command in an earlier chapter, when discussing loading " +"old states. At last we can tell the whole story: the files change to the " +"requested state, but we must leave the master branch. Any commits made from " +"now on take your files down a different road, which can be named later." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:69 +msgid "" +"In other words, after checking out an old state, Git automatically puts you " +"in a new, unnamed branch, which can be named and saved with *git checkout -" +"b*." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:71 +msgid "=== Quick Fixes ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:73 +msgid "" +"You're in the middle of something when you are told to drop everything and " +"fix a newly discovered bug in commit `1b6d...`:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:76 +#, no-wrap +msgid "" +" $ git commit -a\n" +" $ git checkout -b fixes 1b6d\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:78 +msgid "Then once you've fixed the bug:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:82 +#, no-wrap +msgid "" +" $ git commit -a -m \"Bug fixed\"\n" +" $ git push # to the central repository\n" +" $ git checkout master\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:84 +msgid "and resume work on your original task." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:86 +msgid "You can even 'merge' in the bugfix you just made, either by typing:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:88 +#, no-wrap +msgid " $ git merge fixes\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:90 +msgid "or:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:92 +#, no-wrap +msgid " $ git pull\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:94 +msgid "since you have already pushed the bugfix to the main repository." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:96 +msgid "=== Merging ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:100 +msgid "" +"With some version control systems, creating branches is easy but merging " +"them back together is tough. With Git, merging is so trivial that you might " +"be unaware of it happening." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:106 +msgid "" +"We actually encountered merging long ago. The *pull* command in fact " +"'fetches' commits and then merges them into your current branch. If you have " +"no local changes, then the merge is a 'fast forward', a degenerate case akin " +"to fetching the latest version in a centralized version control system. But " +"if you do have local changes, Git will automatically merge, and report any " +"conflicts." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:111 +msgid "" +"Ordinarily, a commit has exactly one 'parent commit', namely, the previous " +"commit. Merging branches together produces a commit with at least two " +"parents. This begs the question: what commit does `HEAD~10` really refer " +"to? A commit could have multiple parents, so which one do we follow?" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:116 +msgid "" +"It turns out this notation chooses the first parent every time. This is " +"desirable because the current branch becomes the first parent during a " +"merge; frequently you're only concerned with the changes you made in the " +"current branch, as opposed to changes merged in from other branches." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:119 +msgid "" +"You can refer to a specific parent with a caret. For example, to show the " +"logs from the second parent:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:121 +#, no-wrap +msgid " $ git log HEAD^2\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:124 +msgid "" +"You may omit the number for the first parent. For example, to show the " +"differences with the first parent:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:126 +#, no-wrap +msgid " $ git diff HEAD^\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:128 +msgid "You can combine this notation with other types. For example:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:130 +#, no-wrap +msgid " $ git checkout 1b6d^^2~10 -b ancient\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:133 +msgid "" +"starts a new branch ``ancient'' representing the state 10 commits back from " +"the second parent of the first parent of the commit starting with 1b6d." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:135 +msgid "=== Uninterrupted Workflow ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:137 +msgid "" +"Often in hardware projects, the second step of a plan must await the " +"completion of the first step. A car undergoing repairs might sit idly in a " +"garage until a particular part arrives from the factory. A prototype might " +"wait for a chip to be fabricated before construction can continue." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:142 +msgid "" +"Software projects can be similar. The second part of a new feature may have " +"to wait until the first part has been released and tested. Some projects " +"require your code to be reviewed before accepting it, so you might wait " +"until the first part is approved before starting the second part." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:147 +msgid "" +"Thanks to painless branching and merging, we can bend the rules and work on " +"Part II before Part I is officially ready. Suppose you have committed Part I " +"and sent it for review. Let's say you're in the `master` branch. Then branch " +"off:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:149 +#, no-wrap +msgid " $ git checkout -b part2\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:153 +msgid "" +"Next, work on Part II, committing your changes along the way. To err is " +"human, and often you'll want to go back and fix something in Part I. If " +"you're lucky, or very good, you can skip these lines." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:159 +#, no-wrap +msgid "" +" $ git checkout master # Go back to Part I.\n" +" $ fix_problem\n" +" $ git commit -a # Commit the fixes.\n" +" $ git checkout part2 # Go back to Part II.\n" +" $ git merge master # Merge in those fixes.\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:161 +msgid "Eventually, Part I is approved:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:166 +#, no-wrap +msgid "" +" $ git checkout master # Go back to Part I.\n" +" $ submit files # Release to the world!\n" +" $ git merge part2 # Merge in Part II.\n" +" $ git branch -d part2\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:168 +msgid "" +"Now you're in the `master` branch again, with Part II in the working " +"directory." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:172 +msgid "" +"It's easy to extend this trick for any number of parts. It's also easy to " +"branch off retroactively: suppose you belatedly realize you should have " +"created a branch 7 commits ago. Then type:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:176 +#, no-wrap +msgid "" +" $ git branch -m master part2\n" +" $ # Rename \"master\" branch to \"part2\".\n" +" $ git checkout HEAD~7 -b master\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:179 +msgid "" +"The `master` branch now contains just Part I, and the `part2` branch " +"contains the rest." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:181 +msgid "=== Reorganizing a Medley ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:183 +msgid "" +"Perhaps you like to work on all aspects of a project in the same branch. You " +"want to keep works-in-progress to yourself and want others to see your " +"commits only when they have been neatly organized. Start a couple of " +"branches:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:186 +#, no-wrap +msgid "" +" $ git checkout -b sanitized\n" +" $ git checkout -b medley\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:188 +msgid "" +"Next, work on anything: fix bugs, add features, add temporary code, and so " +"forth, committing often along the way. Then:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:191 +#, no-wrap +msgid "" +" $ git checkout sanitized\n" +" $ git cherry-pick medley^^\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:193 +msgid "" +"applies the grandparent of the head commit of the ``medley'' branch to the " +"``sanitized'' branch. With appropriate cherry-picks you can construct a " +"branch that contains only permanent code, and has related commits grouped " +"together." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:195 +msgid "=== Managing Branches ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:197 +msgid "List all branches by typing:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:199 +#, no-wrap +msgid " $ git branch\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:202 +msgid "" +"By default, you start in a branch named ``master''. Some advocate leaving " +"the ``master'' branch untouched and creating new branches for your own edits." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:205 +msgid "" +"The *-d* and *-m* options allow you to delete and move (rename) branches. " +"See *git help branch*." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:210 +msgid "" +"The ``master'' branch is a useful custom. Others may assume that your " +"repository has a branch with this name, and that it contains the official " +"version of your project. Although you can rename or obliterate the " +"``master'' branch, you might as well respect this convention." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:212 +msgid "=== Temporary Branches ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:217 +msgid "" +"After a while you may realize you are creating short-lived branches " +"frequently for similar reasons: every other branch merely serves to save the " +"current state so you can briefly hop back to an older state to fix a high-" +"priority bug or something." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:222 +msgid "" +"It's analogous to changing the TV channel temporarily to see what else is " +"on. But instead of pushing a couple of buttons, you have to create, check " +"out, merge, and delete temporary branches. Luckily, Git has a shortcut that " +"is as convenient as a TV remote control:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:224 +#, no-wrap +msgid " $ git stash\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:229 +msgid "" +"This saves the current state in a temporary location (a 'stash') and " +"restores the previous state. Your working directory appears exactly as it " +"was before you started editing, and you can fix bugs, pull in upstream " +"changes, and so on. When you want to go back to the stashed state, type:" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:231 +#, no-wrap +msgid " $ git stash apply # You may need to resolve some conflicts.\n" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:234 +msgid "" +"You can have multiple stashes, and manipulate them in various ways. See *git " +"help stash*. As you may have guessed, Git maintains branches behind the " +"scenes to perform this magic trick." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:236 +msgid "=== Work How You Want ===" +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:240 +msgid "" +"You might wonder if branches are worth the bother. After all, clones are " +"almost as fast, and you can switch between them with *cd* instead of " +"esoteric Git commands." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:246 +msgid "" +"Consider web browsers. Why support multiple tabs as well as multiple " +"windows? Because allowing both accommodates a wide variety of styles. Some " +"users like to keep only one browser window open, and use tabs for multiple " +"webpages. Others might insist on the other extreme: multiple windows with no " +"tabs anywhere. Others still prefer something in between." +msgstr "" + +#. type: Plain text +#: ../en/branch.txt:250 +msgid "" +"Branching is like tabs for your working directory, and cloning is like " +"opening a new browser window. These operations are fast and local, so why " +"not experiment to find the combination that best suits you? Git lets you " +"work exactly how you want." +msgstr "" diff --git a/de/pot/clone.po b/de/pot/clone.po new file mode 100644 index 0000000..8fd66be --- /dev/null +++ b/de/pot/clone.po @@ -0,0 +1,580 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Plain text +#: ../en/clone.txt:2 +msgid "== Cloning Around ==" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:4 +msgid "" +"In older version control systems, checkout is the standard operation to get " +"files. You retrieve a bunch of files in a particular saved state." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:6 +msgid "" +"In Git and other distributed version control systems, cloning is the " +"standard operation. To get files, you create a 'clone' of the entire " +"repository. In other words, you practically mirror the central server. " +"Anything the main repository can do, you can do." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:8 +msgid "=== Sync Computers ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:10 +msgid "" +"I can tolerate making tarballs or using *rsync* for backups and basic " +"syncing. But sometimes I edit on my laptop, other times on my desktop, and " +"the two may not have talked to each other in between." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:12 +msgid "" +"Initialize a Git repository and commit your files on one machine. Then on " +"the other:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:14 +#, no-wrap +msgid " $ git clone other.computer:/path/to/files\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:16 +msgid "to create a second copy of the files and Git repository. From now on," +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:19 +#, no-wrap +msgid "" +" $ git commit -a\n" +" $ git pull other.computer:/path/to/files HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:21 +msgid "" +"will 'pull' in the state of the files on the other computer into the one " +"you're working on. If you've recently made conflicting edits in the same " +"file, Git will let you know and you should commit again after resolving them." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:23 +msgid "=== Classic Source Control ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:25 +msgid "Initialize a Git repository for your files:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:29 ../en/clone.txt:138 +#, no-wrap +msgid "" +" $ git init\n" +" $ git add .\n" +" $ git commit -m \"Initial commit\"\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:31 +msgid "" +"On the central server, initialize a 'bare repository' in some directory:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:36 +#, no-wrap +msgid "" +" $ mkdir proj.git\n" +" $ cd proj.git\n" +" $ git init --bare\n" +" $ # one-line variant: GIT_DIR=proj.git git init\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:38 +msgid "Start the Git daemon if necessary:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:40 +#, no-wrap +msgid " $ git daemon --detach # it may already be running\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:43 +msgid "" +"For Git hosting services, follow the instructions to setup the initially " +"empty Git repository. Typically one fills in a form on a webpage." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:45 +msgid "'Push' your project to the central server with:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:47 +#, no-wrap +msgid " $ git push git://central.server/path/to/proj.git HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:49 +msgid "To check out the source, a developer types:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:51 +#, no-wrap +msgid " $ git clone git://central.server/path/to/proj.git\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:53 +msgid "After making changes, the developer saves changes locally:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:55 ../en/clone.txt:63 +#, no-wrap +msgid " $ git commit -a\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:57 +msgid "To update to the latest version:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:59 ../en/clone.txt:110 +#, no-wrap +msgid " $ git pull\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:61 +msgid "Any merge conflicts should be resolved then committed:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:65 +msgid "To check in local changes into the central repository:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:67 +#, no-wrap +msgid " $ git push\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:71 +msgid "" +"If the main server has new changes due to activity by other developers, the " +"push fails, and the developer should pull the latest version, resolve any " +"merge conflicts, then try again." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:73 +msgid "=== Bare repositories ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:75 +msgid "" +"A bare repository is so named because it has no working directory; it only " +"contains files that are normally hidden away in the `.git` subdirectory. In " +"other words, it maintains the history of a project, and never holds a " +"snapshot of any given version." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:82 +msgid "" +"A bare repository plays a role similar to that of the main server in a " +"centralized version control system: the home of your project. Developers " +"clone your project from it, and push the latest official changes to it. " +"Typically it resides on a server that does little else but disseminate data. " +"Development occurs in the clones, so the home repository can do without a " +"working directory." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:84 +msgid "" +"Many Git commands fail on bare repositories unless the `GIT_DIR` environment " +"variable is set to the repository path, or the `--bare` option is supplied." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:86 +msgid "=== Push versus pull ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:94 +msgid "" +"Why did we introduce the push command, rather than rely on the familiar pull " +"command? Firstly, pulling fails on bare repositories: instead you must " +"'fetch', a command we later discuss. But even if we kept a normal repository " +"on the central server, pulling into it would still be cumbersome. We would " +"have to login to the server first, and give the pull command the network " +"address of the machine we're pulling from. Firewalls may interfere, and what " +"if we have no shell access to the server in the first place?" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:96 +msgid "" +"However, apart from this case, we discourage pushing into a repository, " +"because confusion can ensue when the destination has a working directory." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:98 +msgid "" +"In short, while learning Git, only push when the target is a bare " +"repository; otherwise pull." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:100 +msgid "=== Forking a Project ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:102 +msgid "" +"Sick of the way a project is being run? Think you could do a better job? " +"Then on your server:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:104 +#, no-wrap +msgid " $ git clone git://main.server/path/to/files\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:106 +msgid "Next, tell everyone about your fork of the project at your server." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:108 +msgid "" +"At any later time, you can merge in the changes from the original project " +"with:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:112 +msgid "=== Ultimate Backups ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:114 +msgid "" +"Want numerous tamper-proof geographically diverse redundant archives? If " +"your project has many developers, don't do anything! Every clone of your " +"code is effectively a backup. Not just of the current state, but of your " +"project's entire history. Thanks to cryptographic hashing, if anyone's clone " +"becomes corrupted, it will be spotted as soon as they try to communicate " +"with others." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:116 +msgid "" +"If your project is not so popular, find as many servers as you can to host " +"clones." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:118 +msgid "" +"The truly paranoid should always write down the latest 20-byte SHA1 hash of " +"the HEAD somewhere safe. It has to be safe, not private. For example, " +"publishing it in a newspaper would work well, because it's hard for an " +"attacker to alter every copy of a newspaper." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:120 +msgid "=== Light-Speed Multitask ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:122 +msgid "" +"Say you want to work on several features in parallel. Then commit your " +"project and run:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:124 ../en/clone.txt:142 +#, no-wrap +msgid " $ git clone . /some/new/directory\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:126 +msgid "" +"Git exploits hard links and file sharing as much as safely possible to " +"create this clone, so it will be ready in a flash, and you can now work on " +"two independent features simultaneously. For example, you can edit one clone " +"while the other is compiling." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:128 +msgid "At any time, you can commit and pull changes from the other clone." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:130 +#, no-wrap +msgid " $ git pull /the/other/clone HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:132 +msgid "=== Guerilla Version Control ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:134 +msgid "" +"Are you working on a project that uses some other version control system, " +"and you sorely miss Git? Then initialize a Git repository in your working " +"directory:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:140 +msgid "then clone it:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:144 +msgid "" +"Now go to the new directory and work here instead, using Git to your heart's " +"content. Once in a while, you'll want to sync with everyone else, in which " +"case go to the original directory, sync using the other version control " +"system, and type:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:147 +#, no-wrap +msgid "" +" $ git add .\n" +" $ git commit -m \"Sync with everyone else\"\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:149 +msgid "Then go to the new directory and run:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:152 +#, no-wrap +msgid "" +" $ git commit -a -m \"Description of my changes\"\n" +" $ git pull\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:154 +msgid "" +"The procedure for giving your changes to everyone else depends on the other " +"version control system. The new directory contains the files with your " +"changes. Run whatever commands of the other version control system are " +"needed to upload them to the central repository." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:156 +msgid "" +"Subversion, perhaps the best centralized version control system, is used by " +"countless projects. The *git svn* command automates the above for Subversion " +"repositories, and can also be used to http://google-opensource.blogspot." +"com/2008/05/export-git-project-to-google-code.html[export a Git project to a " +"Subversion repository]." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:158 +msgid "=== Mercurial ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:160 +msgid "" +"Mercurial is a similar version control system that can almost seamlessly " +"work in tandem with Git. With the `hg-git` plugin, a Mercurial user can " +"losslessly push to and pull from a Git repository." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:162 +msgid "Obtain the `hg-git` plugin with Git:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:164 +#, no-wrap +msgid " $ git clone git://github.com/schacon/hg-git.git\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:166 +msgid "or Mercurial:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:168 +#, no-wrap +msgid " $ hg clone http://bitbucket.org/durin42/hg-git/\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:170 +msgid "" +"Sadly, I am unaware of an analogous plugin for Git. For this reason, I " +"advocate Git over Mercurial for the main repository, even if you prefer " +"Mercurial. With a Mercurial project, usually a volunteer maintains a " +"parallel Git repository to accommodate Git users, whereas thanks to the `hg-" +"git` plugin, a Git project automatically accommodates Mercurial users." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:172 +msgid "" +"Although the plugin can convert a Mercurial repository to a Git repository " +"by pushing to an empty repository, this job is easier with the `hg-fast-" +"export.sh` script, available from:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:174 +#, no-wrap +msgid " $ git clone git://repo.or.cz/fast-export.git\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:176 +msgid "To convert, in an empty directory:" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:179 +#, no-wrap +msgid "" +" $ git init\n" +" $ hg-fast-export.sh -r /hg/repo\n" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:181 +msgid "after adding the script to your `$PATH`." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:183 +msgid "=== Bazaar ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:186 +msgid "" +"We briefly mention Bazaar because it is the most popular free distributed " +"version control system after Git and Mercurial." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:188 +msgid "" +"Bazaar has the advantage of hindsight, as it is relatively young; its " +"designers could learn from mistakes of the past, and sidestep minor " +"historical warts. Additionally, its developers are mindful of portability " +"and interoperation with other version control systems." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:190 +msgid "" +"A `bzr-git` plugin lets Bazaar users work with Git repositories to some " +"extent. The `tailor` program converts Bazaar repositories to Git " +"repositories, and can do so incrementally, while `bzr-fast-export` is well-" +"suited for one-shot conversions." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:192 +msgid "=== Why I use Git ===" +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:194 +msgid "" +"I originally chose Git because I heard it could manage the unimaginably " +"unmanageable Linux kernel source. I've never felt a need to switch. Git has " +"served admirably, and I've yet to be bitten by its flaws. As I primarily use " +"Linux, issues on other platforms are of no concern." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:196 +msgid "" +"Also, I prefer C programs and bash scripts to executables such as Python " +"scripts: there are fewer dependencies, and I'm addicted to fast running " +"times." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:198 +msgid "" +"I did think about how Git could be improved, going so far as to write my own " +"Git-like tool, but only as an academic exercise. Had I completed my project, " +"I would have stayed with Git anyway, as the gains are too slight to justify " +"using an oddball system." +msgstr "" + +#. type: Plain text +#: ../en/clone.txt:199 +msgid "" +"Naturally, your needs and wants likely differ, and you may be better off " +"with another system. Nonetheless, you can't go far wrong with Git." +msgstr "" diff --git a/de/pot/drawbacks.po b/de/pot/drawbacks.po new file mode 100644 index 0000000..6a121e6 --- /dev/null +++ b/de/pot/drawbacks.po @@ -0,0 +1,348 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Plain text +#: ../en/drawbacks.txt:2 +msgid "== Appendix A: Git Shortcomings ==" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:4 +msgid "" +"There are some Git issues I've swept under the carpet. Some can be handled " +"easily with scripts and hooks, some require reorganizing or redefining the " +"project, and for the few remaining annoyances, one will just have to wait. " +"Or better yet, pitch in and help!" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:6 +msgid "=== SHA1 Weaknesses ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:11 +msgid "" +"As time passes, cryptographers discover more and more SHA1 weaknesses. " +"Already, finding hash collisions is feasible for well-funded organizations. " +"Within years, perhaps even a typical PC will have enough computing power to " +"silently corrupt a Git repository." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:14 +msgid "" +"Hopefully Git will migrate to a better hash function before further research " +"destroys SHA1." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:16 +msgid "=== Microsoft Windows ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:18 +msgid "Git on Microsoft Windows can be cumbersome:" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:20 +msgid "" +"- http://cygwin.com/[Cygwin], a Linux-like environment for Windows, contains " +"http://cygwin.com/packages/git/[a Windows port of Git]." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:22 +msgid "" +"- http://code.google.com/p/msysgit/[Git on MSys] is an alternative requiring " +"minimal runtime support, though a few of the commands need some work." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:24 +msgid "=== Unrelated Files ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:26 +msgid "" +"If your project is very large and contains many unrelated files that are " +"constantly being changed, Git may be disadvantaged more than other systems " +"because single files are not tracked. Git tracks changes to the whole " +"project, which is usually beneficial." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:28 +msgid "" +"A solution is to break up your project into pieces, each consisting of " +"related files. Use *git submodule* if you still want to keep everything in a " +"single repository." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:30 +msgid "=== Who's Editing What? ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:32 +msgid "" +"Some version control systems force you to explicitly mark a file in some way " +"before editing. While this is especially annoying when this involves talking " +"to a central server, it does have two benefits:" +msgstr "" + +#. type: Bullet: ' 1. ' +#: ../en/drawbacks.txt:34 +msgid "Diffs are quick because only the marked files need be examined." +msgstr "" + +#. type: Bullet: ' 2. ' +#: ../en/drawbacks.txt:36 +msgid "" +"One can discover who else is working on the file by asking the central " +"server who has marked it for editing." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:38 +msgid "" +"With appropriate scripting, you can achieve the same with Git. This requires " +"cooperation from the programmer, who should execute particular scripts when " +"editing a file." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:40 +msgid "=== File History ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:42 +msgid "" +"Since Git records project-wide changes, reconstructing the history of a " +"single file requires more work than in version control systems that track " +"individual files." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:44 +msgid "" +"The penalty is typically slight, and well worth having as other operations " +"are incredibly efficient. For example, `git checkout` is faster than `cp -" +"a`, and project-wide deltas compress better than collections of file-based " +"deltas." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:46 +msgid "=== Initial Clone ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:48 +msgid "" +"Creating a clone is more expensive than checking out code in other version " +"control systems when there is a lengthy history." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:50 +msgid "" +"The initial cost is worth paying in the long run, as most future operations " +"will then be fast and offline. However, in some situations, it may be " +"preferable to create a shallow clone with the `--depth` option. This is much " +"faster, but the resulting clone has reduced functionality." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:52 +msgid "=== Volatile Projects ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:54 +msgid "" +"Git was written to be fast with respect to the size of the changes. Humans " +"make small edits from version to version. A one-liner bugfix here, a new " +"feature there, emended comments, and so forth. But if your files are " +"radically different in successive revisions, then on each commit, your " +"history necessarily grows by the size of your whole project." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:56 +msgid "" +"There is nothing any version control system can do about this, but standard " +"Git users will suffer more since normally histories are cloned." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:58 +msgid "" +"The reasons why the changes are so great should be examined. Perhaps file " +"formats should be changed. Minor edits should only cause minor changes to at " +"most a few files." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:60 +msgid "" +"Or perhaps a database or backup/archival solution is what is actually being " +"sought, not a version control system. For example, version control may be " +"ill-suited for managing photos periodically taken from a webcam." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:62 +msgid "" +"If the files really must be constantly morphing and they really must be " +"versioned, a possibility is to use Git in a centralized fashion. One can " +"create shallow clones, which checks out little or no history of the project. " +"Of course, many Git tools will be unavailable, and fixes must be submitted " +"as patches. This is probably fine as it's unclear why anyone would want the " +"history of wildly unstable files." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:64 +msgid "" +"Another example is a project depending on firmware, which takes the form of " +"a huge binary file. The history of the firmware is uninteresting to users, " +"and updates compress poorly, so firmware revisions would unnecessarily blow " +"up the size of the repository." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:66 +msgid "" +"In this case, the source code should be stored in a Git repository, and the " +"binary file should be kept separately. To make life easier, one could " +"distribute a script that uses Git to clone the code, and rsync or a Git " +"shallow clone for the firmware." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:68 +msgid "=== Global Counter ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:70 +msgid "" +"Some centralized version control systems maintain a positive integer that " +"increases when a new commit is accepted. Git refers to changes by their " +"hash, which is better in many circumstances." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:72 +msgid "" +"But some people like having this integer around. Luckily, it's easy to write " +"scripts so that with every update, the central Git repository increments an " +"integer, perhaps in a tag, and associates it with the hash of the latest " +"commit." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:74 +msgid "" +"Every clone could maintain such a counter, but this would probably be " +"useless, since only the central repository and its counter matters to " +"everyone." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:76 +msgid "=== Empty Subdirectories ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:78 +msgid "" +"Empty subdirectories cannot be tracked. Create dummy files to work around " +"this problem." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:80 +msgid "" +"The current implementation of Git, rather than its design, is to blame for " +"this drawback. With luck, once Git gains more traction, more users will " +"clamour for this feature and it will be implemented." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:82 +msgid "=== Initial Commit ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:84 +msgid "" +"A stereotypical computer scientist counts from 0, rather than 1. " +"Unfortunately, with respect to commits, git does not adhere to this " +"convention. Many commands are unfriendly before the initial commit. " +"Additionally, some corner cases must be handled specially, such as rebasing " +"a branch with a different initial commit." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:86 +msgid "" +"Git would benefit from defining the zero commit: as soon as a repository is " +"constructed, HEAD would be set to the string consisting of 20 zero bytes. " +"This special commit represents an empty tree, with no parent, at some time " +"predating all Git repositories." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:88 +msgid "" +"Then running git log, for example, would inform the user that no commits " +"have been made yet, instead of exiting with a fatal error. Similarly for " +"other tools." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:90 +msgid "Every initial commit is implicitly a descendant of this zero commit." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:92 +msgid "" +"However there are some problem cases unfortunately. If several branches with " +"different initial commits are merged together, then rebasing the result " +"requires substantial manual intervention." +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:94 +msgid "=== Interface Quirks ===" +msgstr "" + +#. type: Plain text +#: ../en/drawbacks.txt:97 +msgid "" +"For commits A and B, the meaning of the expressions \"A..B\" and \"A...B\" " +"depends on whether the command expects two endpoints or a range. See *git " +"help diff* and *git help rev-parse*." +msgstr "" diff --git a/de/pot/grandmaster.po b/de/pot/grandmaster.po new file mode 100644 index 0000000..f1b76f4 --- /dev/null +++ b/de/pot/grandmaster.po @@ -0,0 +1,612 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Plain text +#: ../en/grandmaster.txt:2 +msgid "== Git Grandmastery ==" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:7 +msgid "" +"By now, you should be able to navigate the *git help* pages and understand " +"almost everything. However, pinpointing the exact command required to solve " +"a given problem can be tedious. Perhaps I can save you some time: below are " +"some recipes I have needed in the past." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:9 +msgid "=== Source Releases ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:12 +msgid "" +"For my projects, Git tracks exactly the files I'd like to archive and " +"release to users. To create a tarball of the source code, I run:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:14 +#, no-wrap +msgid " $ git archive --format=tar --prefix=proj-1.2.3/ HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:16 +msgid "=== Commit What Changed ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:19 +msgid "" +"Telling Git when you've added, deleted and renamed files is troublesome for " +"certain projects. Instead, you can type:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:22 +#, no-wrap +msgid "" +" $ git add .\n" +" $ git add -u\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:27 +msgid "" +"Git will look at the files in the current directory and work out the details " +"by itself. Instead of the second add command, run `git commit -a` if you " +"also intend to commit at this time. See *git help ignore* for how to specify " +"files that should be ignored." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:29 +msgid "You can perform the above in a single pass with:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:31 +#, no-wrap +msgid " $ git ls-files -d -m -o -z | xargs -0 git update-index --add --remove\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:35 +msgid "" +"The *-z* and *-0* options prevent ill side-effects from filenames containing " +"strange characters. As this command adds ignored files, you may want to use " +"the `-x` or `-X` option." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:37 +msgid "=== My Commit Is Too Big! ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:41 +msgid "" +"Have you neglected to commit for too long? Been coding furiously and " +"forgotten about source control until now? Made a series of unrelated " +"changes, because that's your style?" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:43 +msgid "No worries. Run:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:45 +#, no-wrap +msgid " $ git add -p\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:49 +msgid "" +"For each edit you made, Git will show you the hunk of code that was changed, " +"and ask if it should be part of the next commit. Answer with \"y\" or \"n\". " +"You have other options, such as postponing the decision; type \"?\" to learn " +"more." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:51 +msgid "Once you're satisfied, type" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:53 +#, no-wrap +msgid " $ git commit\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:56 +msgid "" +"to commit precisely the changes you selected (the 'staged' changes). Make " +"sure you omit the *-a* option, otherwise Git will commit all the edits." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:63 +msgid "" +"What if you've edited many files in many places? Reviewing each change one " +"by one becomes frustratingly mind-numbing. In this case, use *git add -i*, " +"whose interface is less straightforward, but more flexible. With a few " +"keystrokes, you can stage or unstage several files at a time, or review and " +"select changes in particular files only. Alternatively, run *git commit \\--" +"interactive* which automatically commits after you're done." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:65 +msgid "=== The Index: Git's Staging Area ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:71 +msgid "" +"So far we have avoided Git's famous 'index', but we must now confront it to " +"explain the above. The index is a temporary staging area. Git seldom " +"shuttles data directly between your project and its history. Rather, Git " +"first writes data to the index, and then copies the data in the index to its " +"final destination." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:77 +msgid "" +"For example, *commit -a* is really a two-step process. The first step places " +"a snapshot of the current state of every tracked file into the index. The " +"second step permanently records the snapshot now in the index. Committing " +"without the *-a* option only performs the second step, and only makes sense " +"after running commands that somehow change the index, such as *git add*." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:79 +msgid "" +"Usually we can ignore the index and pretend we are reading straight from and " +"writing straight to the history. On this occasion, we want finer control, so " +"we manipulate the index. We place a snapshot of some, but not all, of our " +"changes into the index, and then permanently record this carefully rigged " +"snapshot." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:81 +msgid "=== Don't Lose Your HEAD ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:83 +msgid "" +"The HEAD tag is like a cursor that normally points at the latest commit, " +"advancing with each new commit. Some Git commands let you move it. For " +"example:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:85 +#, no-wrap +msgid " $ git reset HEAD~3\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:87 +msgid "" +"will move the HEAD three commits back. Thus all Git commands now act as if " +"you hadn't made those last three commits, while your files remain in the " +"present. See the help page for some applications." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:89 +msgid "" +"But how can you go back to the future? The past commits know nothing of the " +"future." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:91 +msgid "If you have the SHA1 of the original HEAD then:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:93 +#, no-wrap +msgid " $ git reset 1b6d\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:95 +msgid "" +"But suppose you never took it down? Don't worry: for commands like these, " +"Git saves the original HEAD as a tag called ORIG_HEAD, and you can return " +"safe and sound with:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:97 +#, no-wrap +msgid " $ git reset ORIG_HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:99 +msgid "=== HEAD-hunting ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:101 +msgid "" +"Perhaps ORIG_HEAD isn't enough. Perhaps you've just realized you made a " +"monumental mistake and you need to go back to an ancient commit in a long-" +"forgotten branch." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:106 +msgid "" +"By default, Git keeps a commit for at least two weeks, even if you ordered " +"Git to destroy the branch containing it. The trouble is finding the " +"appropriate hash. You could look at all the hash values in `.git/objects` " +"and use trial and error to find the one you want. But there's a much easier " +"way." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:108 +msgid "" +"Git records every hash of a commit it computes in `.git/logs`. The " +"subdirectory `refs` contains the history of all activity on all branches, " +"while the file `HEAD` shows every hash value it has ever taken. The latter " +"can be used to find hashes of commits on branches that have been " +"accidentally lopped off." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:110 +msgid "" +"The reflog command provides a friendly interface to these log files. Try" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:112 +#, no-wrap +msgid " $ git reflog\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:114 +msgid "Instead of cutting and pasting hashes from the reflog, try:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:116 +#, no-wrap +msgid " $ git checkout \"@{10 minutes ago}\"\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:118 +msgid "Or checkout the 5th-last visited commit via:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:120 +#, no-wrap +msgid " $ git checkout \"@{5}\"\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:122 +msgid "" +"See the ``Specifying Revisions'' section of *git help rev-parse* for more." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:125 +msgid "" +"You may wish to configure a longer grace period for doomed commits. For " +"example:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:127 +#, no-wrap +msgid " $ git config gc.pruneexpire \"30 days\"\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:130 +msgid "" +"means a deleted commit will only be permanently lost once 30 days have " +"passed and *git gc* is run." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:132 +msgid "You may also wish to disable automatic invocations of *git gc*:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:134 +#, no-wrap +msgid " $ git config gc.auto 0\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:136 +msgid "" +"in which case commits will only be deleted when you run *git gc* manually." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:138 +msgid "=== Building On Git ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:140 +msgid "" +"In true UNIX fashion, Git's design allows it to be easily used as a low-" +"level component of other programs, such as GUI and web interfaces, " +"alternative command-line interfaces, patch managements tools, importing and " +"conversion tools and so on. In fact, some Git commands are themselves " +"scripts standing on the shoulders of giants. With a little tinkering, you " +"can customize Git to suit your preferences." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:143 +msgid "" +"One easy trick is to use built-in Git aliases to shorten your most " +"frequently used commands:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:148 +#, no-wrap +msgid "" +" $ git config --global alias.co checkout\n" +" $ git config --global --get-regexp alias # display current aliases\n" +" alias.co checkout\n" +" $ git co foo # same as 'git checkout foo'\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:151 +msgid "" +"Another is to print the current branch in the prompt, or window title. " +"Invoking" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:153 +#, no-wrap +msgid " $ git symbolic-ref HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:156 +msgid "" +"shows the current branch name. In practice, you most likely want to remove " +"the \"refs/heads/\" and ignore errors:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:158 +#, no-wrap +msgid " $ git symbolic-ref HEAD 2> /dev/null | cut -b 12-\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:162 +msgid "" +"The +contrib+ subdirectory is a treasure trove of tools built on Git. In " +"time, some of them may be promoted to official commands. On Debian and " +"Ubuntu, this directory lives at +/usr/share/doc/git-core/contrib+." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:164 +msgid "" +"One popular resident is +workdir/git-new-workdir+. Via clever symlinking, " +"this script creates a new working directory whose history is shared with the " +"original repository:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:166 +#, no-wrap +msgid " $ git-new-workdir an/existing/repo new/directory\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:168 +msgid "" +"The new directory and the files within can be thought of as a clone, except " +"since the history is shared, the two trees automatically stay in sync. " +"There's no need to merge, push, or pull." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:170 +msgid "=== Daring Stunts ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:174 +msgid "" +"These days, Git makes it difficult for the user to accidentally destroy " +"data. But if you know what you are doing, you can override safeguards for " +"common commands." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:176 +#, no-wrap +msgid "*Checkout*: Uncommitted changes cause checkout to fail. To destroy your changes, and checkout a given commit anyway, use the force flag:\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:178 +#, no-wrap +msgid " $ git checkout -f HEAD^\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:180 +msgid "" +"On the other hand, if you specify particular paths for checkout, then there " +"are no safety checks. The supplied paths are quietly overwritten. Take care " +"if you use checkout in this manner." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:182 +#, no-wrap +msgid "*Reset*: Reset also fails in the presence of uncommitted changes. To force it through, run:\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:184 +#, no-wrap +msgid " $ git reset --hard 1b6d\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:186 +#, no-wrap +msgid "*Branch*: Deleting branches fails if this causes changes to be lost. To force a deletion, type:\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:188 +#, no-wrap +msgid " $ git branch -D dead_branch # instead of -d\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:190 +msgid "" +"Similarly, attempting to overwrite a branch via a move fails if data loss " +"would ensue. To force a branch move, type:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:192 +#, no-wrap +msgid " $ git branch -M source target # instead of -m\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:197 +msgid "" +"Unlike checkout and reset, these two commands defer data destruction. The " +"changes are still stored in the .git subdirectory, and can be retrieved by " +"recovering the appropriate hash from `.git/logs` (see \"HEAD-hunting\" " +"above). By default, they will be kept for at least two weeks." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:201 +#, no-wrap +msgid "" +"*Clean*: Some git commands refuse to proceed because they're worried about\n" +"clobbering untracked files. If you're certain that all untracked files and\n" +"directories are expendable, then delete them mercilessly with:\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:203 +#, no-wrap +msgid " $ git clean -f -d\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:205 +msgid "Next time, that pesky command will work!" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:207 +msgid "=== Preventing Bad Commits ===" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:212 +msgid "" +"Stupid mistakes pollute my repositories. Most frightening are missing files " +"due to a forgotten *git add*. Lesser transgressions are trailing whitespace " +"and unresolved merge conflicts: though harmless, I wish these never appeared " +"on the public record." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:214 +msgid "" +"If only I had bought idiot insurance by using a _hook_ to alert me about " +"these problems:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:217 +#, no-wrap +msgid "" +" $ cd .git/hooks\n" +" $ cp pre-commit.sample pre-commit # Older Git versions: chmod +x pre-commit\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:220 +msgid "" +"Now Git aborts a commit if useless whitespace or unresolved merge conflicts " +"are detected." +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:223 +msgid "" +"For this guide, I eventually added the following to the beginning of the " +"*pre-commit* hook to guard against absent-mindedness:" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:228 +#, no-wrap +msgid "" +" if git ls-files -o | grep '\\.txt$'; then\n" +" echo FAIL! Untracked .txt files.\n" +" exit 1\n" +" fi\n" +msgstr "" + +#. type: Plain text +#: ../en/grandmaster.txt:232 +msgid "" +"Several git operations support hooks; see *git help hooks*. We activated the " +"sample *post-update* hook earlier when discussing Git over HTTP. This runs " +"whenever the head moves. The sample post-update script updates files Git " +"needs for communication over Git-agnostic transports such as HTTP." +msgstr "" diff --git a/de/pot/history.po b/de/pot/history.po new file mode 100644 index 0000000..86d8f4d --- /dev/null +++ b/de/pot/history.po @@ -0,0 +1,538 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Plain text +#: ../en/history.txt:2 +msgid "== Lessons of History ==" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:8 +msgid "" +"A consequence of Git's distributed nature is that history can be edited " +"easily. But if you tamper with the past, take care: only rewrite that part " +"of history which you alone possess. Just as nations forever argue over who " +"committed what atrocity, if someone else has a clone whose version of " +"history differs to yours, you will have trouble reconciling when your trees " +"interact." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:14 +msgid "" +"Some developers strongly feel history should be immutable, warts and all. " +"Others feel trees should be made presentable before they are unleashed in " +"public. Git accommodates both viewpoints. Like cloning, branching, and " +"merging, rewriting history is simply another power Git gives you. It is up " +"to you to use it wisely." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:16 +msgid "=== I Stand Corrected ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:18 +msgid "" +"Did you just commit, but wish you had typed a different message? Then run:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:20 ../en/history.txt:54 +#, no-wrap +msgid " $ git commit --amend\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:23 +msgid "" +"to change the last message. Realized you forgot to add a file? Run *git add* " +"to add it, and then run the above command." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:25 +msgid "" +"Want to include a few more edits in that last commit? Then make those edits " +"and run:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:27 +#, no-wrap +msgid " $ git commit --amend -a\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:29 +msgid "=== ... And Then Some ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:31 +msgid "" +"Let's suppose the previous problem is ten times worse. After a lengthy " +"session you've made a bunch of commits. But you're not quite happy with the " +"way they're organized, and some of those commit messages could use " +"rewording. Then type:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:33 +#, no-wrap +msgid " $ git rebase -i HEAD~10\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:35 +msgid "" +"and the last 10 commits will appear in your favourite $EDITOR. A sample " +"excerpt:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:39 +#, no-wrap +msgid "" +" pick 5c6eb73 Added repo.or.cz link\n" +" pick a311a64 Reordered analogies in \"Work How You Want\"\n" +" pick 100834f Added push target to Makefile\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:41 +msgid "Then:" +msgstr "" + +#. type: Bullet: '- ' +#: ../en/history.txt:49 +msgid "Remove commits by deleting lines." +msgstr "" + +#. type: Bullet: '- ' +#: ../en/history.txt:49 +msgid "Reorder commits by reordering lines." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:49 +#, no-wrap +msgid "" +"- Replace `pick` with:\n" +" * `edit` to mark a commit for amending.\n" +" * `reword` to change the log message.\n" +" * `squash` to merge a commit with the previous one.\n" +" * `fixup` to merge a commit with the previous one and discard the log message.\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:52 +msgid "Save and quit. If you marked a commit for editing, then run:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:56 +msgid "Otherwise, run:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:58 +#, no-wrap +msgid " $ git rebase --continue\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:60 +msgid "So commit early and commit often: you can tidy up later with rebase." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:62 +msgid "=== Local Changes Last ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:65 +msgid "" +"You're working on an active project. You make some local commits over time, " +"and then you sync with the official tree with a merge. This cycle repeats " +"itself a few times before you're ready to push to the central tree." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:67 +msgid "" +"But now the history in your local Git clone is a messy jumble of your " +"changes and the official changes. You'd prefer to see all your changes in " +"one contiguous section, and after all the official changes." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:70 +msgid "" +"This is a job for *git rebase* as described above. In many cases you can use " +"the *--onto* flag and avoid interaction." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:72 +msgid "" +"Also see *git help rebase* for detailed examples of this amazing command. " +"You can split commits. You can even rearrange branches of a tree." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:74 +msgid "=== Rewriting History ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:82 +msgid "" +"Occasionally, you need the source control equivalent of airbrushing people " +"out of official photos, erasing them from history in a Stalinesque fashion. " +"For example, suppose we intend to release a project, but it involves a file " +"that should be kept private for some reason. Perhaps I left my credit card " +"number in a text file and accidentally added it to the project. Deleting the " +"file is insufficient, for the file can be accessed from older commits. We " +"must remove the file from all commits:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:84 +#, no-wrap +msgid " $ git filter-branch --tree-filter 'rm top/secret/file' HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:88 +msgid "" +"See *git help filter-branch*, which discusses this example and gives a " +"faster method. In general, *filter-branch* lets you alter large sections of " +"history with a single command." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:90 +msgid "" +"Afterwards, the +.git/refs/original+ directory describes the state of " +"affairs before the operation. Check the filter-branch command did what you " +"wanted, then delete this directory if you wish to run more filter-branch " +"commands." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:92 +msgid "" +"Lastly, replace clones of your project with your revised version if you want " +"to interact with them later." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:94 +msgid "=== Making History ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:97 +msgid "" +"[[makinghistory]] Want to migrate a project to Git? If it's managed with one " +"of the more well-known systems, then chances are someone has already written " +"a script to export the whole history to Git." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:102 +msgid "" +"Otherwise, look up *git fast-import*, which reads text input in a specific " +"format to create Git history from scratch. Typically a script using this " +"command is hastily cobbled together and run once, migrating the project in a " +"single shot." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:104 +#, no-wrap +msgid "" +"As an example, paste the following listing into temporary file, such as `/tmp/history`:\n" +"----------------------------------\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:110 +msgid "" +"commit refs/heads/master committer Alice Thu, 01 Jan " +"1970 00:00:00 +0000 data <" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:120 +#, no-wrap +msgid "" +"int main() {\n" +" printf(\"Hello, world!\\n\");\n" +" return 0;\n" +"}\n" +"EOT\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:127 +msgid "" +"commit refs/heads/master committer Bob Tue, 14 Mar 2000 " +"01:59:26 -0800 data <" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:137 +#, no-wrap +msgid "" +"int main() {\n" +" write(1, \"Hello, world!\\n\", 14);\n" +" return 0;\n" +"}\n" +"EOT\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:138 +#, no-wrap +msgid "----------------------------------\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:141 +msgid "Then create a Git repository from this temporary file by typing:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:144 +#, no-wrap +msgid "" +" $ mkdir project; cd project; git init\n" +" $ git fast-import --date-format=rfc2822 < /tmp/history\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:146 +msgid "You can checkout the latest version of the project with:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:148 +#, no-wrap +msgid " $ git checkout master .\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:153 +msgid "" +"The *git fast-export* command converts any repository to the *git fast-" +"import* format, whose output you can study for writing exporters, and also " +"to transport repositories in a human-readable format. Indeed, these commands " +"can send repositories of text files over text-only channels." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:155 +msgid "=== Where Did It All Go Wrong? ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:157 +msgid "" +"You've just discovered a broken feature in your program which you know for " +"sure was working a few months ago. Argh! Where did this bug come from? If " +"only you had been testing the feature as you developed." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:160 +msgid "" +"It's too late for that now. However, provided you've been committing often, " +"Git can pinpoint the problem:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:164 +#, no-wrap +msgid "" +" $ git bisect start\n" +" $ git bisect bad HEAD\n" +" $ git bisect good 1b6d\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:166 +msgid "" +"Git checks out a state halfway in between. Test the feature, and if it's " +"still broken:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:168 +#, no-wrap +msgid " $ git bisect bad\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:174 +msgid "" +"If not, replace \"bad\" with \"good\". Git again transports you to a state " +"halfway between the known good and bad versions, narrowing down the " +"possibilities. After a few iterations, this binary search will lead you to " +"the commit that caused the trouble. Once you've finished your investigation, " +"return to your original state by typing:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:176 +#, no-wrap +msgid " $ git bisect reset\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:178 +msgid "" +"Instead of testing every change by hand, automate the search by running:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:180 +#, no-wrap +msgid " $ git bisect run my_script\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:185 +msgid "" +"Git uses the return value of the given command, typically a one-off script, " +"to decide whether a change is good or bad: the command should exit with code " +"0 when good, 125 when the change should be skipped, and anything else " +"between 1 and 127 if it is bad. A negative return value aborts the bisect." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:189 +msgid "" +"You can do much more: the help page explains how to visualize bisects, " +"examine or replay the bisect log, and eliminate known innocent changes for a " +"speedier search." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:191 +msgid "=== Who Made It All Go Wrong? ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:193 +msgid "Like many other version control systems, Git has a blame command:" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:195 +#, no-wrap +msgid " $ git blame bug.c\n" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:197 +msgid "" +"which annotates every line in the given file showing who last changed it, " +"and when. Unlike many other version control systems, this operation works " +"offline, reading only from local disk." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:199 +msgid "=== Personal Experience ===" +msgstr "" + +#. type: Plain text +#: ../en/history.txt:206 +msgid "" +"In a centralized version control system, history modification is a difficult " +"operation, and only available to administrators. Cloning, branching, and " +"merging are impossible without network communication. So are basic " +"operations such as browsing history, or committing a change. In some " +"systems, users require network connectivity just to view their own changes " +"or open a file for editing." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:213 +msgid "" +"Centralized systems preclude working offline, and need more expensive " +"network infrastructure, especially as the number of developers grows. Most " +"importantly, all operations are slower to some degree, usually to the point " +"where users shun advanced commands unless absolutely necessary. In extreme " +"cases this is true of even the most basic commands. When users must run slow " +"commands, productivity suffers because of an interrupted work flow." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:219 +msgid "" +"I experienced these phenomena first-hand. Git was the first version control " +"system I used. I quickly grew accustomed to it, taking many features for " +"granted. I simply assumed other systems were similar: choosing a version " +"control system ought to be no different from choosing a text editor or web " +"browser." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:225 +msgid "" +"I was shocked when later forced to use a centralized system. A flaky " +"internet connection matters little with Git, but makes development " +"unbearable when it needs to be as reliable as local disk. Additionally, I " +"found myself conditioned to avoid certain commands because of the latencies " +"involved, which ultimately prevented me from following my desired work flow." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:232 +msgid "" +"When I had to run a slow command, the interruption to my train of thought " +"dealt a disproportionate amount of damage. While waiting for server " +"communication to complete, I'd do something else to pass the time, such as " +"check email or write documentation. By the time I returned to the original " +"task, the command had finished long ago, and I would waste more time trying " +"to remember what I was doing. Humans are bad at context switching." +msgstr "" + +#. type: Plain text +#: ../en/history.txt:237 +msgid "" +"There was also an interesting tragedy-of-the-commons effect: anticipating " +"network congestion, individuals would consume more bandwidth than necessary " +"on various operations in an attempt to reduce future delays. The combined " +"efforts intensified congestion, encouraging individuals to consume even more " +"bandwidth next time to avoid even longer delays." +msgstr "" diff --git a/de/pot/intro.po b/de/pot/intro.po new file mode 100644 index 0000000..f0d1531 --- /dev/null +++ b/de/pot/intro.po @@ -0,0 +1,367 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:41+0300\n" +"PO-Revision-Date: 2010-10-31 13:54+0100\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: DE \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: UTF-8\n" +"Plural-Forms: \n" + +#. type: Plain text +#: ../en/intro.txt:2 +msgid "== Introduction ==" +msgstr "== Einleitung ==" + +#. type: Plain text +#: ../en/intro.txt:4 +msgid "" +"I'll use an analogy to introduce version control. See http://en.wikipedia." +"org/wiki/Revision_control[the Wikipedia entry on revision control] for a " +"saner explanation." +msgstr "" +"Ich benutze eine Analogie um in die Versionsverwaltung einzuführen. Für eine " +"vernünftigere Erklärung siehe http://de.wikipedia.org/wiki/Versionsverwaltung" +"[den Wikipedia Artikel zur Versionsverwaltung]." + +#. type: Plain text +#: ../en/intro.txt:6 +msgid "=== Work is Play ===" +msgstr "=== Arbeit ist Spiel ===" + +#. type: Plain text +#: ../en/intro.txt:8 +msgid "" +"I've played computer games almost all my life. In contrast, I only started " +"using version control systems as an adult. I suspect I'm not alone, and " +"comparing the two may make these concepts easier to explain and understand." +msgstr "" +"Ich spiele Computerspiele schon fast mein ganzes Leben. Im Gegensatz dazu " +"habe ich erst als Erwachsener damit begonnen Versionsverwaltungssysteme zu " +"benutzen. Ich vermute, dass ich damit nicht alleine bin und der Vergleich " +"hilft vielleicht dabei die Konzepte einfacher zu erklären und zu verstehen." + +#. type: Plain text +#: ../en/intro.txt:10 +msgid "" +"Think of editing your code, or document, as playing a game. Once you've made " +"a lot of progress, you'd like to save. To do so, you click on the 'Save' " +"button in your trusty editor." +msgstr "" +"Stelle dir das Bearbeiten deines Codes oder deiner Dokumente wie ein " +"Computerspiel vor. Wenn du gut voran gekommen bist, willst du das Erreichte " +"sichern. Um das zu tun, klickst du auf auf Speichern in deinem vertrauten " +"Editor." + +#. type: Plain text +#: ../en/intro.txt:12 +msgid "" +"But this will overwrite the old version. It's like those old school games " +"which only had one save slot: sure you could save, but you could never go " +"back to an older state. Which was a shame, because your previous save might " +"have been right at an exceptionally fun part of the game that you'd like to " +"revisit one day. Or worse still, your current save is in an unwinnable " +"state, and you have to start again." +msgstr "" +"Aber, das überschreibt die vorherige Version. Das ist wie bei den Spielen " +"der alten Schule, die nur Speicherplatz für eine Sicherung hatten: " +"sicherlich konntest du speichern, aber du konntest nie zu einem älteren " +"Stand zurück. Das war eine Schande, denn vielleicht war deine vorherige " +"Sicherung an einer außergewöhnlich spannenden Stelle des Spiels, zu der du " +"später gerne noch einmal zurückkehren möchtest. Oder noch schlimmer, deine " +"aktuelle Sicherung ist in einem nicht lösbaren Stand, dann musst du von ganz " +"vorne beginnen." + +#. type: Plain text +#: ../en/intro.txt:14 +msgid "=== Version Control ===" +msgstr "=== Versionsverwaltung ===" + +#. type: Plain text +#: ../en/intro.txt:16 +msgid "" +"When editing, you can 'Save As...' a different file, or copy the file " +"somewhere first before saving if you want to savour old versions. You can " +"compress them too to save space. This is a primitive and labour-intensive " +"form of version control. Computer games improved on this long ago, many of " +"them providing multiple automatically timestamped save slots." +msgstr "" +"Beim Editieren kannst du deine Datei durch 'Speichern unter ...' mit einem " +"neuen Namen abspeichern oder du kopierst sie vor dem Speichern irgendwo hin " +"um die alte Version zu erhalten. Außerdem kannst du sie komprimieren um " +"Speicherplatz zu sparen. Das ist eine primitive und mühselige Form der " +"Versionsverwaltung. Computerspiele machten das lange Zeit so, viele von " +"ihnen hatten automatisch erstellte Sicherungspunkte mit Zeitstempel." + +#. type: Plain text +#: ../en/intro.txt:18 +msgid "" +"Let's make the problem slightly tougher. Say you have a bunch of files that " +"go together, such as source code for a project, or files for a website. Now " +"if you want to keep an old version you have to archive a whole directory. " +"Keeping many versions around by hand is inconvenient, and quickly becomes " +"expensive." +msgstr "" +"Jetzt lass uns das Problem etwas komplizierter machen. Sagen wir, du hast " +"einen Haufen Dateien, die zusammen gehören, z.B. Quellcodes für ein Projekt " +"oder Dateien einer Website. Wenn du nun eine alte Version erhalten willst, " +"musst du den ganzen Ordner archivieren. Viele Versionen auf diese Art zu " +"archivieren ist mühselig und kann sehr schnell teuer werden." + +#. type: Plain text +#: ../en/intro.txt:20 +msgid "" +"With some computer games, a saved game really does consist of a directory " +"full of files. These games hide this detail from the player and present a " +"convenient interface to manage different versions of this directory." +msgstr "" +"Bei einigen Computerspielen bestand ein gesicherter Stand wirklich aus einem " +"Ordner voller Dateien. Diese Spiele versteckten die Details vor dem Spieler " +"und präsentierten eine bequeme Oberfläche um verschiedene Versionen des " +"Ordners zu verwalten." + +#. type: Plain text +#: ../en/intro.txt:22 +msgid "" +"Version control systems are no different. They all have nice interfaces to " +"manage a directory of stuff. You can save the state of the directory every " +"so often, and you can load any one of the saved states later on. Unlike most " +"computer games, they're usually smart about conserving space. Typically, " +"only a few files change between version to version, and not by much. Storing " +"the differences instead of entire new copies saves room." +msgstr "" +"Versionsverwaltungen sind nicht anders. Sie alle haben bequeme " +"Schnittstellen um Ordner voller Dateien zu verwalten. Du kannst den Zustand " +"des Ordners sichern so oft du willst und du kannst später jeden " +"Sicherungspunkt wieder herstellen. Im Gegensatz zu den meisten " +"Computerspielen sind sie aber in der Regel dafür ausgelegt sparsam mit dem " +"Speicherplatz umzugehen. Normalerweise ändern sich immer nur wenige Dateien " +"zwischen zwei Versionen und die Änderungen selbst sind oft nicht groß. Die " +"Platzersparnis beruht auf dem Speichern der Unterschiede an Stelle einer " +"Kopie der ganzen Datei." + +#. type: Plain text +#: ../en/intro.txt:24 +msgid "=== Distributed Control ===" +msgstr "=== Verteilte Kontrolle ===" + +#. type: Plain text +#: ../en/intro.txt:26 +msgid "" +"Now imagine a very difficult computer game. So difficult to finish that many " +"experienced gamers all over the world decide to team up and share their " +"saved games to try to beat it. Speedruns are real-life examples: players " +"specializing in different levels of the same game collaborate to produce " +"amazing results." +msgstr "" +"Nun stell dir ein ganz kompliziertes Computerspiel vor. So schwierig zu " +"lösen, dass viele erfahrene Spieler auf der ganzen Welt beschließen sich " +"zusammen zu tun und ihre gespeicherten Spielstände auszutauschen um das " +"Spiel zu beenden. 'Speedruns' sind Beispiele aus dem echten Leben: Spieler, " +"die sich in unterschiedlichen Spielebenen des selben Spiels spezialisiert " +"haben, arbeiten zusammen um erstaunliche Ergebnisse zu erzielen." + +#. type: Plain text +#: ../en/intro.txt:28 +msgid "" +"How would you set up a system so they can get at each other's saves easily? " +"And upload new ones?" +msgstr "" +"Wie würdest du ein System erstellen, bei dem jeder auf einfache Weise die " +"Sicherungen der anderen bekommt? Und eigene Sicherungen bereitstellt?" + +#. type: Plain text +#: ../en/intro.txt:30 +msgid "" +"In the old days, every project used centralized version control. A server " +"somewhere held all the saved games. Nobody else did. Every player kept at " +"most a few saved games on their machine. When a player wanted to make " +"progress, they'd download the latest save from the main server, play a " +"while, save and upload back to the server for everyone else to use." +msgstr "" +"Früher nutzte jedes Projekt eine zentralisierte Versionsverwaltung. Irgendwo " +"speicherte ein Server alle gespeicherten Spiele, sonst niemand. Jeder " +"Spieler hatte nur ein paar gespeicherte Spiele auf seinem Rechner. Wenn ein " +"Spieler einen Fortschritt machen wollte, musste er den aktuellsten Stand vom " +"Hauptserver herunterladen, eine Weile spielen, sichern und den Stand dann " +"wieder auf den Server laden, damit irgendjemand ihn nutzen kann." + +#. type: Plain text +#: ../en/intro.txt:32 +msgid "" +"What if a player wanted to get an older saved game for some reason? Maybe " +"the current saved game is in an unwinnable state because somebody forgot to " +"pick up an object back in level three, and they want to find the latest " +"saved game where the game can still be completed. Or maybe they want to " +"compare two older saved games to see how much work a particular player did." +msgstr "" +"Was, wenn ein Spieler aus irgendeinem Grund einen alten Spielstand will? " +"Vielleicht ist der aktuell gesicherte Spielstand nicht mehr lösbar, weil " +"jemand in der dritten Ebene vergessen hat ein Objekt aufzunehmen und sie " +"versuchen den letzten Spielstand zu finden, ab dem das Spiel wieder lösbar " +"ist. Oder sie wollen zwei Spielstände vergleichen, um festzustellen wie viel " +"ein Spieler geleistet hat." + +#. type: Plain text +#: ../en/intro.txt:34 +msgid "" +"There could be many reasons to want to see an older revision, but the " +"outcome is the same. They have to ask the central server for that old saved " +"game. The more saved games they want, the more they need to communicate." +msgstr "" +"Es gibt viele Gründe warum man einen älteren Stand sehen will, aber das " +"Ergebnis ist das selbe. Man muss vom Hauptserver das alte gespeicherte Spiel " +"anfordern. Je mehr gespeicherte Spiele benötigt werden, desto mehr " +"Kommunikation ist erforderlich." + +#. type: Plain text +#: ../en/intro.txt:36 +msgid "" +"The new generation of version control systems, of which Git is a member, are " +"known as distributed systems, and can be thought of as a generalization of " +"centralized systems. When players download from the main server they get " +"every saved game, not just the latest one. It's as if they're mirroring the " +"central server." +msgstr "" +"Die neue Generation der Versionsverwaltungssysteme, zu denen Git gehört, " +"werden verteilte Systeme genannt und können als eine Verallgemeinerung der " +"zentralisierten Systeme verstanden werden. Wenn Spieler vom Hauptserver " +"herunterladen, erhalten sie jedes gespeichertes Spiel, nicht nur das zuletzt " +"gespeicherte. Es ist als ob der Hauptserver gespiegelt wird." + +#. type: Plain text +#: ../en/intro.txt:38 +msgid "" +"This initial cloning operation can be expensive, especially if there's a " +"long history, but it pays off in the long run. One immediate benefit is that " +"when an old save is desired for any reason, communication with the central " +"server is unnecessary." +msgstr "" +"Dieses erste 'Cloning' kann teuer sein, vor allem, wenn eine lange " +"Geschichte existiert, aber auf Dauer wird es sich lohnen. Ein unmittelbarer " +"Vorteil ist, wenn aus irgendeinem Grund ein älterer Stand benötigt wird, ist " +"keine Kommunikation mit dem Hauptserver notwendig." + +#. type: Plain text +#: ../en/intro.txt:40 +msgid "=== A Silly Superstition ===" +msgstr "=== Ein dummer Aberglaube ===" + +#. type: Plain text +#: ../en/intro.txt:42 +msgid "" +"A popular misconception is that distributed systems are ill-suited for " +"projects requiring an official central repository. Nothing could be further " +"from the truth. Photographing someone does not cause their soul to be " +"stolen. Similarly, cloning the master repository does not diminish its " +"importance." +msgstr "" +"Ein weit verbreitetes Missverständnis ist, dass verteilte System ungeeignet " +"sind für Projekte, die ein offizielles zentrales 'Repository' benötigen. " +"Nichts könnte weiter von der Wahrheit entfernt sein. Jemanden zu " +"fotografieren stiehlt nicht dessen Seele. Genauso wenig setzt das 'Clonen' " +"des zentralen 'Repository' dessen Bedeutung herab." + +#. type: Plain text +#: ../en/intro.txt:44 +msgid "" +"A good first approximation is that anything a centralized version control " +"system can do, a well-designed distributed system can do better. Network " +"resources are simply costlier than local resources. While we shall later see " +"there are drawbacks to a distributed approach, one is less likely to make " +"erroneous comparisons with this rule of thumb." +msgstr "" +"Eine gute erste Annäherung ist, dass alles was eine zentralisierte " +"Versionsverwaltung kann, ein gut durchdachtes verteiltes System besser kann. " +"Netzwerkressourcen sind einfach teurer als lokale Ressourcen. Auch wenn wir " +"später Nachteile beim verteilten Ansatz sehen werden, ist man mit dieser " +"Faustregel weniger anfällig für falsche Vergleiche." + +#. type: Plain text +#: ../en/intro.txt:48 +msgid "" +"A small project may only need a fraction of the features offered by such a " +"system, but using systems that scale poorly for tiny projects is like using " +"Roman numerals for calculations involving small numbers." +msgstr "" +"Ein kleines Projekt mag nur einen Bruchteil der Möglichkeiten benötigen, die " +"so ein System bietet. Aber deshalb ein einfacheres, schlecht erweiterbares " +"System zu benutzen, ist wie römische Ziffern zum Rechnen mit kleinen Zahlen " +"zu verwenden." + +#. type: Plain text +#: ../en/intro.txt:50 +msgid "" +"Moreover, your project may grow beyond your original expectations. Using Git " +"from the outset is like carrying a Swiss army knife even though you mostly " +"use it to open bottles. On the day you desperately need a screwdriver you'll " +"be glad you have more than a plain bottle-opener." +msgstr "" +"Außerdem könnte dein Projekt weit über die ursprünglichen Erwartungen " +"hinauswachsen. Git von Anfang an zu benutzen, ist wie ein Schweizer " +"Taschenmesser mit sich zu tragen, auch wenn damit meistens nur Flaschen " +"geöffnet werden. Eines Tages brauchst du vielleicht dringend einen " +"Schraubendreher, dann bist du froh mehr als nur einen einfachen " +"Flaschenöffner bei dir zu haben." + +#. type: Plain text +#: ../en/intro.txt:52 +msgid "=== Merge Conflicts ===" +msgstr "=== 'Merge' Konflikte ===" + +#. type: Plain text +#: ../en/intro.txt:54 +msgid "" +"For this topic, our computer game analogy becomes too thinly stretched. " +"Instead, let us again consider editing a document." +msgstr "" +"Für diesen Punkt ist unsere Computerspielanalogie ungeeignet. Stattdessen " +"stellen wir uns wieder vor, wir editieren ein Dokument." + +#. type: Plain text +#: ../en/intro.txt:56 +msgid "" +"Suppose Alice inserts a line at the beginning of a file, and Bob appends one " +"at the end of his copy. They both upload their changes. Most systems will " +"automatically deduce a reasonable course of action: accept and merge their " +"changes, so both Alice's and Bob's edits are applied." +msgstr "" +"Stell dir vor, Alice fügt eine Zeile am Dateianfang hinzu und Bob eine am " +"Dateiende. Beide laden ihre Änderungen hoch. Die meisten Systeme wählen " +"automatisch eine vernünftige Vorgehensweise: akzeptiere beide Änderungen und " +"füge sie zusammen, damit fließen beide Änderungen in das Dokument mit ein." + +#. type: Plain text +#: ../en/intro.txt:58 +msgid "" +"Now suppose both Alice and Bob have made distinct edits to the same line. " +"Then it is impossible to proceed without human intervention. The second " +"person to upload is informed of a _merge conflict_, and must choose one edit " +"over another, or revise the line entirely." +msgstr "" +"Nun stell dir vor beide, Alice und Bob, machen Änderungen in der selben " +"Zeile. Dann ist es unmöglich ohne menschlichen Eingriff fortzufahren. Die " +"zweite Person, welche die Datei hoch lädt, wird über einen _'Merge' " +"Konflikt_ informiert und muss entscheiden, welche Änderung übernommen wird " +"oder die ganze Zeile überarbeiten. " + +#. type: Plain text +#: ../en/intro.txt:59 +msgid "" +"More complex situations can arise. Version control systems handle the " +"simpler cases themselves, and leave the difficult cases for humans. Usually " +"their behaviour is configurable." +msgstr "" +"Es können noch weitaus kompliziertere Situationen entstehen. " +"Versionsverwaltungssysteme behandeln die einfacheren Fälle selbst und " +"überlassen die schwierigen uns Menschen. Üblicherweise ist deren Verhalten " +"einstellbar." diff --git a/de/pot/multiplayer.po b/de/pot/multiplayer.po new file mode 100644 index 0000000..bf1e744 --- /dev/null +++ b/de/pot/multiplayer.po @@ -0,0 +1,567 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"POT-Creation-Date: 2010-10-26 18:38+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" + +#. type: Plain text +#: ../en/multiplayer.txt:2 +msgid "== Multiplayer Git ==" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:6 +msgid "" +"Initially I used Git on a private project where I was the sole developer. " +"Amongst the commands related to Git's distributed nature, I needed only " +"*pull* and *clone* so could I keep the same project in different places." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:11 +msgid "" +"Later I wanted to publish my code with Git, and include changes from " +"contributors. I had to learn how to manage projects with multiple developers " +"from all over the world. Fortunately, this is Git's forte, and arguably its " +"raison d'être." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:13 +msgid "=== Who Am I? ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:17 +msgid "" +"Every commit has an author name and email, which is shown by *git log*. By " +"default, Git uses system settings to populate these fields. To set them " +"explicitly, type:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:20 +#, no-wrap +msgid "" +" $ git config --global user.name \"John Doe\"\n" +" $ git config --global user.email johndoe@example.com\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:22 +msgid "Omit the global flag to set these options only for the current repository." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:24 +msgid "=== Git Over SSH, HTTP ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:27 +msgid "" +"Suppose you have SSH access to a web server, but Git is not " +"installed. Though less efficient than its native protocol, Git can " +"communicate over HTTP." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:30 +msgid "" +"Download, compile and install Git in your account, and create a repository " +"in your web directory:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:35 +#, no-wrap +msgid "" +" $ GIT_DIR=proj.git git init\n" +" $ cd proj.git\n" +" $ git --bare update-server-info\n" +" $ cp hooks/post-update.sample hooks/post-update\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:37 +msgid "For older versions of Git, the copy command fails and you should run:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:39 +#, no-wrap +msgid " $ chmod a+x hooks/post-update\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:41 +msgid "Now you can publish your latest edits via SSH from any clone:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:43 +#, no-wrap +msgid " $ git push web.server:/path/to/proj.git master\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:45 +msgid "and anybody can get your project with:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:47 +#, no-wrap +msgid " $ git clone http://web.server/proj.git\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:49 +msgid "=== Git Over Anything ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:55 +msgid "" +"Want to synchronize repositories without servers, or even a network " +"connection? Need to improvise during an emergency? We've seen " +"<>. We could shuttle such files back " +"and forth to transport git repositories over any medium, but a more " +"efficient tool is *git bundle*." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:57 +msgid "The sender creates a 'bundle':" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:59 +#, no-wrap +msgid " $ git bundle create somefile HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:63 +msgid "" +"then transports the bundle, +somefile+, to the other party somehow: email, " +"thumb drive, an *xxd* printout and an OCR scanner, reading bits over the " +"phone, smoke signals, etc. The receiver retrieves commits from the bundle by " +"typing:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:65 +#, no-wrap +msgid " $ git pull somefile\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:68 +msgid "" +"The receiver can even do this from an empty repository. Despite its size, " +"+somefile+ contains the entire original git repository." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:72 +msgid "" +"In larger projects, eliminate waste by bundling only changes the other " +"repository lacks. For example, suppose the commit ``1b6d...'' is the most " +"recent commit shared by both parties:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:74 +#, no-wrap +msgid " $ git bundle create somefile HEAD ^1b6d\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:78 +msgid "" +"If done frequently, one could easily forget which commit was last sent. The " +"help page suggests using tags to solve this. Namely, after you send a " +"bundle, type:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:80 +#, no-wrap +msgid " $ git tag -f lastbundle HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:82 +msgid "and create new refresher bundles with:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:84 +#, no-wrap +msgid " $ git bundle create newbundle HEAD ^lastbundle\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:86 +msgid "=== Patches: The Global Currency ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:92 +msgid "" +"Patches are text representations of your changes that can be easily " +"understood by computers and humans alike. This gives them universal " +"appeal. You can email a patch to developers no matter what version control " +"system they're using. As long as your audience can read their email, they " +"can see your edits. Similarly, on your side, all you require is an email " +"account: there's no need to setup an online Git repository." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:94 +msgid "Recall from the first chapter:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:96 +#, no-wrap +msgid " $ git diff 1b6d > my.patch\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:99 +msgid "" +"outputs a patch which can be pasted into an email for discussion. In a Git " +"repository, type:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:101 +#, no-wrap +msgid " $ git apply < my.patch\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:103 +msgid "to apply the patch." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:106 +msgid "" +"In more formal settings, when author names and perhaps signatures should be " +"recorded, generate the corresponding patches past a certain point by typing:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:108 +#, no-wrap +msgid " $ git format-patch 1b6d\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:110 +msgid "" +"The resulting files can be given to *git-send-email*, or sent by hand. You " +"can also specify a range of commits:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:112 +#, no-wrap +msgid " $ git format-patch 1b6d..HEAD^^\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:114 +msgid "On the receiving end, save an email to a file, then type:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:116 +#, no-wrap +msgid " $ git am < email.txt\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:118 +msgid "" +"This applies the incoming patch and also creates a commit, including " +"information such as the author." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:120 +msgid "" +"With a browser email client, you may need to click a button to see the email " +"in its raw original form before saving the patch to a file." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:124 +msgid "" +"There are slight differences for mbox-based email clients, but if you use " +"one of these, you're probably the sort of person who can figure them out " +"easily without reading tutorials!" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:126 +msgid "=== Sorry, We've Moved ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:130 +msgid "" +"After cloning a repository, running *git push* or *git pull* will " +"automatically push to or pull from the original URL. How does Git do this? " +"The secret lies in config options created with the clone. Let's take a peek:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:132 +#, no-wrap +msgid " $ git config --list\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:136 +msgid "" +"The +remote.origin.url+ option controls the source URL; ``origin'' is a " +"nickname given to the source repository. As with the ``master'' branch " +"convention, we may change or delete this nickname but there is usually no " +"reason for doing so." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:138 +msgid "If the original repository moves, we can update the URL via:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:140 +#, no-wrap +msgid " $ git config remote.origin.url git://new.url/proj.git\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:146 +msgid "" +"The +branch.master.merge+ option specifies the default remote branch in a " +"*git pull*. During the initial clone, it is set to the current branch of the " +"source repository, so even if the HEAD of the source repository subsequently " +"moves to a different branch, a later pull will faithfully follow the " +"original branch." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:150 +msgid "" +"This option only applies to the repository we first cloned from, which is " +"recorded in the option +branch.master.remote+. If we pull in from other " +"repositories we must explicitly state which branch we want:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:152 +#, no-wrap +msgid " $ git pull git://example.com/other.git master\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:155 +msgid "" +"The above explains why some of our earlier push and pull examples had no " +"arguments." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:157 +msgid "=== Remote Branches ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:162 +msgid "" +"When you clone a repository, you also clone all its branches. You may not " +"have noticed this because Git hides them away: you must ask for them " +"specifically. This prevents branches in the remote repository from " +"interfering with your branches, and also makes Git easier for beginners." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:164 +msgid "List the remote branches with:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:166 +#, no-wrap +msgid " $ git branch -r\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:168 +msgid "You should see something like:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:172 +#, no-wrap +msgid "" +" origin/HEAD\n" +" origin/master\n" +" origin/experimental\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:177 +msgid "" +"These represent branches and the HEAD of the remote repository, and can be " +"used in regular Git commands. For example, suppose you have made many " +"commits, and wish to compare against the last fetched version. You could " +"search through the logs for the appropriate SHA1 hash, but it's much easier " +"to type:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:179 +#, no-wrap +msgid " $ git diff origin/HEAD\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:181 +msgid "Or you can see what the ``experimental'' branch has been up to:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:183 +#, no-wrap +msgid " $ git log origin/experimental\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:185 +msgid "=== Multiple Remotes ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:188 +msgid "" +"Suppose two other developers are working on our project, and we want to keep " +"tabs on both. We can follow more than one repository at a time with:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:191 +#, no-wrap +msgid "" +" $ git remote add other git://example.com/some_repo.git\n" +" $ git pull other some_branch\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:194 +msgid "" +"Now we have merged in a branch from the second repository, and we have easy " +"access to all branches of all repositories:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:196 +#, no-wrap +msgid " $ git diff origin/experimental^ other/some_branch~5\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:200 +msgid "" +"But what if we just want to compare their changes without affecting our own " +"work? In other words, we want to examine their branches without having their " +"changes invade our working directory. Then rather than pull, run:" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:203 +#, no-wrap +msgid "" +" $ git fetch # Fetch from origin, the default.\n" +" $ git fetch other # Fetch from the second programmer.\n" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:207 +msgid "" +"This just fetches histories. Although the working directory remains " +"untouched, we can refer to any branch of any repository in a Git command " +"because we now possess a local copy." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:211 +msgid "" +"Recall that behind the scenes, a pull is simply a *fetch* then *merge*. " +"Usually we *pull* because we want to merge the latest commit after a fetch; " +"this situation is a notable exception." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:214 +msgid "" +"See *git help remote* for how to remove remote repositories, ignore certain " +"branches, and more." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:216 +msgid "=== My Preferences ===" +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:220 +msgid "" +"For my projects, I like contributors to prepare repositories from which I " +"can pull. Some Git hosting services let you host your own fork of a project " +"with the click of a button." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:224 +msgid "" +"After I fetch a tree, I run Git commands to navigate and examine the " +"changes, which ideally are well-organized and well-described. I merge my own " +"changes, and perhaps make further edits. Once satisfied, I push to the main " +"repository." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:229 +msgid "" +"Though I infrequently receive contributions, I believe this approach scales " +"well. See " +"http://torvalds-family.blogspot.com/2009/06/happiness-is-warm-scm.html[this " +"blog post by Linus Torvalds]." +msgstr "" + +#. type: Plain text +#: ../en/multiplayer.txt:233 +msgid "" +"Staying in the Git world is slightly more convenient than patch files, as it " +"saves me from converting them to Git commits. Furthermore, Git handles " +"details such as recording the author's name and email address, as well as " +"the time and date, and asks the author to describe their own change." +msgstr "" diff --git a/de/pot/preface.po b/de/pot/preface.po new file mode 100644 index 0000000..6b3cd75 --- /dev/null +++ b/de/pot/preface.po @@ -0,0 +1,221 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-26 18:38+0300\n" +"PO-Revision-Date: 2010-10-26 20:30+0200\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: DE \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: UTF-8\n" + +#. type: Plain text +#: ../en/preface.txt:4 +msgid "= Git Magic = Ben Lynn August 2007" +msgstr "= Git Magic = Ben Lynn August 2007" + +#. type: Plain text +#: ../en/preface.txt:6 +msgid "== Preface ==" +msgstr "== Vorwort ==" + +#. type: Plain text +#: ../en/preface.txt:8 +msgid "" +"http://git.or.cz/[Git] is a version control Swiss army knife. A reliable " +"versatile multipurpose revision control tool whose extraordinary flexibility " +"makes it tricky to learn, let alone master." +msgstr "" +"http://git.or.cz/[Git] is a version control Swiss army knife. A reliable " +"versatile multipurpose revision control tool whose extraordinary flexibility " +"makes it tricky to learn, let alone master." + +#. type: Plain text +#: ../en/preface.txt:10 +msgid "" +"As Arthur C. Clarke observed, any sufficiently advanced technology is " +"indistinguishable from magic. This is a great way to approach Git: newbies " +"can ignore its inner workings and view Git as a gizmo that can amaze friends " +"and infuriate enemies with its wondrous abilities." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:12 +msgid "" +"Rather than go into details, we provide rough instructions for particular " +"effects. After repeated use, gradually you will understand how each trick " +"works, and how to tailor the recipes for your needs." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:14 +msgid ".Translations" +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:19 +msgid "" +"http://docs.google.com/View?id=dfwthj68_675gz3bw8kj[Chinese (Simplified)]: " +"by JunJie, Meng and JiangWei." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:19 +msgid "link:/~blynn/gitmagic/intl/es/[Spanish]: by Rodrigo Toledo." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:19 +msgid "link:/~blynn/gitmagic/intl/de/[German]: by Benjamin Bellee." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:19 +msgid "" +"http://www.slideshare.net/slide_user/magia-git[Portuguese]: by Leonardo " +"Siqueira Rodrigues [http://www.slideshare.net/slide_user/magia-git-verso-odt" +"[ODT version]]." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:21 +msgid ".Other Editions" +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:26 +msgid "link:book.html[Single webpage]: barebones HTML, with no CSS." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:26 +msgid "link:book.pdf[PDF file]: printer-friendly." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:26 +msgid "" +"http://packages.debian.org/gitmagic[Debian package], http:://packages.ubuntu." +"com/gitmagic[Ubuntu package]: get a fast and local copy of this site. Handy " +"http://csdcf.stanford.edu/status/[when this server is offline]." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:26 +msgid "" +"http://www.amazon.com/Git-Magic-Ben-Lynn/dp/1451523343/[Physical book " +"[Amazon.com]]: 64 pages, 15.24cm x 22.86cm, black and white. Handy when " +"there is no electricity." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:28 +msgid "=== Thanks! ===" +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:30 +msgid "" +"Dustin Sallings, Alberto Bertogli, James Cameron, Douglas Livingstone, " +"Michael Budde, Richard Albury, Tarmigan, Derek Mahar, Frode Aannevik, Keith " +"Rarick, Andy Somerville, Ralf Recker, Øyvind A. Holm, Miklos Vajna, " +"Sébastien Hinderer, Thomas Miedema, and Joe Malin contributed corrections " +"and improvements." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:33 +msgid "" +"François Marier maintains the Debian package originally created by Daniel " +"Baumann." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:36 +msgid "" +"JunJie, Meng, JiangWei, Rodrigo Toledo, Leonardo Siqueira Rodrigues, and " +"Benjamin Bellee worked on translations of this guide." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:39 +msgid "" +"My gratitude goes to many others for your support and praise. I'm tempted to " +"quote you here, but it might raise expectations to ridiculous heights." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:41 +msgid "" +"If I've left you out by mistake, please tell me or just send me a patch!" +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:43 +msgid ".Free Git hosting" +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:47 +msgid "" +"http://repo.or.cz/[http://repo.or.cz/] hosts free projects. The first Git " +"hosting site. Founded and maintained by one of the earliest Git developers." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:47 +msgid "" +"http://gitorious.org/[http://gitorious.org/] is another Git hosting site " +"aimed at open-source projects." +msgstr "" + +#. type: Bullet: ' - ' +#: ../en/preface.txt:47 +msgid "" +"http://github.com/[http://github.com/] hosts open-source projects for free, " +"and private projects for a fee." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:49 +msgid "Many thanks to each of these sites for hosting this guide." +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:51 +msgid "=== License ===" +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:54 +msgid "" +"This guide is released under http://www.gnu.org/licenses/gpl-3.0.html[the " +"GNU General Public License version 3]. Naturally, the source is kept in a " +"Git repository, and can be obtained by typing:" +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:56 +#, no-wrap +msgid " $ git clone git://repo.or.cz/gitmagic.git # Creates \"gitmagic\" directory.\n" +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:58 +msgid "or from one of the mirrors:" +msgstr "" + +#. type: Plain text +#: ../en/preface.txt:60 +#, no-wrap +msgid "" +" $ git clone git://github.com/blynn/gitmagic.git\n" +" $ git clone git://gitorious.org/gitmagic/mainline.git\n" +msgstr "" diff --git a/de/pot/secrets.po b/de/pot/secrets.po new file mode 100644 index 0000000..8aafab5 --- /dev/null +++ b/de/pot/secrets.po @@ -0,0 +1,528 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-26 18:38+0300\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Plain text +#: ../en/secrets.txt:2 +msgid "== Secrets Revealed ==" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:4 +msgid "" +"We take a peek under the hood and explain how Git performs its miracles. I " +"will skimp over details. For in-depth descriptions refer to http://www." +"kernel.org/pub/software/scm/git/docs/user-manual.html[the user manual]." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:6 +msgid "=== Invisibility ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:8 +msgid "" +"How can Git be so unobtrusive? Aside from occasional commits and merges, you " +"can work as if you were unaware that version control exists. That is, until " +"you need it, and that's when you're glad Git was watching over you the whole " +"time." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:10 +msgid "" +"Other version control systems force you to constantly struggle with red tape " +"and bureaucracy. Permissions of files may be read-only unless you explicitly " +"tell a central server which files you intend to edit. The most basic " +"commands may slow to a crawl as the number of users increases. Work grinds " +"to a halt when the network or the central server goes down." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:12 +msgid "" +"In contrast, Git simply keeps the history of your project in the `.git` " +"directory in your working directory. This is your own copy of the history, " +"so you can stay offline until you want to communicate with others. You have " +"total control over the fate of your files because Git can easily recreate a " +"saved state from `.git` at any time." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:14 +msgid "=== Integrity ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:16 +msgid "" +"Most people associate cryptography with keeping information secret, but " +"another equally important goal is keeping information safe. Proper use of " +"cryptographic hash functions can prevent accidental or malicious data " +"corruption." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:18 +msgid "" +"A SHA1 hash can be thought of as a unique 160-bit ID number for every string " +"of bytes you'll encounter in your life. Actually more than that: every " +"string of bytes that any human will ever use over many lifetimes." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:20 +msgid "" +"As a SHA1 hash is itself a string of bytes, we can hash strings of bytes " +"containing other hashes. This simple observation is surprisingly useful: " +"look up 'hash chains'. We'll later see how Git uses it to efficiently " +"guarantee data integrity." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:22 +msgid "" +"Briefly, Git keeps your data in the `.git/objects` subdirectory, where " +"instead of normal filenames, you'll find only IDs. By using IDs as " +"filenames, as well as a few lockfiles and timestamping tricks, Git " +"transforms any humble filesystem into an efficient and robust database." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:24 +msgid "=== Intelligence ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:26 +msgid "" +"How does Git know you renamed a file, even though you never mentioned the " +"fact explicitly? Sure, you may have run *git mv*, but that is exactly the " +"same as a *git rm* followed by a *git add*." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:28 +msgid "" +"Git heuristically ferrets out renames and copies between successive " +"versions. In fact, it can detect chunks of code being moved or copied around " +"between files! Though it cannot cover all cases, it does a decent job, and " +"this feature is always improving. If it fails to work for you, try options " +"enabling more expensive copy detection, and consider upgrading." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:30 +msgid "=== Indexing ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:32 +msgid "" +"For every tracked file, Git records information such as its size, creation " +"time and last modification time in a file known as the 'index'. To determine " +"whether a file has changed, Git compares its current stats with those cached " +"in the index. If they match, then Git can skip reading the file again." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:35 +msgid "" +"Since stat calls are considerably faster than file reads, if you only edit a " +"few files, Git can update its state in almost no time." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:40 +msgid "" +"We stated earlier that the index is a staging area. Why is a bunch of file " +"stats a staging area? Because the add command puts files into Git's database " +"and updates these stats, while the commit command, without options, creates " +"a commit based only on these stats and the files already in the database." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:42 +msgid "=== Git's Origins ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:44 +msgid "" +"This http://lkml.org/lkml/2005/4/6/121[Linux Kernel Mailing List post] " +"describes the chain of events that led to Git. The entire thread is a " +"fascinating archaeological site for Git historians." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:46 +msgid "=== The Object Database ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:52 +msgid "" +"Every version of your data is kept in the 'object database', which lives in " +"the subdirectory `.git/objects`; the other residents of `.git/` hold lesser " +"data: the index, branch names, tags, configuration options, logs, the " +"current location of the head commit, and so on. The object database is " +"elementary yet elegant, and the source of Git's power." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:55 +msgid "" +"Each file within `.git/objects` is an 'object'. There are 3 kinds of objects " +"that concern us: 'blob' objects, 'tree' objects, and 'commit' objects." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:57 +msgid "=== Blobs ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:59 +msgid "" +"First, a magic trick. Pick a filename, any filename. In an empty directory:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:64 +#, no-wrap +msgid "" +" $ echo sweet > YOUR_FILENAME\n" +" $ git init\n" +" $ git add .\n" +" $ find .git/objects -type f\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:66 +msgid "You'll see +.git/objects/aa/823728ea7d592acc69b36875a482cdf3fd5c8d+." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:69 +msgid "" +"How do I know this without knowing the filename? It's because the SHA1 hash " +"of:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:71 +#, no-wrap +msgid " \"blob\" SP \"6\" NUL \"sweet\" LF\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:75 +msgid "" +"is aa823728ea7d592acc69b36875a482cdf3fd5c8d, where SP is a space, NUL is a " +"zero byte and LF is a linefeed. You can verify this by typing:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:77 +#, no-wrap +msgid " $ printf \"blob 6\\000sweet\\n\" | sha1sum\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:84 +msgid "" +"Git is 'content-addressable': files are not stored according to their " +"filename, but rather by the hash of the data they contain, in a file we call " +"a 'blob object'. We can think of the hash as a unique ID for a file's " +"contents, so in a sense we are addressing files by their content. The " +"initial `blob 6` is merely a header consisting of the object type and its " +"length in bytes; it simplifies internal bookkeeping." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:87 +msgid "" +"Thus I could easily predict what you would see. The file's name is " +"irrelevant: only the data inside is used to construct the blob object." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:91 +msgid "" +"You may be wondering what happens to identical files. Try adding copies of " +"your file, with any filenames whatsoever. The contents of +.git/objects+ " +"stay the same no matter how many you add. Git only stores the data once." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:95 +msgid "" +"By the way, the files within +.git/objects+ are compressed with zlib so you " +"should not stare at them directly. Filter them through http://www.zlib.net/" +"zpipe.c[zpipe -d], or type:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:97 +#, no-wrap +msgid " $ git cat-file -p aa823728ea7d592acc69b36875a482cdf3fd5c8d\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:99 +msgid "which pretty-prints the given object." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:101 +msgid "=== Trees ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:104 +msgid "" +"But where are the filenames? They must be stored somewhere at some stage. " +"Git gets around to the filenames during a commit:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:107 +#, no-wrap +msgid "" +" $ git commit # Type some message.\n" +" $ find .git/objects -type f\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:109 +msgid "" +"You should now see 3 objects. This time I cannot tell you what the 2 new " +"files are, as it partly depends on the filename you picked. We'll proceed " +"assuming you chose ``rose''. If you didn't, you can rewrite history to make " +"it look like you did:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:112 +#, no-wrap +msgid "" +" $ git filter-branch --tree-filter 'mv YOUR_FILENAME rose'\n" +" $ find .git/objects -type f\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:116 +msgid "" +"Now you should see the file +.git/objects/05/" +"b217bb859794d08bb9e4f7f04cbda4b207fbe9+, because this is the SHA1 hash of " +"its contents:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:118 +#, no-wrap +msgid " \"tree\" SP \"32\" NUL \"100644 rose\" NUL 0xaa823728ea7d592acc69b36875a482cdf3fd5c8d\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:120 +msgid "Check this file does indeed contain the above by typing:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:122 +#, no-wrap +msgid " $ echo 05b217bb859794d08bb9e4f7f04cbda4b207fbe9 | git cat-file --batch\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:124 +msgid "With zpipe, it's easy to verify the hash:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:126 +#, no-wrap +msgid " $ zpipe -d < .git/objects/05/b217bb859794d08bb9e4f7f04cbda4b207fbe9 | sha1sum\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:129 +msgid "" +"Hash verification is trickier via cat-file because its output contains more " +"than the raw uncompressed object file." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:135 +msgid "" +"This file is a 'tree' object: a list of tuples consisting of a file type, a " +"filename, and a hash. In our example, the file type is 100644, which means " +"`rose` is a normal file, and the hash is the blob object that contains the " +"contents of `rose'. Other possible file types are executables, symlinks or " +"directories. In the last case, the hash points to a tree object." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:139 +msgid "" +"If you ran filter-branch, you'll have old objects you no longer need. " +"Although they will be jettisoned automatically once the grace period " +"expires, we'll delete them now to make our toy example easier to follow:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:143 +#, no-wrap +msgid "" +" $ rm -r .git/refs/original\n" +" $ git reflog expire --expire=now --all\n" +" $ git prune\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:150 +msgid "" +"For real projects you should typically avoid commands like this, as you are " +"destroying backups. If you want a clean repository, it is usually best to " +"make a fresh clone. Also, take care when directly manipulating +.git+: what " +"if a Git command is running at the same time, or a sudden power outage " +"occurs? In general, refs should be deleted with *git update-ref -d*, though " +"usually it's safe to remove +refs/original+ by hand." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:152 +msgid "=== Commits ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:156 +msgid "" +"We've explained 2 of the 3 objects. The third is a 'commit' object. Its " +"contents depend on the commit message as well as the date and time it was " +"created. To match what we have here, we'll have to tweak it a little:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:166 +#, no-wrap +msgid "" +" $ git commit --amend -m Shakespeare # Change the commit message.\n" +" $ git filter-branch --env-filter 'export\n" +" GIT_AUTHOR_DATE=\"Fri 13 Feb 2009 15:31:30 -0800\"\n" +" GIT_AUTHOR_NAME=\"Alice\"\n" +" GIT_AUTHOR_EMAIL=\"alice@example.com\"\n" +" GIT_COMMITTER_DATE=\"Fri, 13 Feb 2009 15:31:30 -0800\"\n" +" GIT_COMMITTER_NAME=\"Bob\"\n" +" GIT_COMMITTER_EMAIL=\"bob@example.com\"' # Rig timestamps and authors.\n" +" $ find .git/objects -type f\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:170 +msgid "" +"You should now see +.git/objects/49/993fe130c4b3bf24857a15d7969c396b7bc187+ " +"which is the SHA1 hash of its contents:" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:177 +#, no-wrap +msgid "" +" \"commit 158\" NUL\n" +" \"tree 05b217bb859794d08bb9e4f7f04cbda4b207fbe9\" LF\n" +" \"author Alice 1234567890 -0800\" LF\n" +" \"committer Bob 1234567890 -0800\" LF\n" +" LF\n" +" \"Shakespeare\" LF\n" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:179 +msgid "As before, you can run zpipe or cat-file to see for yourself." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:182 +msgid "" +"This is the first commit, so there are no parent commits, but later commits " +"will always contain at least one line identifying a parent commit." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:184 +msgid "=== Indistinguishable From Magic ===" +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:186 +msgid "" +"Git's secrets seem too simple. It looks like you could mix together a few " +"shell scripts and add a dash of C code to cook it up in a matter of hours: a " +"melange of basic filesystem operations and SHA1 hashing, garnished with lock " +"files and fsyncs for robustness. In fact, this accurately describes the " +"earliest versions of Git. Nonetheless, apart from ingenious packing tricks " +"to save space, and ingenious indexing tricks to save time, we now know how " +"Git deftly changes a filesystem into a database perfect for version control." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:194 +msgid "" +"For example, if any file within the object database is corrupted by a disk " +"error, then its hash will no longer match, alerting us to the problem. By " +"hashing hashes of other objects, we maintain integrity at all levels. " +"Commits are atomic, that is, a commit can never only partially record " +"changes: we can only compute the hash of a commit and store it in the " +"database after we already have stored all relevant trees, blobs and parent " +"commits. The object database is immune to unexpected interruptions such as " +"power outages." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:205 +msgid "" +"We defeat even the most devious adversaries. Suppose somebody attempts to " +"stealthily modify the contents of a file in an ancient version of a project. " +"To keep the object database looking healthy, they must also change the hash " +"of the corresponding blob object since it's now a different string of bytes. " +"This means they'll have to change the hash of any tree object referencing " +"the file, and in turn change the hash of all commit objects involving such a " +"tree, in addition to the hashes of all the descendants of these commits. " +"This implies the hash of the official head differs to that of the bad " +"repository. By following the trail of mismatching hashes we can pinpoint the " +"mutilated file, as well as the commit where it was first corrupted." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:208 +msgid "" +"In short, so long as the 20 bytes representing the last commit are safe, " +"it's impossible to tamper with a Git repository." +msgstr "" + +#. type: Plain text +#: ../en/secrets.txt:214 +msgid "" +"What about Git's famous features? Branching? Merging? Tags? Mere details. " +"The current head is kept in the file +.git/HEAD+, which contains a hash of a " +"commit object. The hash gets updated during a commit as well as many other " +"commands. Branches are almost the same: they are files in +.git/refs/heads+. " +"Tags too: they live in +.git/refs/tags+ but they are updated by a different " +"set of commands." +msgstr "" diff --git a/de/pot/translate.po b/de/pot/translate.po new file mode 100644 index 0000000..6a41158 --- /dev/null +++ b/de/pot/translate.po @@ -0,0 +1,113 @@ +# Git Magic - A guide to using Git +# This file is distributed under the GNU GENERAL PUBLIC LICENSE Version 3. +# Benn Lynn , 2007. +# Armin Stebich , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Git Magic deutsch\n" +"Report-Msgid-Bugs-To: bennlynn@gmail.com\n" +"POT-Creation-Date: 2010-10-30 08:21+0300\n" +"PO-Revision-Date: 2010-10-27 23:00+0200\n" +"Last-Translator: Armin Stebich \n" +"Language-Team: DE \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: UTF-8\n" +"Plural-Forms: Du\n" + +#. type: Plain text +#: ../en/translate.txt:2 +msgid "== Appendix B: Translating This Guide ==" +msgstr "== Anhang B: Diese Anleitung übersetzen ==" + +#. type: Plain text +#: ../en/translate.txt:5 +msgid "" +"Clone the source, then create a directory corresponding to the target http://" +"www.iana.org/assignments/language-subtag-registry[language's IETF tag]: see " +"http://www.w3.org/International/articles/language-tags/Overview.en.php[the " +"W3C article on internationalization]. For example, English is \"en\", " +"Japanese is \"ja\", and Traditional Chinese is \"zh-Hant\". In the new " +"directory, and translate the +txt+ files from the \"en\" subdirectory." +msgstr "" +"'Clone' die Quelltexte, dann erstelle ein Verzeichnis mit dem Namen des " +"http://www.iana.org/assignments/language-subtag-registry[IETF Sprachkürzel] " +"der übersetzten Sprache: siehe http://www.w3.org/International/articles/" +"language-tags/Overview.en.php[den W3C Artikel über Internationalisierung]. " +"Zum Beispiel, Englisch ist \"en\", Japanisch ist \"ja\" und traditionelles " +"Chinesisch ist \"zh-Hant\". Kopiere alle txt-Dateien aus dem \"en\"-" +"Verzeichnis in das neue Verzeichnis und übersetze diese." + +#. type: Plain text +#: ../en/translate.txt:7 +msgid "" +"For instance, to translate the guide into http://en.wikipedia.org/wiki/" +"Klingon_language[Klingon], you might type:" +msgstr "" +"Um zum Beispiel die Anleitung auf http://de.wikipedia.org/wiki/" +"Klingonische_Sprache[Klingonisch] zu übersetzen, mußt du folgendes machen:" + +#. type: Plain text +#: ../en/translate.txt:14 +#, no-wrap +msgid "" +" $ git clone git://repo.or.cz/gitmagic.git\n" +" $ cd gitmagic\n" +" $ mkdir tlh # \"tlh\" is the IETF language code for Klingon.\n" +" $ cd tlh\n" +" $ cp ../en/intro.txt .\n" +" $ edit intro.txt # Translate the file.\n" +msgstr "" +" $ git clone git://repo.or.cz/gitmagic.git\n" +" $ cd gitmagic\n" +" $ mkdir tlh # \"tlh\" ist das IETF Sprachkürzel für Klingonisch.\n" +" $ cd tlh\n" +" $ cp ../en/intro.txt .\n" +" $ edit intro.txt # Übersetze diese Datei.\n" + +#. type: Plain text +#: ../en/translate.txt:16 +msgid "and so on for each text file. You can review your work incrementally:" +msgstr "" +"und das machst du für jede txt-Datei. Du kannst deine Arbeit jederzeit wie " +"folgt überprüfen:" + +#. type: Plain text +#: ../en/translate.txt:19 +#, no-wrap +msgid "" +" $ make LANG=tlh\n" +" $ firefox book.html\n" +msgstr "" +" $ make LANG=tlh\n" +" $ firefox book.html\n" + +#. type: Plain text +#: ../en/translate.txt:23 +msgid "" +"Commit your changes often, then let me know when they're ready. GitHub.com " +"has an interface that facilitates this: fork the \"gitmagic\" project, push " +"your changes, then ask me to merge." +msgstr "" +"'Committe' deine Änderungen oft und wenn du fertig bist, gib bitte Bescheid. " +"GitHub.com hat eine Schnittstelle, die das erleichtert: Erzeuge deine eigene " +"'Fork' vom \"gitmagic\" Projekt, 'pushe' deine Änderungen, dann gib mir " +"Bescheid, deine Änderungen zu 'mergen'." + +#. type: Plain text +#: ../en/translate.txt:28 +msgid "" +"I like to have translations follow the above scheme so my scripts can " +"produce HTML and PDF versions. Also, it conveniently keeps all the " +"translations in the official repository. But please do whatever suits you " +"best: for example, the Chinese translators used Google Docs. I'm happy as " +"long as your work enables more people to access my work." +msgstr "" +"Ich bevorzuge Übersetzungen nach diesem Schema, denn so können meine Skripte " +"HTML und PDF Versionen erstellen. Außerdem hält es alle Übersetzungen bequem " +"im offiziellen 'Repository'. Trotzdem, wähle den Weg, der dir am besten " +"liegt. Die chinesischen Übersetzer zum Beispiel benutzen Google Docs. Ich " +"bin glücklich, so lange deine Arbeit mehr Menschen den Zugang zu meiner " +"Arbeit ermöglicht." -- 2.11.4.GIT