diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index 6f418777..f0fd7549 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -268,7 +268,7 @@ exports.strings = { 'git-error-args-many': { '__desc__': 'One of the error messages for git', 'en_US': 'I expect at most {upper} argument(s) for {what}', - 'de_DE': 'Ich benötige maximal {upper} Argumente für {what}', + 'de_DE': 'Ich benötige maximal {upper} Argument(e) für {what}', 'zh_CN': '{what} 期望最多 {upper} 个参数', 'fr_FR': 'J\'attends au plus {upper} argument(s) pour {what}' }, @@ -276,7 +276,7 @@ exports.strings = { 'git-error-args-few': { '__desc__': 'One of the error messages for git', 'en_US': 'I expect at least {lower} argument(s) for {what}', - 'de_DE': 'Ich benötige höchstens {lower} Argumente für {what}', + 'de_DE': 'Ich benötige mindestens {lower} Argument(e) für {what}', 'zh_CN': '{what} 期望最少 {lower} 个参数', 'fr_FR': 'J\'attends au moins {upper} argument(s) pour {what}' }, diff --git a/src/levels/mixed/describe.js b/src/levels/mixed/describe.js index c590b4b5..8853df5b 100644 --- a/src/levels/mixed/describe.js +++ b/src/levels/mixed/describe.js @@ -3,10 +3,12 @@ exports.level = { "solutionCommand": "git commit ", "startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C4\",\"id\":\"side\",\"remoteTrackingBranchID\":null},\"bugFix\":{\"target\":\"C6\",\"id\":\"bugFix\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C3\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"}},\"tags\":{\"v0\":{\"target\":\"C0\",\"id\":\"v0\",\"type\":\"tag\"},\"v1\":{\"target\":\"C3\",\"id\":\"v1\",\"type\":\"tag\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}", "name": { - "en_US": "Git Describe" + "en_US": "Git Describe", + "de_DE": "Git Describe" }, "hint": { - "en_US": "Just commit once on bugFix when you're ready to move on" + "en_US": "Just commit once on bugFix when you're ready to move on", + "de_DE": "Committe nur einmal auf bugFix, wenn du soweit bist" }, "startDialog": { "en_US": { @@ -71,6 +73,69 @@ exports.level = { } } ] + }, + "de_DE": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Git Describe", + "", + "Weil Tags so super als \"Anker\" im Repository dienen können bietet Git einen Befehl um zu *beschreiben* wo du dich relativ zum nächsten \"Anker\" (also Tag) befindest. Und der heißt `git describe`.", + "", + "Er hilft dir dabei, dir einen Überblick zu verschaffen nachdem du viele Commits im Log zurück- oder vorgegangen bist; das kann vorkommen nachdem du ein `git bisect` (eine Fehlersuche) abgeschlossen hast oder wenn du dich an den Rechner eines Kollegen setzt, der gerade aus dem Urlaub gekommen ist." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Der Befehl ist folgendermaßen aufgebaut:", + "", + "`git describe `", + "", + "Dabei ist `` jeder beliebige Name, der einem Commit zugeordnet ist (Branch, Tag etc). Wenn du keinen angibst benutzt Git `HEAD`, also den aktuellen Checkout.", + "", + "Die Befehlsausgabe sieht so aus:", + "", + "`__g`", + "", + "`` ist dabei der nächstliegende Tag in den Vorgänger-Commits, `` zeigt an, wieviele Commits dieses Tag entfernt ist und `` ist das SHA des Commits, auf den das Tag zeigt." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Schauen wir uns das schnell an einem Beispiel an. Für den folgenden Baum:" + ], + "afterMarkdowns": [ + "Der Befehl `git describe master` würde folgendes ausgeben:", + "", + "`v1_2_gC2`", + "", + "Wohingegen `git describe side` dies ausgeben würde:", + "", + "`v2_1_gC4`" + ], + "command": "git tag v2 C3", + "beforeCommand": "git commit; go -b side HEAD~1; gc; gc; git tag v1 C0" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Das ist so ziemlich alles, was es über `git describe` zu wissen gibt. Versuch ein paar Orte in diesem Level damit auszugeben, um ein Gefühl dafür zu bekommen.", + "", + "Sobald du fertig bist, mach einfach einen Commit um den Level abzuschließen. Der geht auf's Haus. :P" + ] + } + } + ] } } }; diff --git a/src/levels/mixed/grabbingOneCommit.js b/src/levels/mixed/grabbingOneCommit.js index 99a43d71..db2d56f7 100644 --- a/src/levels/mixed/grabbingOneCommit.js +++ b/src/levels/mixed/grabbingOneCommit.js @@ -16,11 +16,13 @@ exports.level = { "name": { "ko": "딱 한개의 커밋만 가져오기", "en_US": "Grabbing Just 1 Commit", + "de_DE": "Einen Commit pflücken", "ja": "Grabbing Just 1 Commit", "zh_CN": "只取一个提交" }, "hint": { "en_US": "Remember, interactive rebase or cherry-pick is your friend here", + "de_DE": "Vergiss nicht: hier kommst du mit interaktivem Rebase oder Cherry-Picking weiter", "ja": "このレベルではインタラクティブモードのrebaseやcherry-pickがクリアのカギです", "ko": "대화식 리베이스(rebase -i)나 or 체리픽(cherry-pick)을 사용하세요", "zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助" @@ -65,6 +67,44 @@ exports.level = { } ] }, + "de_DE": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Lokale Commit-Haufen", + "", + "Folgende Situation habe ich beim Entwickeln des öfteren: ich bin auf der Suche nach einem Bug, aber er ist echt schwer zu finden. Um ihm auf die Spur zu kommen schreibe ich mehrere Debug-Kommandos und print-Befehle in den Code.", + "", + "Die committe ich auch immer wieder, je weiter die Suche mich trägt; natürlich in einem lokalen Branch. Schließlich finde ich den Bug, fixe ihn und freue mich!", + "", + "Einziges Problem ist, dass ich diesen `bugFix` jetzt zurück in den `master` kriegen muss. Wenn ich einfach den `master` vorspule oder meinen Branch hinein merge, bekäme der `master` auch die ganzen Debug-Befehle, was nicht gewünscht ist. Das muss anders gehen ..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Wir müssten Git sagen können, dass es nur einen Commit herüber kopieren soll. Das ist genauso wie die Level vorhin zum Code-Verschieben. Wir können dieselben Befehle benutzen:", + "", + "* `git rebase -i`", + "* `git cherry-pick`", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Da dies ein späterer Level ist überlasse ich es dir zu entscheiden, welchen Befehl du benutzen willst. Aber um da Level zu schaffen musst du irgendwie sicherstellen, dass `maste` den Commit bekommt, auf den `bugFix` zeigt." + ] + } + } + ] + }, // INTL out of sync :( "ja": { "childViews": [