From a5bb31fb6323b53559b0d15ce2d02a7ba6d74bed Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 16 Oct 2007 12:55:34 -0400 Subject: [PATCH 001/107] git-gui: Paper bag fix the global config parsing git-config won't honor any options after --list. We must supply the --global option in front of --list if we really want to load the global configuration options. Signed-off-by: Shawn O. Pearce --- git-gui.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/git-gui.sh b/git-gui.sh index 9bc5626286..38c6e595d8 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -755,7 +755,10 @@ git-version proc _parse_config {arr_name args} { array unset arr set buf {} catch { - set fd_rc [eval [list git_read config --null --list] $args] + set fd_rc [eval \ + [list git_read config] \ + $args \ + [list --null --list]] fconfigure $fd_rc -translation binary set buf [read $fd_rc] close $fd_rc From fb6cf213a3929744fc89e6a444dcd7d4b2fa3c66 Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Sat, 20 Oct 2007 15:30:53 +0200 Subject: [PATCH 002/107] git-gui: Add more terms to glossary. Signed-off-by: Shawn O. Pearce --- po/glossary/git-gui-glossary.pot | 8 ++++++-- po/glossary/git-gui-glossary.txt | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/po/glossary/git-gui-glossary.pot b/po/glossary/git-gui-glossary.pot index a2e5c73bbd..48af803314 100644 --- a/po/glossary/git-gui-glossary.pot +++ b/po/glossary/git-gui-glossary.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2007-10-05 22:30+0200\n" +"POT-Creation-Date: 2007-10-19 21:43+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -86,7 +86,7 @@ msgstr "" msgid "message" msgstr "" -#. "" +#. "Deletes all stale tracking branches under . These stale branches have already been removed from the remote repository referenced by , but are still locally available in 'remotes/'." msgid "prune" msgstr "" @@ -102,6 +102,10 @@ msgstr "" msgid "redo" msgstr "" +#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks." +msgid "remote" +msgstr "" + #. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)" msgid "repository" msgstr "" diff --git a/po/glossary/git-gui-glossary.txt b/po/glossary/git-gui-glossary.txt index b53740d48c..500d0a0ea7 100644 --- a/po/glossary/git-gui-glossary.txt +++ b/po/glossary/git-gui-glossary.txt @@ -16,10 +16,11 @@ "merge [noun]" "A successful merge results in the creation of a new commit representing the result of the merge." "merge [verb]" "To bring the contents of another branch into the current branch." "message" "" -"prune" "" +"prune" "Deletes all stale tracking branches under . These stale branches have already been removed from the remote repository referenced by , but are still locally available in 'remotes/'." "pull" "Pulling a branch means to fetch it and merge it." "push" "Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)" "redo" "" +"remote" "An other repository ('remote'). One might have a set of remotes whose branches one tracks." "repository" "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)" "reset" "" "revert" "" From 9d434d50262b00243c6249697ebfa8512042b158 Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Sat, 20 Oct 2007 15:31:43 +0200 Subject: [PATCH 003/107] git-gui: Update German translation Signed-off-by: Shawn O. Pearce --- po/de.po | 444 ++++++++++++++++++++++++---------------------- po/glossary/de.po | 14 +- 2 files changed, 238 insertions(+), 220 deletions(-) diff --git a/po/de.po b/po/de.po index 4ba2fbee51..3df30edb87 100644 --- a/po/de.po +++ b/po/de.po @@ -7,41 +7,41 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-10-10 04:04-0400\n" -"PO-Revision-Date: 2007-10-05 22:27+0200\n" +"POT-Creation-Date: 2007-10-19 21:10+0200\n" +"PO-Revision-Date: 2007-10-20 15:28+0200\n" "Last-Translator: Christian Stimming \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 -#: git-gui.sh:763 +#: git-gui.sh:41 git-gui.sh:590 git-gui.sh:604 git-gui.sh:617 git-gui.sh:700 +#: git-gui.sh:719 msgid "git-gui: fatal error" msgstr "git-gui: Programmfehler" -#: git-gui.sh:595 +#: git-gui.sh:551 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Ungültige Zeichensatz-Angabe in %s:" -#: git-gui.sh:620 +#: git-gui.sh:576 msgid "Main Font" msgstr "Programmschriftart" -#: git-gui.sh:621 +#: git-gui.sh:577 msgid "Diff/Console Font" msgstr "Vergleich-Schriftart" -#: git-gui.sh:635 +#: git-gui.sh:591 msgid "Cannot find git in PATH." msgstr "Git kann im PATH nicht gefunden werden." -#: git-gui.sh:662 +#: git-gui.sh:618 msgid "Cannot parse Git version string:" msgstr "Git Versionsangabe kann nicht erkannt werden:" -#: git-gui.sh:680 +#: git-gui.sh:636 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -60,81 +60,81 @@ msgstr "" "\n" "Soll angenommen werden, »%s« sei Version 1.5.0?\n" -#: git-gui.sh:853 +#: git-gui.sh:874 msgid "Git directory not found:" msgstr "Git-Verzeichnis nicht gefunden:" -#: git-gui.sh:860 +#: git-gui.sh:881 msgid "Cannot move to top of working directory:" msgstr "" "Es konnte nicht in das oberste Verzeichnis der Arbeitskopie gewechselt " "werden:" -#: git-gui.sh:867 +#: git-gui.sh:888 msgid "Cannot use funny .git directory:" msgstr "Unerwartete Struktur des .git Verzeichnis:" -#: git-gui.sh:872 +#: git-gui.sh:893 msgid "No working directory" msgstr "Kein Arbeitsverzeichnis" -#: git-gui.sh:1019 +#: git-gui.sh:1040 msgid "Refreshing file status..." msgstr "Dateistatus aktualisieren..." -#: git-gui.sh:1084 +#: git-gui.sh:1105 msgid "Scanning for modified files ..." msgstr "Nach geänderten Dateien suchen..." -#: git-gui.sh:1259 lib/browser.tcl:245 +#: git-gui.sh:1280 lib/browser.tcl:245 msgid "Ready." msgstr "Bereit." -#: git-gui.sh:1525 +#: git-gui.sh:1546 msgid "Unmodified" msgstr "Unverändert" -#: git-gui.sh:1527 +#: git-gui.sh:1548 msgid "Modified, not staged" msgstr "Verändert, nicht bereitgestellt" -#: git-gui.sh:1528 git-gui.sh:1533 +#: git-gui.sh:1549 git-gui.sh:1554 msgid "Staged for commit" msgstr "Bereitgestellt zum Eintragen" -#: git-gui.sh:1529 git-gui.sh:1534 +#: git-gui.sh:1550 git-gui.sh:1555 msgid "Portions staged for commit" msgstr "Teilweise bereitgestellt zum Eintragen" -#: git-gui.sh:1530 git-gui.sh:1535 +#: git-gui.sh:1551 git-gui.sh:1556 msgid "Staged for commit, missing" msgstr "Bereitgestellt zum Eintragen, fehlend" -#: git-gui.sh:1532 +#: git-gui.sh:1553 msgid "Untracked, not staged" msgstr "Nicht unter Versionskontrolle, nicht bereitgestellt" -#: git-gui.sh:1537 +#: git-gui.sh:1558 msgid "Missing" msgstr "Fehlend" -#: git-gui.sh:1538 +#: git-gui.sh:1559 msgid "Staged for removal" msgstr "Bereitgestellt zum Löschen" -#: git-gui.sh:1539 +#: git-gui.sh:1560 msgid "Staged for removal, still present" msgstr "Bereitgestellt zum Löschen, trotzdem vorhanden" -#: git-gui.sh:1541 git-gui.sh:1542 git-gui.sh:1543 git-gui.sh:1544 +#: git-gui.sh:1562 git-gui.sh:1563 git-gui.sh:1564 git-gui.sh:1565 msgid "Requires merge resolution" msgstr "Konfliktauflösung nötig" -#: git-gui.sh:1579 +#: git-gui.sh:1600 msgid "Starting gitk... please wait..." msgstr "Gitk wird gestartet... bitte warten." -#: git-gui.sh:1588 +#: git-gui.sh:1609 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -145,297 +145,295 @@ msgstr "" "\n" "%s existiert nicht" -#: git-gui.sh:1788 lib/choose_repository.tcl:32 +#: git-gui.sh:1809 lib/choose_repository.tcl:35 msgid "Repository" msgstr "Projektarchiv" -#: git-gui.sh:1789 +#: git-gui.sh:1810 msgid "Edit" msgstr "Bearbeiten" -#: git-gui.sh:1791 lib/choose_rev.tcl:560 +#: git-gui.sh:1812 lib/choose_rev.tcl:560 msgid "Branch" msgstr "Zweig" -#: git-gui.sh:1794 lib/choose_rev.tcl:547 +#: git-gui.sh:1815 lib/choose_rev.tcl:547 msgid "Commit@@noun" msgstr "Version" -#: git-gui.sh:1797 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1818 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 msgid "Merge" msgstr "Zusammenführen" -#: git-gui.sh:1798 lib/choose_rev.tcl:556 +#: git-gui.sh:1819 lib/choose_rev.tcl:556 msgid "Remote" -msgstr "Gegenseite" +msgstr "Andere Archive" -#: git-gui.sh:1807 +#: git-gui.sh:1828 msgid "Browse Current Branch's Files" msgstr "Aktuellen Zweig durchblättern" -#: git-gui.sh:1811 +#: git-gui.sh:1832 msgid "Browse Branch Files..." msgstr "Einen Zweig durchblättern..." -#: git-gui.sh:1816 +#: git-gui.sh:1837 msgid "Visualize Current Branch's History" msgstr "Aktuellen Zweig darstellen" -#: git-gui.sh:1820 +#: git-gui.sh:1841 msgid "Visualize All Branch History" msgstr "Alle Zweige darstellen" -#: git-gui.sh:1827 +#: git-gui.sh:1848 #, tcl-format msgid "Browse %s's Files" msgstr "Zweig »%s« durchblättern" -#: git-gui.sh:1829 +#: git-gui.sh:1850 #, tcl-format msgid "Visualize %s's History" msgstr "Historie von »%s« darstellen" -#: git-gui.sh:1834 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1855 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Datenbankstatistik" -#: git-gui.sh:1837 lib/database.tcl:34 +#: git-gui.sh:1858 lib/database.tcl:34 msgid "Compress Database" msgstr "Datenbank komprimieren" -#: git-gui.sh:1840 +#: git-gui.sh:1861 msgid "Verify Database" msgstr "Datenbank überprüfen" -#: git-gui.sh:1847 git-gui.sh:1851 git-gui.sh:1855 lib/shortcut.tcl:9 -#: lib/shortcut.tcl:45 lib/shortcut.tcl:84 +#: git-gui.sh:1868 git-gui.sh:1872 git-gui.sh:1876 lib/shortcut.tcl:7 +#: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Desktop-Icon erstellen" -#: git-gui.sh:1860 lib/choose_repository.tcl:36 lib/choose_repository.tcl:95 +#: git-gui.sh:1881 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 msgid "Quit" msgstr "Beenden" -#: git-gui.sh:1867 +#: git-gui.sh:1888 msgid "Undo" msgstr "Rückgängig" -#: git-gui.sh:1870 +#: git-gui.sh:1891 msgid "Redo" msgstr "Wiederholen" -#: git-gui.sh:1874 git-gui.sh:2366 +#: git-gui.sh:1895 git-gui.sh:2388 msgid "Cut" msgstr "Ausschneiden" -#: git-gui.sh:1877 git-gui.sh:2369 git-gui.sh:2440 git-gui.sh:2512 +#: git-gui.sh:1898 git-gui.sh:2391 git-gui.sh:2462 git-gui.sh:2534 #: lib/console.tcl:67 msgid "Copy" msgstr "Kopieren" -#: git-gui.sh:1880 git-gui.sh:2372 +#: git-gui.sh:1901 git-gui.sh:2394 msgid "Paste" msgstr "Einfügen" -#: git-gui.sh:1883 git-gui.sh:2375 lib/branch_delete.tcl:26 +#: git-gui.sh:1904 git-gui.sh:2397 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Löschen" -#: git-gui.sh:1887 git-gui.sh:2379 git-gui.sh:2516 lib/console.tcl:69 +#: git-gui.sh:1908 git-gui.sh:2401 git-gui.sh:2538 lib/console.tcl:69 msgid "Select All" msgstr "Alle auswählen" -#: git-gui.sh:1896 +#: git-gui.sh:1917 msgid "Create..." msgstr "Erstellen..." -#: git-gui.sh:1902 +#: git-gui.sh:1923 msgid "Checkout..." msgstr "Umstellen..." -#: git-gui.sh:1908 +#: git-gui.sh:1929 msgid "Rename..." msgstr "Umbenennen..." -#: git-gui.sh:1913 git-gui.sh:2012 +#: git-gui.sh:1934 git-gui.sh:2033 msgid "Delete..." msgstr "Löschen..." -#: git-gui.sh:1918 +#: git-gui.sh:1939 msgid "Reset..." msgstr "Zurücksetzen..." -#: git-gui.sh:1930 git-gui.sh:2313 +#: git-gui.sh:1951 git-gui.sh:2335 msgid "New Commit" msgstr "Neue Version" -#: git-gui.sh:1938 git-gui.sh:2320 +#: git-gui.sh:1959 git-gui.sh:2342 msgid "Amend Last Commit" msgstr "Letzte Version nachbessern" -#: git-gui.sh:1947 git-gui.sh:2280 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:1968 git-gui.sh:2302 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Neu laden" -#: git-gui.sh:1953 +#: git-gui.sh:1974 msgid "Stage To Commit" msgstr "Zum Eintragen bereitstellen" -#: git-gui.sh:1958 +#: git-gui.sh:1979 msgid "Stage Changed Files To Commit" msgstr "Geänderte Dateien zum Eintragen bereitstellen" -#: git-gui.sh:1964 +#: git-gui.sh:1985 msgid "Unstage From Commit" msgstr "Aus der Bereitstellung herausnehmen" -#: git-gui.sh:1969 lib/index.tcl:352 +#: git-gui.sh:1990 lib/index.tcl:352 msgid "Revert Changes" msgstr "Änderungen revidieren" -#: git-gui.sh:1976 git-gui.sh:2292 git-gui.sh:2390 +#: git-gui.sh:1997 git-gui.sh:2314 git-gui.sh:2412 msgid "Sign Off" msgstr "Abzeichnen" -#: git-gui.sh:1980 git-gui.sh:2296 +#: git-gui.sh:2001 git-gui.sh:2318 msgid "Commit@@verb" msgstr "Eintragen" -#: git-gui.sh:1991 +#: git-gui.sh:2012 msgid "Local Merge..." msgstr "Lokales Zusammenführen..." -#: git-gui.sh:1996 +#: git-gui.sh:2017 msgid "Abort Merge..." msgstr "Zusammenführen abbrechen..." -#: git-gui.sh:2008 +#: git-gui.sh:2029 msgid "Push..." -msgstr "Ausliefern..." +msgstr "Versenden..." -#: git-gui.sh:2019 lib/choose_repository.tcl:41 +#: git-gui.sh:2040 lib/choose_repository.tcl:40 msgid "Apple" msgstr "Apple" -#: git-gui.sh:2022 git-gui.sh:2044 lib/about.tcl:13 -#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 +#: git-gui.sh:2043 git-gui.sh:2065 lib/about.tcl:13 +#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 #, tcl-format msgid "About %s" msgstr "Über %s" -#: git-gui.sh:2026 +#: git-gui.sh:2047 msgid "Preferences..." -msgstr "" +msgstr "Einstellungen..." -#: git-gui.sh:2034 git-gui.sh:2558 +#: git-gui.sh:2055 git-gui.sh:2580 msgid "Options..." msgstr "Optionen..." -#: git-gui.sh:2040 lib/choose_repository.tcl:47 +#: git-gui.sh:2061 lib/choose_repository.tcl:46 msgid "Help" msgstr "Hilfe" -#: git-gui.sh:2081 +#: git-gui.sh:2102 msgid "Online Documentation" msgstr "Online-Dokumentation" -#: git-gui.sh:2165 +#: git-gui.sh:2186 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "" -#: git-gui.sh:2198 +#: git-gui.sh:2219 msgid "Current Branch:" msgstr "Aktueller Zweig:" -#: git-gui.sh:2219 -#, fuzzy +#: git-gui.sh:2240 msgid "Staged Changes (Will Commit)" -msgstr "Bereitgestellte Änderungen (werden eingetragen)" +msgstr "Bereitgestellte Änderungen (zum Eintragen)" -#: git-gui.sh:2239 -#, fuzzy +#: git-gui.sh:2259 msgid "Unstaged Changes" -msgstr "Geänderte bereitstellen" +msgstr "Nicht bereitgestellte Änderungen" -#: git-gui.sh:2286 +#: git-gui.sh:2308 msgid "Stage Changed" -msgstr "Geänderte bereitstellen" +msgstr "Alles bereitstellen" -#: git-gui.sh:2302 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2324 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" -msgstr "Ausliefern" +msgstr "Versenden" -#: git-gui.sh:2332 +#: git-gui.sh:2354 msgid "Initial Commit Message:" -msgstr "Beschreibung der ersten Version:" +msgstr "Erste Versionsbeschreibung:" -#: git-gui.sh:2333 +#: git-gui.sh:2355 msgid "Amended Commit Message:" -msgstr "Beschreibung der nachgebesserten Version:" +msgstr "Nachgebesserte Versionsbeschreibung:" -#: git-gui.sh:2334 +#: git-gui.sh:2356 msgid "Amended Initial Commit Message:" -msgstr "Beschreibung der nachgebesserten ersten Version:" +msgstr "Nachgebesserte erste Versionsbeschreibung:" -#: git-gui.sh:2335 +#: git-gui.sh:2357 msgid "Amended Merge Commit Message:" -msgstr "Beschreibung der nachgebesserten Zusammenführungs-Version:" +msgstr "Nachgebesserte Zusammenführungs-Versionsbeschreibung:" -#: git-gui.sh:2336 +#: git-gui.sh:2358 msgid "Merge Commit Message:" -msgstr "Beschreibung der Zusammenführungs-Version:" +msgstr "Zusammenführungs-Versionsbeschreibung:" -#: git-gui.sh:2337 +#: git-gui.sh:2359 msgid "Commit Message:" msgstr "Versionsbeschreibung:" -#: git-gui.sh:2382 git-gui.sh:2520 lib/console.tcl:71 +#: git-gui.sh:2404 git-gui.sh:2542 lib/console.tcl:71 msgid "Copy All" msgstr "Alle kopieren" -#: git-gui.sh:2406 lib/blame.tcl:104 +#: git-gui.sh:2428 lib/blame.tcl:104 msgid "File:" msgstr "Datei:" -#: git-gui.sh:2508 +#: git-gui.sh:2530 msgid "Refresh" msgstr "Aktualisieren" -#: git-gui.sh:2529 +#: git-gui.sh:2551 msgid "Apply/Reverse Hunk" msgstr "Änderung anwenden/umkehren" -#: git-gui.sh:2535 +#: git-gui.sh:2557 msgid "Decrease Font Size" msgstr "Schriftgröße verkleinern" -#: git-gui.sh:2539 +#: git-gui.sh:2561 msgid "Increase Font Size" msgstr "Schriftgröße vergrößern" -#: git-gui.sh:2544 +#: git-gui.sh:2566 msgid "Show Less Context" msgstr "Weniger Kontext anzeigen" -#: git-gui.sh:2551 +#: git-gui.sh:2573 msgid "Show More Context" msgstr "Mehr Kontext anzeigen" -#: git-gui.sh:2565 +#: git-gui.sh:2587 msgid "Unstage Hunk From Commit" msgstr "Aus der Bereitstellung herausnehmen" -#: git-gui.sh:2567 +#: git-gui.sh:2589 msgid "Stage Hunk For Commit" msgstr "In die Bereitstellung hinzufügen" -#: git-gui.sh:2586 +#: git-gui.sh:2608 msgid "Initializing..." msgstr "Initialisieren..." -#: git-gui.sh:2677 +#: git-gui.sh:2699 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -446,14 +444,14 @@ msgid "" "\n" msgstr "" -#: git-gui.sh:2707 +#: git-gui.sh:2729 msgid "" "\n" "This is due to a known issue with the\n" "Tcl binary distributed by Cygwin." msgstr "" -#: git-gui.sh:2712 +#: git-gui.sh:2734 #, tcl-format msgid "" "\n" @@ -515,11 +513,11 @@ msgstr "Eintragender:" #: lib/blame.tcl:796 msgid "Original File:" -msgstr "" +msgstr "Ursprüngliche Datei:" #: lib/blame.tcl:910 msgid "Originally By:" -msgstr "" +msgstr "Ursprünglich von:" #: lib/blame.tcl:916 msgid "In File:" @@ -527,7 +525,7 @@ msgstr "In Datei:" #: lib/blame.tcl:921 msgid "Copied Or Moved Here By:" -msgstr "" +msgstr "Kopiert oder verschoben durch:" #: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19 msgid "Checkout Branch" @@ -568,7 +566,7 @@ msgstr "Zweig erstellen" msgid "Create New Branch" msgstr "Neuen Zweig erstellen" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:199 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 msgid "Create" msgstr "Erstellen" @@ -615,7 +613,7 @@ msgstr "Bitte wählen Sie einen Übernahmezweig." #: lib/branch_create.tcl:140 #, tcl-format msgid "Tracking branch %s is not a branch in the remote repository." -msgstr "Übernahmezweig »%s« ist kein Zweig im Projektarchiv der Gegenseite." +msgstr "Übernahmezweig »%s« ist kein Zweig im anderen Projektarchiv." #: lib/branch_create.tcl:153 lib/branch_rename.tcl:86 msgid "Please supply a branch name." @@ -721,9 +719,9 @@ msgstr "[Nach oben]" msgid "Browse Branch Files" msgstr "Dateien des Zweigs durchblättern" -#: lib/browser.tcl:277 lib/choose_repository.tcl:215 -#: lib/choose_repository.tcl:305 lib/choose_repository.tcl:315 -#: lib/choose_repository.tcl:811 +#: lib/browser.tcl:277 lib/choose_repository.tcl:391 +#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 +#: lib/choose_repository.tcl:989 msgid "Browse" msgstr "Blättern" @@ -889,209 +887,225 @@ msgstr "" "Dies ist ein Beispieltext.\n" "Wenn Ihnen dieser Text gefällt, sollten Sie diese Schriftart wählen." -#: lib/choose_repository.tcl:25 +#: lib/choose_repository.tcl:27 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:69 lib/choose_repository.tcl:204 +#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 msgid "Create New Repository" msgstr "Neues Projektarchiv" -#: lib/choose_repository.tcl:74 lib/choose_repository.tcl:291 +#: lib/choose_repository.tcl:86 +msgid "New..." +msgstr "Neu..." + +#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 msgid "Clone Existing Repository" msgstr "Projektarchiv kopieren" -#: lib/choose_repository.tcl:79 lib/choose_repository.tcl:800 +#: lib/choose_repository.tcl:99 +msgid "Clone..." +msgstr "Kopieren..." + +#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 msgid "Open Existing Repository" msgstr "Projektarchiv öffnen" -#: lib/choose_repository.tcl:91 -msgid "Next >" -msgstr "Weiter >" +#: lib/choose_repository.tcl:112 +msgid "Open..." +msgstr "Öffnen..." -#: lib/choose_repository.tcl:152 +#: lib/choose_repository.tcl:125 +msgid "Recent Repositories" +msgstr "Zuletzt benutzte Projektarchive" + +#: lib/choose_repository.tcl:131 +msgid "Open Recent Repository:" +msgstr "Zuletzt benutztes Projektarchiv öffnen:" + +#: lib/choose_repository.tcl:294 #, tcl-format msgid "Location %s already exists." msgstr "Projektarchiv »%s« existiert bereits." -#: lib/choose_repository.tcl:158 lib/choose_repository.tcl:165 -#: lib/choose_repository.tcl:172 +#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 +#: lib/choose_repository.tcl:314 #, tcl-format msgid "Failed to create repository %s:" msgstr "Projektarchiv »%s« konnte nicht erstellt werden:" -#: lib/choose_repository.tcl:209 lib/choose_repository.tcl:309 +#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 msgid "Directory:" msgstr "Verzeichnis:" -#: lib/choose_repository.tcl:238 lib/choose_repository.tcl:363 -#: lib/choose_repository.tcl:834 +#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 +#: lib/choose_repository.tcl:1013 msgid "Git Repository" msgstr "Git Projektarchiv" -#: lib/choose_repository.tcl:253 lib/choose_repository.tcl:260 +#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "Verzeichnis »%s« existiert bereits." -#: lib/choose_repository.tcl:265 +#: lib/choose_repository.tcl:442 #, tcl-format msgid "File %s already exists." msgstr "Datei »%s« existiert bereits." -#: lib/choose_repository.tcl:286 +#: lib/choose_repository.tcl:463 msgid "Clone" msgstr "Kopieren" -#: lib/choose_repository.tcl:299 +#: lib/choose_repository.tcl:476 msgid "URL:" msgstr "URL:" -#: lib/choose_repository.tcl:319 +#: lib/choose_repository.tcl:496 msgid "Clone Type:" msgstr "Art der Kopie:" -#: lib/choose_repository.tcl:325 +#: lib/choose_repository.tcl:502 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" -msgstr "" +msgstr "Standard (schnell, teilweise redundant, Hardlinks)" -#: lib/choose_repository.tcl:331 +#: lib/choose_repository.tcl:508 msgid "Full Copy (Slower, Redundant Backup)" -msgstr "" +msgstr "Alles kopieren (langsamer, volle Redundanz)" -#: lib/choose_repository.tcl:337 +#: lib/choose_repository.tcl:514 msgid "Shared (Fastest, Not Recommended, No Backup)" -msgstr "" +msgstr "Verknüpft (schnell, nicht empfohlen, kein Backup)" -#: lib/choose_repository.tcl:369 lib/choose_repository.tcl:418 -#: lib/choose_repository.tcl:560 lib/choose_repository.tcl:630 -#: lib/choose_repository.tcl:840 lib/choose_repository.tcl:848 +#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 +#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 +#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 #, tcl-format msgid "Not a Git repository: %s" msgstr "Kein Git-Projektarchiv in »%s« gefunden." -#: lib/choose_repository.tcl:405 +#: lib/choose_repository.tcl:586 msgid "Standard only available for local repository." -msgstr "" +msgstr "Standard ist nur für lokale Projektarchive verfügbar." -#: lib/choose_repository.tcl:409 +#: lib/choose_repository.tcl:590 msgid "Shared only available for local repository." -msgstr "" +msgstr "Verknüpft ist nur für lokale Projektarchive verfügbar." -#: lib/choose_repository.tcl:439 +#: lib/choose_repository.tcl:617 msgid "Failed to configure origin" msgstr "" -#: lib/choose_repository.tcl:451 +#: lib/choose_repository.tcl:629 msgid "Counting objects" msgstr "" -#: lib/choose_repository.tcl:452 +#: lib/choose_repository.tcl:630 msgid "buckets" msgstr "" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:654 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "" -#: lib/choose_repository.tcl:512 +#: lib/choose_repository.tcl:690 #, tcl-format msgid "Nothing to clone from %s." msgstr "Von »%s« konnte nichts kopiert werden." -#: lib/choose_repository.tcl:514 lib/choose_repository.tcl:728 -#: lib/choose_repository.tcl:740 +#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 +#: lib/choose_repository.tcl:918 msgid "The 'master' branch has not been initialized." msgstr "" -#: lib/choose_repository.tcl:527 +#: lib/choose_repository.tcl:705 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "" -#: lib/choose_repository.tcl:539 +#: lib/choose_repository.tcl:717 #, tcl-format msgid "Cloning from %s" msgstr "Kopieren von »%s«" -#: lib/choose_repository.tcl:570 +#: lib/choose_repository.tcl:748 msgid "Copying objects" msgstr "Objektdatenbank kopieren" -#: lib/choose_repository.tcl:571 +#: lib/choose_repository.tcl:749 msgid "KiB" msgstr "KB" -#: lib/choose_repository.tcl:595 +#: lib/choose_repository.tcl:773 #, tcl-format msgid "Unable to copy object: %s" msgstr "Objekt kann nicht kopiert werden: %s" -#: lib/choose_repository.tcl:605 +#: lib/choose_repository.tcl:783 msgid "Linking objects" msgstr "Objekte verlinken" -#: lib/choose_repository.tcl:606 +#: lib/choose_repository.tcl:784 msgid "objects" msgstr "Objekte" -#: lib/choose_repository.tcl:614 +#: lib/choose_repository.tcl:792 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Objekt kann nicht hartverlinkt werden: %s" -#: lib/choose_repository.tcl:669 +#: lib/choose_repository.tcl:847 msgid "Cannot fetch branches and objects. See console output for details." msgstr "" -#: lib/choose_repository.tcl:680 +#: lib/choose_repository.tcl:858 msgid "Cannot fetch tags. See console output for details." msgstr "" -#: lib/choose_repository.tcl:704 +#: lib/choose_repository.tcl:882 msgid "Cannot determine HEAD. See console output for details." msgstr "" -#: lib/choose_repository.tcl:713 +#: lib/choose_repository.tcl:891 #, tcl-format msgid "Unable to cleanup %s" msgstr "" -#: lib/choose_repository.tcl:719 +#: lib/choose_repository.tcl:897 msgid "Clone failed." msgstr "Kopieren fehlgeschlagen." -#: lib/choose_repository.tcl:726 +#: lib/choose_repository.tcl:904 msgid "No default branch obtained." msgstr "" -#: lib/choose_repository.tcl:737 +#: lib/choose_repository.tcl:915 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:927 msgid "Creating working directory" msgstr "Arbeitskopie erstellen" -#: lib/choose_repository.tcl:750 lib/index.tcl:15 lib/index.tcl:80 +#: lib/choose_repository.tcl:928 lib/index.tcl:15 lib/index.tcl:80 #: lib/index.tcl:149 msgid "files" msgstr "Dateien" -#: lib/choose_repository.tcl:779 +#: lib/choose_repository.tcl:957 msgid "Initial file checkout failed." msgstr "" -#: lib/choose_repository.tcl:795 +#: lib/choose_repository.tcl:973 msgid "Open" msgstr "Öffnen" -#: lib/choose_repository.tcl:805 +#: lib/choose_repository.tcl:983 msgid "Repository:" msgstr "Projektarchiv:" -#: lib/choose_repository.tcl:854 +#: lib/choose_repository.tcl:1033 #, tcl-format msgid "Failed to open repository %s:" msgstr "Projektarchiv »%s« konnte nicht geöffnet werden." @@ -1326,7 +1340,7 @@ msgstr "Festplattenplatz von komprimierten Objekten" #: lib/database.tcl:48 msgid "Packed objects waiting for pruning" -msgstr "Komprimierte Objekte, die zum Löschen vorgesehen sind" +msgstr "Komprimierte Objekte, die zum Entfernen vorgesehen sind" #: lib/database.tcl:49 msgid "Garbage files" @@ -1644,7 +1658,7 @@ msgstr "Auf Dateiänderungsdatum verlassen" #: lib/option.tcl:111 msgid "Prune Tracking Branches During Fetch" -msgstr "Übernahmezweige löschen während Anforderung" +msgstr "Übernahmezweige entfernen während Anforderung" #: lib/option.tcl:112 msgid "Match Tracking Branches" @@ -1673,30 +1687,15 @@ msgstr "pt." #: lib/option.tcl:200 msgid "Preferences" -msgstr "" +msgstr "Einstellungen" #: lib/option.tcl:235 msgid "Failed to completely save options:" msgstr "Optionen konnten nicht gespeichert werden:" -#: lib/remote.tcl:165 -#, fuzzy -msgid "Prune from" -msgstr "Löschen von »%s«" - -#: lib/remote.tcl:170 -#, fuzzy -msgid "Fetch from" -msgstr "Von »%s« anfordern" - -#: lib/remote.tcl:213 -#, fuzzy -msgid "Push to" -msgstr "Nach »%s« ausliefern" - #: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34 msgid "Delete Remote Branch" -msgstr "Zweig im Projektarchiv der Gegenseite löschen" +msgstr "Zweig im anderen Projektarchiv löschen" #: lib/remote_branch_delete.tcl:47 msgid "From Repository" @@ -1704,7 +1703,7 @@ msgstr "Von Projektarchiv" #: lib/remote_branch_delete.tcl:50 lib/transport.tcl:123 msgid "Remote:" -msgstr "Gegenseite:" +msgstr "Anderes Archiv:" #: lib/remote_branch_delete.tcl:66 lib/transport.tcl:138 msgid "Arbitrary URL:" @@ -1780,11 +1779,23 @@ msgstr "Kein Projektarchiv ausgewählt." msgid "Scanning %s..." msgstr "»%s« laden..." -#: lib/shortcut.tcl:26 lib/shortcut.tcl:74 -msgid "Cannot write script:" -msgstr "Fehler beim Schreiben des Scripts:" +#: lib/remote.tcl:165 +msgid "Prune from" +msgstr "Entfernen von" -#: lib/shortcut.tcl:149 +#: lib/remote.tcl:170 +msgid "Fetch from" +msgstr "Anfordern von" + +#: lib/remote.tcl:213 +msgid "Push to" +msgstr "Versenden nach" + +#: lib/shortcut.tcl:20 lib/shortcut.tcl:61 +msgid "Cannot write shortcut:" +msgstr "Fehler beim Schreiben der Verknüpfung:" + +#: lib/shortcut.tcl:136 msgid "Cannot write icon:" msgstr "Fehler beim Erstellen des Icons:" @@ -1806,31 +1817,31 @@ msgstr "Neue Änderungen von »%s« holen" #: lib/transport.tcl:18 #, tcl-format msgid "remote prune %s" -msgstr "" +msgstr "Entfernen von »%s« im anderen Archiv" #: lib/transport.tcl:19 #, tcl-format msgid "Pruning tracking branches deleted from %s" -msgstr "Übernahmezweige löschen, die in »%s« gelöscht wurden" +msgstr "Übernahmezweige entfernen, die in »%s« gelöscht wurden" #: lib/transport.tcl:25 lib/transport.tcl:71 #, tcl-format msgid "push %s" -msgstr "»%s« ausliefern..." +msgstr "»%s« versenden..." #: lib/transport.tcl:26 #, tcl-format msgid "Pushing changes to %s" -msgstr "Änderungen nach »%s« ausliefern" +msgstr "Änderungen nach »%s« versenden" #: lib/transport.tcl:72 #, tcl-format msgid "Pushing %s %s to %s" -msgstr "%s %s nach %s ausliefern" +msgstr "%s %s nach %s versenden" #: lib/transport.tcl:89 msgid "Push Branches" -msgstr "Zweige ausliefern" +msgstr "Zweige versenden" #: lib/transport.tcl:103 msgid "Source Branches" @@ -1857,6 +1868,9 @@ msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)" msgid "Include tags" msgstr "Mit Markierungen übertragen" +#~ msgid "Next >" +#~ msgstr "Weiter >" + #~ msgid "Fetch" #~ msgstr "Anfordern" diff --git a/po/glossary/de.po b/po/glossary/de.po index 054cf4df5a..c94786c6ab 100644 --- a/po/glossary/de.po +++ b/po/glossary/de.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: git-gui glossary\n" -"POT-Creation-Date: 2007-10-05 22:30+0200\n" -"PO-Revision-Date: 2007-10-05 22:32+0200\n" +"POT-Creation-Date: 2007-10-19 21:43+0200\n" +"PO-Revision-Date: 2007-10-20 15:24+0200\n" "Last-Translator: Christian Stimming \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -108,9 +108,9 @@ msgstr "zusammenführen" msgid "message" msgstr "Beschreibung (Meldung?, Nachricht?; Source Safe: Kommentar)" -#. "" +#. "Deletes all stale tracking branches under . These stale branches have already been removed from the remote repository referenced by , but are still locally available in 'remotes/'." msgid "prune" -msgstr "löschen" +msgstr "entfernen" #. "Pulling a branch means to fetch it and merge it." msgid "pull" @@ -118,12 +118,16 @@ msgstr "übernehmen (ziehen?)" #. "Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)" msgid "push" -msgstr "ausliefern (hochladen? verschicken? schieben?)" +msgstr "versenden (ausliefern? hochladen? verschicken? schieben?)" #. "" msgid "redo" msgstr "wiederholen" +#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks." +msgid "remote" +msgstr "Andere Archive (Gegenseite?, Entfernte?, Server?)" + #. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)" msgid "repository" msgstr "Projektarchiv" From c43ff43601201e17be8882ee199542282f1531eb Mon Sep 17 00:00:00 2001 From: Kirill Date: Sat, 20 Oct 2007 15:35:53 -0400 Subject: [PATCH 004/107] Updated Russian translation. The most important changes are: - Git version cannot be determined... (lost in 57364320bf) - git-gui: fatal error Some changes need the second opinion (search for TOVERIFY), some changes are just copies (search for "carbon copy"). Signed-off-by: Shawn O. Pearce --- po/ru.po | 331 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 190 insertions(+), 141 deletions(-) diff --git a/po/ru.po b/po/ru.po index 3beaf9d52e..ed5b67a95c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-10-10 04:04-0400\n" -"PO-Revision-Date: 2007-07-28 18:30+0200\n" -"Last-Translator: Irina Riesen \n" +"PO-Revision-Date: 2007-10-20 14:29-0500\n" +"Last-Translator: Kirill \n" "Language-Team: Russian Translation \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" #: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 #: git-gui.sh:763 msgid "git-gui: fatal error" -msgstr "" +msgstr "git-gui: критическая ошибка" #: git-gui.sh:595 #, fuzzy, tcl-format @@ -52,6 +52,12 @@ msgid "" "\n" "Assume '%s' is version 1.5.0?\n" msgstr "" +"Невозможно определить версию Git\n" +"%s указывает на версию '%s'.\n" +"\n" +"для %s требуется версия Git, начиная с 1.5.0\n" +"\n" +"Принять '%s' как версию 1.5.0?\n" #: git-gui.sh:853 msgid "Git directory not found:" @@ -153,7 +159,7 @@ msgstr "Ветвь" #: git-gui.sh:1794 lib/choose_rev.tcl:547 #, fuzzy msgid "Commit@@noun" -msgstr "Сохранить" +msgstr "Состояние" #: git-gui.sh:1797 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 msgid "Merge" @@ -187,9 +193,9 @@ msgid "Browse %s's Files" msgstr "Показать файлы ветви" #: git-gui.sh:1829 -#, fuzzy, tcl-format +#, tcl-format msgid "Visualize %s's History" -msgstr "История всех ветвей наглядно" +msgstr "История ветви %s наглядно" #: git-gui.sh:1834 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" @@ -277,12 +283,12 @@ msgstr "Перечитать" #: git-gui.sh:1953 #, fuzzy msgid "Stage To Commit" -msgstr "Подготовлено для сохранения" +msgstr "Подготовить для сохранения" #: git-gui.sh:1958 #, fuzzy msgid "Stage Changed Files To Commit" -msgstr "Подготовлено (будет сохранено)" +msgstr "Подготовить измененные файлы для сохранения" #: git-gui.sh:1964 msgid "Unstage From Commit" @@ -313,9 +319,11 @@ msgstr "Прервать объединение..." msgid "Push..." msgstr "Отправить..." +# carbon copy #: git-gui.sh:2019 lib/choose_repository.tcl:41 +#, fuzzy msgid "Apple" -msgstr "" +msgstr "Apple" #: git-gui.sh:2022 git-gui.sh:2044 lib/about.tcl:13 #: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 @@ -325,7 +333,7 @@ msgstr "О %s" #: git-gui.sh:2026 msgid "Preferences..." -msgstr "" +msgstr "Настройки..." #: git-gui.sh:2034 git-gui.sh:2558 msgid "Options..." @@ -339,10 +347,11 @@ msgstr "Помощь" msgid "Online Documentation" msgstr "Документация в интернете" +# TOVERIFY #: git-gui.sh:2165 -#, tcl-format +#, fuzzy, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" -msgstr "" +msgstr "критическая ошибка: %s: нет такого файла или каталога" #: git-gui.sh:2198 msgid "Current Branch:" @@ -353,13 +362,17 @@ msgstr "Текущая ветвь:" msgid "Staged Changes (Will Commit)" msgstr "Подготовлено (будет сохранено)" +# TOVERIFY #: git-gui.sh:2239 +#, fuzzy msgid "Unstaged Changes" -msgstr "" +msgstr "Изменено" +# carbon copy #: git-gui.sh:2286 +#, fuzzy msgid "Stage Changed" -msgstr "" +msgstr "Stage Changed" #: git-gui.sh:2302 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" @@ -447,13 +460,24 @@ msgid "" "by %s:\n" "\n" msgstr "" +"Возможны ошибки в переменных окружения.\n" +"\n" +"Переменные окружения, которые возможно\n" +"будут проигнорированы командами Git,\n" +"запущенными из %s\n" +"\n" +# TOVERIFY #: git-gui.sh:2707 +#, fuzzy msgid "" "\n" "This is due to a known issue with the\n" "Tcl binary distributed by Cygwin." msgstr "" +"\n" +"Это известная проблема с Tcl,\n" +"распространяемым Cygwin." #: git-gui.sh:2712 #, tcl-format @@ -465,6 +489,12 @@ msgid "" "user.email settings into your personal\n" "~/.gitconfig file.\n" msgstr "" +"\n" +"\n" +"Хорошая замена для %s\n" +"сохраняет значения для user.name и\n" +"user.email в Ваш персональный\n" +"~/.gitconfig файл.\n" #: lib/about.tcl:25 msgid "git-gui - a graphical user interface for Git." @@ -487,21 +517,29 @@ msgstr "Копировать сохраненное состояние" msgid "Reading %s..." msgstr "Чтение %s..." +# carbon copy #: lib/blame.tcl:473 +#, fuzzy msgid "Loading copy/move tracking annotations..." -msgstr "" +msgstr "Loading copy/move tracking annotations..." +# TOVERIFY #: lib/blame.tcl:493 +#, fuzzy msgid "lines annotated" -msgstr "" +msgstr "строк прокоментировано" +# carbon copy #: lib/blame.tcl:674 +#, fuzzy msgid "Loading original location annotations..." -msgstr "" +msgstr "Loading original location annotations..." +# carbon copy #: lib/blame.tcl:677 +#, fuzzy msgid "Annotation complete." -msgstr "" +msgstr "Annotation complete." #: lib/blame.tcl:731 #, fuzzy @@ -510,7 +548,7 @@ msgstr "Загрузка %s..." #: lib/blame.tcl:787 msgid "Author:" -msgstr "" +msgstr "Автор:" #: lib/blame.tcl:791 #, fuzzy @@ -519,11 +557,13 @@ msgstr "Сохраненное состояние:" #: lib/blame.tcl:796 msgid "Original File:" -msgstr "" +msgstr "Исходный файл:" +# carbon copy #: lib/blame.tcl:910 +#, fuzzy msgid "Originally By:" -msgstr "" +msgstr "Originally By:" #: lib/blame.tcl:916 #, fuzzy @@ -532,7 +572,7 @@ msgstr "Файл:" #: lib/blame.tcl:921 msgid "Copied Or Moved Here By:" -msgstr "" +msgstr "Кто скопировал/переместил сюда:" #: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19 msgid "Checkout Branch" @@ -720,7 +760,7 @@ msgstr "Загрузка %s..." #: lib/browser.tcl:186 msgid "[Up To Parent]" -msgstr "" +msgstr "[На уровень выше]" #: lib/browser.tcl:266 lib/browser.tcl:272 msgid "Browse Branch Files" @@ -740,7 +780,7 @@ msgstr "Получение изменений из %s " #: lib/checkout_op.tcl:127 #, tcl-format msgid "fatal: Cannot resolve %s" -msgstr "" +msgstr "критическая ошибка: не могу распознать %s" #: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 msgid "Close" @@ -783,15 +823,13 @@ msgstr "Индекс заблокирован." msgid "" "Last scanned state does not match repository state.\n" "\n" -"Another Git program has modified this repository since the last scan. A " -"rescan must be performed before the current branch can be changed.\n" +"Another Git program has modified this repository since the last scan. A rescan must be performed before the current branch can be changed.\n" "\n" "The rescan will be automatically started now.\n" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git." -"Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git.Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" "\n" "Это будет сделано сейчас автоматически.\n" @@ -818,13 +856,11 @@ msgstr "Ветвь '%s' остается текущей." msgid "" "You are no longer on a local branch.\n" "\n" -"If you wanted to be on a branch, create one now starting from 'This Detached " -"Checkout'." +"If you wanted to be on a branch, create one now starting from 'This Detached Checkout'." msgstr "" "Вы находитесь не в локальной ветви.\n" "\n" -"Если вы хотите снова вернуться к какой-нибудь ветви, создайте ее сейчас, " -"начиная с 'Текущего отсоединенного состояния'." +"Если вы хотите снова вернуться к какой-нибудь ветви, создайте ее сейчас, начиная с 'Текущего отсоединенного состояния'." #: lib/checkout_op.tcl:446 #, fuzzy, tcl-format @@ -854,15 +890,13 @@ msgstr "Наглядно" msgid "" "Failed to set current branch.\n" "\n" -"This working directory is only partially switched. We successfully updated " -"your files, but failed to update an internal Git file.\n" +"This working directory is only partially switched. We successfully updated your files, but failed to update an internal Git file.\n" "\n" "This should not have occurred. %s will now close and give up." msgstr "" "Не удалось установить текущую ветвь.\n" "\n" -"Ваш рабочий каталог обновлен только частично. Были обновлены все файлы кроме " -"служебных файлов Git. \n" +"Ваш рабочий каталог обновлен только частично. Были обновлены все файлы кроме служебных файлов Git. \n" "\n" "Этого не должно было произойти. %s завершается." @@ -873,7 +907,7 @@ msgstr "Выделить все" #: lib/choose_font.tcl:53 msgid "Font Family" -msgstr "" +msgstr "Шрифт" #: lib/choose_font.tcl:73 #, fuzzy @@ -882,17 +916,20 @@ msgstr "Уменьшить размер шрифта" #: lib/choose_font.tcl:90 msgid "Font Example" -msgstr "" +msgstr "Пример текста" +# TOVERIFY: what's the Russian version of the font sample (see Windows Fonts). #: lib/choose_font.tcl:101 msgid "" "This is example text.\n" "If you like this text, it can be your font." msgstr "" +"Это пример текста.\n" +"Если Вам нравится этот текст, это может быть Ваш шрифт." #: lib/choose_repository.tcl:25 msgid "Git Gui" -msgstr "" +msgstr "Git Gui" #: lib/choose_repository.tcl:69 lib/choose_repository.tcl:204 #, fuzzy @@ -909,9 +946,11 @@ msgstr "Репозиторий назначения" msgid "Open Existing Repository" msgstr "Репозиторий назначения" +# TOVERIFY #: lib/choose_repository.tcl:91 +#, fuzzy msgid "Next >" -msgstr "" +msgstr "Дальше >" #: lib/choose_repository.tcl:152 #, fuzzy, tcl-format @@ -926,7 +965,7 @@ msgstr "Не удалось полностью сохранить настрой #: lib/choose_repository.tcl:209 lib/choose_repository.tcl:309 msgid "Directory:" -msgstr "" +msgstr "Каталог:" #: lib/choose_repository.tcl:238 lib/choose_repository.tcl:363 #: lib/choose_repository.tcl:834 @@ -951,23 +990,31 @@ msgstr "Закрыть" #: lib/choose_repository.tcl:299 msgid "URL:" -msgstr "" +msgstr "Ссылка:" +# TOVERIFY #: lib/choose_repository.tcl:319 +#, fuzzy msgid "Clone Type:" -msgstr "" +msgstr "Тип клона:" +# TOVERIFY #: lib/choose_repository.tcl:325 +#, fuzzy msgid "Standard (Fast, Semi-Redundant, Hardlinks)" -msgstr "" +msgstr "Стандартный (Быстрый, полуизбыточный, \"жесткие\" ссылки)" +# TOVERIFY #: lib/choose_repository.tcl:331 +#, fuzzy msgid "Full Copy (Slower, Redundant Backup)" -msgstr "" +msgstr "Полная копия (Медленный, избыточная резервная копия)" +# TOVERIFY #: lib/choose_repository.tcl:337 +#, fuzzy msgid "Shared (Fastest, Not Recommended, No Backup)" -msgstr "" +msgstr "Общий (Самый быстрый, не рекомендуется, без резервной копии)" #: lib/choose_repository.tcl:369 lib/choose_repository.tcl:418 #: lib/choose_repository.tcl:560 lib/choose_repository.tcl:630 @@ -976,44 +1023,57 @@ msgstr "" msgid "Not a Git repository: %s" msgstr "Не указан репозиторий" +# TOVERIFY #: lib/choose_repository.tcl:405 +#, fuzzy msgid "Standard only available for local repository." -msgstr "" +msgstr "Стандартный клон возможен только для локального репозитория." +# TOVERIFY #: lib/choose_repository.tcl:409 +#, fuzzy msgid "Shared only available for local repository." -msgstr "" +msgstr "Общий клон возможен только для локального репозитория." +# TOVERIFY #: lib/choose_repository.tcl:439 +#, fuzzy msgid "Failed to configure origin" -msgstr "" +msgstr "Не могу сконфигурировать искходник." #: lib/choose_repository.tcl:451 msgid "Counting objects" -msgstr "" +msgstr "Считаю объекты" +# carbon copy #: lib/choose_repository.tcl:452 +#, fuzzy msgid "buckets" -msgstr "" +msgstr "buckets" +# TOVERIFY #: lib/choose_repository.tcl:476 -#, tcl-format +#, fuzzy, tcl-format msgid "Unable to copy objects/info/alternates: %s" -msgstr "" +msgstr "Не могу скопировать объекты/инфо/альтернативы: %s" #: lib/choose_repository.tcl:512 #, fuzzy, tcl-format msgid "Nothing to clone from %s." msgstr "Получение изменений из %s " +# TOVERIFY #: lib/choose_repository.tcl:514 lib/choose_repository.tcl:728 #: lib/choose_repository.tcl:740 +#, fuzzy msgid "The 'master' branch has not been initialized." -msgstr "" +msgstr "Не инициализирована ветвь 'master'." +# TOVERIFY #: lib/choose_repository.tcl:527 +#, fuzzy msgid "Hardlinks are unavailable. Falling back to copying." -msgstr "" +msgstr "\"Жесткие ссылки\" не доступны. Буду использовать копирование." #: lib/choose_repository.tcl:539 #, fuzzy, tcl-format @@ -1027,55 +1087,64 @@ msgstr "Сжатие базы объектов" #: lib/choose_repository.tcl:571 msgid "KiB" -msgstr "" +msgstr "КБ" #: lib/choose_repository.tcl:595 #, tcl-format msgid "Unable to copy object: %s" -msgstr "" +msgstr "Не могу скопировать объект: %s" #: lib/choose_repository.tcl:605 msgid "Linking objects" -msgstr "" +msgstr "Связываю объекты" +# TOVERIFY #: lib/choose_repository.tcl:606 +#, fuzzy msgid "objects" -msgstr "" +msgstr "объектов" +# TOVERIFY #: lib/choose_repository.tcl:614 -#, tcl-format +#, fuzzy, tcl-format msgid "Unable to hardlink object: %s" -msgstr "" +msgstr "Не могу \"жестко связать\" объект: %s" +# TOVERIFY #: lib/choose_repository.tcl:669 +#, fuzzy msgid "Cannot fetch branches and objects. See console output for details." -msgstr "" +msgstr "Не могу получить ветви и объекты. Детали - на консоле." +# TOVERIFY #: lib/choose_repository.tcl:680 +#, fuzzy msgid "Cannot fetch tags. See console output for details." -msgstr "" +msgstr "Не могу получить таги. Детали - на консоле." +# TOVERIFY #: lib/choose_repository.tcl:704 +#, fuzzy msgid "Cannot determine HEAD. See console output for details." -msgstr "" +msgstr "Не могу определить главную ветвь. Детали - на консоле." #: lib/choose_repository.tcl:713 #, tcl-format msgid "Unable to cleanup %s" -msgstr "" +msgstr "Не могу почистить %s" #: lib/choose_repository.tcl:719 msgid "Clone failed." -msgstr "" +msgstr "Клонирование не удалось." #: lib/choose_repository.tcl:726 msgid "No default branch obtained." -msgstr "" +msgstr "Не возможно получить ветвь по умолчанию." #: lib/choose_repository.tcl:737 #, tcl-format msgid "Cannot resolve %s as a commit." -msgstr "" +msgstr "Не могу распознать %s как состояние." #: lib/choose_repository.tcl:749 #, fuzzy @@ -1085,15 +1154,15 @@ msgstr "Отсутствует рабочий каталог" #: lib/choose_repository.tcl:750 lib/index.tcl:15 lib/index.tcl:80 #: lib/index.tcl:149 msgid "files" -msgstr "" +msgstr "файлов" #: lib/choose_repository.tcl:779 msgid "Initial file checkout failed." -msgstr "" +msgstr "Первое получение файла не удалось." #: lib/choose_repository.tcl:795 msgid "Open" -msgstr "" +msgstr "Открыть" #: lib/choose_repository.tcl:805 #, fuzzy @@ -1140,36 +1209,31 @@ msgstr "Пустое выражения для определения верси #: lib/choose_rev.tcl:530 msgid "Updated" -msgstr "" +msgstr "Обновлено" #: lib/choose_rev.tcl:558 msgid "URL" -msgstr "" +msgstr "Ссылка" #: lib/commit.tcl:9 msgid "" "There is nothing to amend.\n" "\n" -"You are about to create the initial commit. There is no commit before this " -"to amend.\n" +"You are about to create the initial commit. There is no commit before this to amend.\n" msgstr "" "Отсутствует состояние для исправления.\n" "\n" -"Вы можете создать начальное сохраненное состояние. Других состояний для " -"исправления нет.\n" +"Вы можете создать начальное сохраненное состояние. Других состояний для исправления нет.\n" #: lib/commit.tcl:18 msgid "" "Cannot amend while merging.\n" "\n" -"You are currently in the middle of a merge that has not been fully " -"completed. You cannot amend the prior commit unless you first abort the " -"current merge activity.\n" +"You are currently in the middle of a merge that has not been fully completed. You cannot amend the prior commit unless you first abort the current merge activity.\n" msgstr "" "Невозможно исправить состояние во время объединения.\n" "\n" -"Текущее объединение не завершено. Невозможно исправить предыдущее " -"сохраненное состояние не прерывая текущее объединение.\n" +"Текущее объединение не завершено. Невозможно исправить предыдущее сохраненное состояние не прерывая текущее объединение.\n" #: lib/commit.tcl:49 msgid "Error loading commit data for amend:" @@ -1187,15 +1251,13 @@ msgstr "Неверная GIT_COMMITTER_IDENT:" msgid "" "Last scanned state does not match repository state.\n" "\n" -"Another Git program has modified this repository since the last scan. A " -"rescan must be performed before another commit can be created.\n" +"Another Git program has modified this repository since the last scan. A rescan must be performed before another commit can be created.\n" "\n" "The rescan will be automatically started now.\n" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git." -"Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git.Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" "\n" "Это будет сделано сейчас автоматически.\n" @@ -1204,13 +1266,11 @@ msgstr "" msgid "" "Unmerged files cannot be committed.\n" "\n" -"File %s has merge conflicts. You must resolve them and stage the file " -"before committing.\n" +"File %s has merge conflicts. You must resolve them and stage the file before committing.\n" msgstr "" "Нельзя сохранить необъединенные файлы.\n" "\n" -"Для файла %s возник конфликт объединения. Разрешите конфликт и добавьте к " -"подготовленным файлам перед сохранением.\n" +"Для файла %s возник конфликт объединения. Разрешите конфликт и добавьте к подготовленным файлам перед сохранением.\n" #: lib/commit.tcl:162 #, tcl-format @@ -1259,7 +1319,7 @@ msgstr "Программа write-tree завершилась с ошибкой:" #: lib/commit.tcl:275 #, tcl-format msgid "Commit %s appears to be corrupt" -msgstr "" +msgstr "Состояние %s выглядит поврежденным" #: lib/commit.tcl:279 msgid "" @@ -1282,7 +1342,7 @@ msgstr "Отуствуют измения для сохранения." #: lib/commit.tcl:303 #, tcl-format msgid "warning: Tcl does not support encoding '%s'." -msgstr "" +msgstr "предупреждение: Tcl не поддерживает кодировку '%s'." #: lib/commit.tcl:317 msgid "commit-tree failed:" @@ -1350,11 +1410,15 @@ msgstr "Проверка базы объектов при помощи fsck" msgid "" "This repository currently has approximately %i loose objects.\n" "\n" -"To maintain optimal performance it is strongly recommended that you compress " -"the database when more than %i loose objects exist.\n" +"To maintain optimal performance it is strongly recommended that you compress the database when more than %i loose objects exist.\n" "\n" "Compress the database now?" msgstr "" +"Этот репозиторий сейчас содержит примерно %i свободных объектов\n" +"\n" +"Для лучшей производительности рекомендуется сжать базу данных, когда есть более %i свободных объектов.\n" +"\n" +"Сжать базу данных сейчас?" #: lib/date.tcl:25 #, fuzzy, tcl-format @@ -1368,18 +1432,15 @@ msgid "" "\n" "%s has no changes.\n" "\n" -"The modification date of this file was updated by another application, but " -"the content within the file was not changed.\n" +"The modification date of this file was updated by another application, but the content within the file was not changed.\n" "\n" -"A rescan will be automatically started to find other files which may have " -"the same state." +"A rescan will be automatically started to find other files which may have the same state." msgstr "" "Изменений не обнаружено.\n" "\n" "в %s отутствуют изменения.\n" "\n" -"Дата изменения файла была обновлена другой программой, но содержимое файла " -"осталось прежним.\n" +"Дата изменения файла была обновлена другой программой, но содержимое файла осталось прежним.\n" "\n" "Сейчас будет запущено перечитывание репозитория, чтобы найти подобные файлы." @@ -1391,7 +1452,7 @@ msgstr "Загрузка %s..." #: lib/diff.tcl:114 lib/diff.tcl:184 #, tcl-format msgid "Unable to display %s" -msgstr "" +msgstr "Не могу показать %s" #: lib/diff.tcl:115 msgid "Error loading file:" @@ -1399,11 +1460,11 @@ msgstr "Ошибка загрузки файла:" #: lib/diff.tcl:122 msgid "Git Repository (subproject)" -msgstr "" +msgstr "Репозиторий Git (под-проект)" #: lib/diff.tcl:134 msgid "* Binary file (not showing content)." -msgstr "" +msgstr "* Двоичный файл (содержимое не показано)" #: lib/diff.tcl:185 msgid "Error loading diff:" @@ -1455,8 +1516,7 @@ msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Отменить изменения в %s?\n" "\n" -"Любые изменения, не подготовленные к сохранению, будут потеряны при данной " -"операции." +"Любые изменения, не подготовленные к сохранению, будут потеряны при данной операции." #: lib/index.tcl:351 msgid "Do Nothing" @@ -1470,22 +1530,19 @@ msgid "" msgstr "" "Невозможно выполнить объединение во время исправления.\n" "\n" -"Завершите исправление данного состояния перед выполнением операции " -"объединения.\n" +"Завершите исправление данного состояния перед выполнением операции объединения.\n" #: lib/merge.tcl:27 msgid "" "Last scanned state does not match repository state.\n" "\n" -"Another Git program has modified this repository since the last scan. A " -"rescan must be performed before a merge can be performed.\n" +"Another Git program has modified this repository since the last scan. A rescan must be performed before a merge can be performed.\n" "\n" "The rescan will be automatically started now.\n" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git." -"Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git.Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" "\n" "Это будет сделано сейчас автоматически.\n" @@ -1496,14 +1553,12 @@ msgid "" "\n" "File %s has merge conflicts.\n" "\n" -"You must resolve them, stage the file, and commit to complete the current " -"merge. Only then can you begin another merge.\n" +"You must resolve them, stage the file, and commit to complete the current merge. Only then can you begin another merge.\n" msgstr "" "Предыдущее объединение не завершено из-за конфликта.\n" "\n" "Для файла %s возник конфликт объединения.\n" -"Разрешите конфликт, подготовьте файл и сохраните. Только после этого можно " -"начать следующее объединение.\n" +"Разрешите конфликт, подготовьте файл и сохраните. Только после этого можно начать следующее объединение.\n" #: lib/merge.tcl:54 #, tcl-format @@ -1512,20 +1567,18 @@ msgid "" "\n" "File %s is modified.\n" "\n" -"You should complete the current commit before starting a merge. Doing so " -"will help you abort a failed merge, should the need arise.\n" +"You should complete the current commit before starting a merge. Doing so will help you abort a failed merge, should the need arise.\n" msgstr "" "Изменения не сохранены.\n" "\n" "Файл %s изменен.\n" "\n" -"Подготовьте и сохраните измения перед началом объединения. В случае " -"необходимости это позволит прервать операцию объединения.\n" +"Подготовьте и сохраните измения перед началом объединения. В случае необходимости это позволит прервать операцию объединения.\n" #: lib/merge.tcl:106 #, tcl-format msgid "%s of %s" -msgstr "" +msgstr "%s из %s" #: lib/merge.tcl:119 #, tcl-format @@ -1589,11 +1642,11 @@ msgstr "" #: lib/merge.tcl:239 msgid "Aborting" -msgstr "" +msgstr "Прерываю" #: lib/merge.tcl:266 msgid "Abort failed." -msgstr "" +msgstr "Прервать не удалось." #: lib/merge.tcl:268 msgid "Abort completed. Ready." @@ -1664,15 +1717,17 @@ msgstr "Шрифт интерфейса" #: lib/option.tcl:180 #, tcl-format msgid "Choose %s" -msgstr "" +msgstr "Выберите %s" +# carbon copy #: lib/option.tcl:186 +#, fuzzy msgid "pt." -msgstr "" +msgstr "pt." #: lib/option.tcl:200 msgid "Preferences" -msgstr "" +msgstr "Настройки" #: lib/option.tcl:235 msgid "Failed to completely save options:" @@ -1737,12 +1792,11 @@ msgid "" " - %s" msgstr "Следующие ветви объединены с %s не полностью:" +# TOVERIFY #: lib/remote_branch_delete.tcl:189 -#, tcl-format -msgid "" -"One or more of the merge tests failed because you have not fetched the " -"necessary commits. Try fetching from %s first." -msgstr "" +#, fuzzy, tcl-format +msgid "One or more of the merge tests failed because you have not fetched the necessary commits. Try fetching from %s first." +msgstr "Один или несколько тестов на объединение не прошли, потому что Вы не получили необходимые состояния. Попробуйте сначала получить из %s." #: lib/remote_branch_delete.tcl:207 msgid "Please select one or more branches to delete." @@ -1795,10 +1849,11 @@ msgstr "Получить" msgid "Fetching new changes from %s" msgstr "Получение изменений из %s " +# carbon copy #: lib/transport.tcl:18 -#, tcl-format +#, fuzzy, tcl-format msgid "remote prune %s" -msgstr "" +msgstr "remote prune %s" #: lib/transport.tcl:19 #, tcl-format @@ -1808,7 +1863,7 @@ msgstr "Чистка ветвей слежения, удаленных из %s" #: lib/transport.tcl:25 lib/transport.tcl:71 #, tcl-format msgid "push %s" -msgstr "" +msgstr "отправить %s" #: lib/transport.tcl:26 #, tcl-format @@ -1838,7 +1893,7 @@ msgstr "Настройки передачи" #: lib/transport.tcl:160 msgid "Force overwrite existing branch (may discard changes)" -msgstr "" +msgstr "Намеренно переписать существующую ветвь (возможна потеря изменений)" #: lib/transport.tcl:164 msgid "Use thin pack (for slow network connections)" @@ -1850,19 +1905,14 @@ msgstr "Включить метки" #~ msgid "Cannot find the git directory:" #~ msgstr "Каталог Git не найден:" - #~ msgid "Add To Commit" #~ msgstr "Подготовить к сохранению" - #~ msgid "Add Existing To Commit" #~ msgstr "Подготовить имеющиеся файлы к сохранению" - #~ msgid "Unstaged Changes (Will Not Be Committed)" #~ msgstr "Изменено (не будет сохранено)" - #~ msgid "Add Existing" #~ msgstr "Добавить имеющиеся файлы" - #~ msgid "" #~ "Abort commit?\n" #~ "\n" @@ -1876,9 +1926,8 @@ msgstr "Включить метки" #~ "Вызванная операция приведет к потере *ВСЕХ* несохраненных изменений.\n" #~ "\n" #~ "Продолжить?" - #~ msgid "Aborting... please wait..." #~ msgstr "Прерывание выполнения... Пожалуйста, ждите..." - #~ msgid "Push to %s..." #~ msgstr "Отправка в %s..." + From dec2b4aaa87ab2b33d1ad8294872af1f1397ec7e Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Mon, 22 Oct 2007 22:28:48 +0200 Subject: [PATCH 005/107] More updates and corrections to the russian translation of git-gui In particular many screw-ups after po regeneration were fixed. Signed-off-by: Alex Riesen Signed-off-by: Shawn O. Pearce --- po/ru.po | 362 +++++++++++++++++++------------------------------------ 1 file changed, 127 insertions(+), 235 deletions(-) diff --git a/po/ru.po b/po/ru.po index ed5b67a95c..b8e9447942 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-10-10 04:04-0400\n" -"PO-Revision-Date: 2007-10-20 14:29-0500\n" -"Last-Translator: Kirill \n" +"PO-Revision-Date: 2007-10-22 22:30-0200\n" +"Last-Translator: Alex Riesen \n" "Language-Team: Russian Translation \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,9 +21,9 @@ msgid "git-gui: fatal error" msgstr "git-gui: критическая ошибка" #: git-gui.sh:595 -#, fuzzy, tcl-format +#, tcl-format msgid "Invalid font specified in %s:" -msgstr "В оболочке установлен неверный шрифт.%s:" +msgstr "В %s установлен неверный шрифт:" #: git-gui.sh:620 msgid "Main Font" @@ -31,7 +31,7 @@ msgstr "Шрифт интерфейса" #: git-gui.sh:621 msgid "Diff/Console Font" -msgstr "Шрифт в консоли diff" +msgstr "Шрифт консоли и изменений (diff)" #: git-gui.sh:635 msgid "Cannot find git in PATH." @@ -64,9 +64,8 @@ msgid "Git directory not found:" msgstr "Каталог Git не найден:" #: git-gui.sh:860 -#, fuzzy msgid "Cannot move to top of working directory:" -msgstr "Каталог.git испорчен: " +msgstr "Невозможно перейти к корню рабочего каталога репозитория: " #: git-gui.sh:867 msgid "Cannot use funny .git directory:" @@ -78,7 +77,7 @@ msgstr "Отсутствует рабочий каталог" #: git-gui.sh:1019 msgid "Refreshing file status..." -msgstr "Обновление состояния файлов проекта..." +msgstr "Обновление информации о состоянии файлов..." #: git-gui.sh:1084 msgid "Scanning for modified files ..." @@ -94,7 +93,7 @@ msgstr "Не изменено" #: git-gui.sh:1527 msgid "Modified, not staged" -msgstr "Изменено, но не включено" +msgstr "Изменено, не подготовлено" #: git-gui.sh:1528 git-gui.sh:1533 msgid "Staged for commit" @@ -105,7 +104,6 @@ msgid "Portions staged for commit" msgstr "Части, подготовленные для сохранения" #: git-gui.sh:1530 git-gui.sh:1535 -#, fuzzy msgid "Staged for commit, missing" msgstr "Подготовлено для сохранения, отсутствует" @@ -123,7 +121,7 @@ msgstr "Подготовлено для удаления" #: git-gui.sh:1539 msgid "Staged for removal, still present" -msgstr "Подготовлено для удаления, но еще не удалено" +msgstr "Подготовлено для удаления, еще не удалено" #: git-gui.sh:1541 git-gui.sh:1542 git-gui.sh:1543 git-gui.sh:1544 msgid "Requires merge resolution" @@ -157,7 +155,6 @@ msgid "Branch" msgstr "Ветвь" #: git-gui.sh:1794 lib/choose_rev.tcl:547 -#, fuzzy msgid "Commit@@noun" msgstr "Состояние" @@ -166,18 +163,16 @@ msgid "Merge" msgstr "Объединить" #: git-gui.sh:1798 lib/choose_rev.tcl:556 -#, fuzzy msgid "Remote" -msgstr "внешний:" +msgstr "Внешние репозитории" #: git-gui.sh:1807 msgid "Browse Current Branch's Files" msgstr "Просмотреть файлы текущей ветви" #: git-gui.sh:1811 -#, fuzzy msgid "Browse Branch Files..." -msgstr "Показать файлы ветви" +msgstr "Показать файлы ветви..." #: git-gui.sh:1816 msgid "Visualize Current Branch's History" @@ -188,9 +183,9 @@ msgid "Visualize All Branch History" msgstr "История всех ветвей наглядно" #: git-gui.sh:1827 -#, fuzzy, tcl-format +#, tcl-format msgid "Browse %s's Files" -msgstr "Показать файлы ветви" +msgstr "Показать файлы ветви %s" #: git-gui.sh:1829 #, tcl-format @@ -281,12 +276,10 @@ msgid "Rescan" msgstr "Перечитать" #: git-gui.sh:1953 -#, fuzzy msgid "Stage To Commit" msgstr "Подготовить для сохранения" #: git-gui.sh:1958 -#, fuzzy msgid "Stage Changed Files To Commit" msgstr "Подготовить измененные файлы для сохранения" @@ -303,7 +296,6 @@ msgid "Sign Off" msgstr "Подписать" #: git-gui.sh:1980 git-gui.sh:2296 -#, fuzzy msgid "Commit@@verb" msgstr "Сохранить" @@ -319,11 +311,10 @@ msgstr "Прервать объединение..." msgid "Push..." msgstr "Отправить..." -# carbon copy #: git-gui.sh:2019 lib/choose_repository.tcl:41 #, fuzzy msgid "Apple" -msgstr "Apple" +msgstr "" #: git-gui.sh:2022 git-gui.sh:2044 lib/about.tcl:13 #: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 @@ -347,9 +338,8 @@ msgstr "Помощь" msgid "Online Documentation" msgstr "Документация в интернете" -# TOVERIFY #: git-gui.sh:2165 -#, fuzzy, tcl-format +#, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "критическая ошибка: %s: нет такого файла или каталога" @@ -358,43 +348,34 @@ msgid "Current Branch:" msgstr "Текущая ветвь:" #: git-gui.sh:2219 -#, fuzzy msgid "Staged Changes (Will Commit)" msgstr "Подготовлено (будет сохранено)" -# TOVERIFY #: git-gui.sh:2239 -#, fuzzy msgid "Unstaged Changes" -msgstr "Изменено" +msgstr "Изменено (не будет сохранено)" -# carbon copy #: git-gui.sh:2286 -#, fuzzy msgid "Stage Changed" -msgstr "Stage Changed" +msgstr "Подготовить все" #: git-gui.sh:2302 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Отправить" #: git-gui.sh:2332 -#, fuzzy msgid "Initial Commit Message:" -msgstr "Первоначальный комментарий к состоянию:" +msgstr "Комментарий к первому состоянию:" #: git-gui.sh:2333 -#, fuzzy msgid "Amended Commit Message:" -msgstr "Исправленный комментарий к состоянию:" +msgstr "Комментарий к исправленному состоянию:" #: git-gui.sh:2334 -#, fuzzy msgid "Amended Initial Commit Message:" -msgstr "Первоначальный комментарий к исправленному состоянию:" +msgstr "Комментарий к исправленному первоначальному состоянию:" #: git-gui.sh:2335 -#, fuzzy msgid "Amended Merge Commit Message:" msgstr "Комментарий к исправленному объединению:" @@ -467,9 +448,7 @@ msgstr "" "запущенными из %s\n" "\n" -# TOVERIFY #: git-gui.sh:2707 -#, fuzzy msgid "" "\n" "This is due to a known issue with the\n" @@ -491,10 +470,10 @@ msgid "" msgstr "" "\n" "\n" -"Хорошая замена для %s\n" -"сохраняет значения для user.name и\n" -"user.email в Ваш персональный\n" -"~/.gitconfig файл.\n" +"Вместо использования %s можно\n" +"сохранить значения user.name и\n" +"user.email в Вашем персональном\n" +"файле ~/.gitconfig.\n" #: lib/about.tcl:25 msgid "git-gui - a graphical user interface for Git." @@ -510,69 +489,56 @@ msgstr "Сохраненное состояние:" #: lib/blame.tcl:249 msgid "Copy Commit" -msgstr "Копировать сохраненное состояние" +msgstr "Скопировать SHA-1" #: lib/blame.tcl:369 #, tcl-format msgid "Reading %s..." msgstr "Чтение %s..." -# carbon copy #: lib/blame.tcl:473 -#, fuzzy msgid "Loading copy/move tracking annotations..." -msgstr "Loading copy/move tracking annotations..." +msgstr "Загрузка аннотации копирований/переименований..." -# TOVERIFY #: lib/blame.tcl:493 -#, fuzzy msgid "lines annotated" -msgstr "строк прокоментировано" +msgstr "строк прокомментировано" -# carbon copy #: lib/blame.tcl:674 -#, fuzzy msgid "Loading original location annotations..." -msgstr "Loading original location annotations..." +msgstr "Загрузка аннотаций первоначального положения объекта..." -# carbon copy #: lib/blame.tcl:677 -#, fuzzy msgid "Annotation complete." -msgstr "Annotation complete." +msgstr "Аннотация завершена." #: lib/blame.tcl:731 -#, fuzzy msgid "Loading annotation..." -msgstr "Загрузка %s..." +msgstr "Загрузка аннотации..." #: lib/blame.tcl:787 msgid "Author:" msgstr "Автор:" #: lib/blame.tcl:791 -#, fuzzy msgid "Committer:" -msgstr "Сохраненное состояние:" +msgstr "Сохранил:" #: lib/blame.tcl:796 msgid "Original File:" msgstr "Исходный файл:" -# carbon copy #: lib/blame.tcl:910 -#, fuzzy msgid "Originally By:" -msgstr "Originally By:" +msgstr "Источник:" #: lib/blame.tcl:916 -#, fuzzy msgid "In File:" msgstr "Файл:" #: lib/blame.tcl:921 msgid "Copied Or Moved Here By:" -msgstr "Кто скопировал/переместил сюда:" +msgstr "Скопировано/перемещено в:" #: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19 msgid "Checkout Branch" @@ -702,7 +668,7 @@ msgid "" "\n" " Delete the selected branches?" msgstr "" -"Восстановить удаленную ветвь сложно. \n" +"Восстанавливать удаленные ветви сложно. \n" "\n" " Удалить выбранные ветви?" @@ -773,14 +739,14 @@ msgid "Browse" msgstr "Показать" #: lib/checkout_op.tcl:79 -#, fuzzy, tcl-format +#, tcl-format msgid "Fetching %s from %s" -msgstr "Получение изменений из %s " +msgstr "Получение %s из %s " #: lib/checkout_op.tcl:127 #, tcl-format msgid "fatal: Cannot resolve %s" -msgstr "критическая ошибка: не могу распознать %s" +msgstr "критическая ошибка: невозможно разрешить %s" #: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 msgid "Close" @@ -807,7 +773,7 @@ msgstr "" #: lib/checkout_op.tcl:220 #, tcl-format msgid "Merge strategy '%s' not supported." -msgstr "Операция объединения '%s' не поддерживается." +msgstr "Стратегия объединения '%s' не поддерживается." #: lib/checkout_op.tcl:239 #, tcl-format @@ -815,9 +781,8 @@ msgid "Failed to update '%s'." msgstr "Не удалось обновить '%s'." #: lib/checkout_op.tcl:251 -#, fuzzy msgid "Staging area (index) is already locked." -msgstr "Индекс заблокирован." +msgstr "Рабочая область заблокирована другим процессом." #: lib/checkout_op.tcl:266 msgid "" @@ -829,14 +794,15 @@ msgid "" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git.Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git. " +"Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь.\n" "\n" "Это будет сделано сейчас автоматически.\n" #: lib/checkout_op.tcl:322 -#, fuzzy, tcl-format +#, tcl-format msgid "Updating working directory to '%s'..." -msgstr "Отсутствует рабочий каталог" +msgstr "Обновление рабочего каталога из '%s'..." #: lib/checkout_op.tcl:353 #, tcl-format @@ -863,9 +829,9 @@ msgstr "" "Если вы хотите снова вернуться к какой-нибудь ветви, создайте ее сейчас, начиная с 'Текущего отсоединенного состояния'." #: lib/checkout_op.tcl:446 -#, fuzzy, tcl-format +#, tcl-format msgid "Checked out '%s'." -msgstr "Перейти..." +msgstr "Ветвь '%s' сделана текущей." #: lib/checkout_op.tcl:478 #, tcl-format @@ -901,7 +867,6 @@ msgstr "" "Этого не должно было произойти. %s завершается." #: lib/choose_font.tcl:39 -#, fuzzy msgid "Select" msgstr "Выделить все" @@ -910,15 +875,13 @@ msgid "Font Family" msgstr "Шрифт" #: lib/choose_font.tcl:73 -#, fuzzy msgid "Font Size" -msgstr "Уменьшить размер шрифта" +msgstr "Размер шрифта" #: lib/choose_font.tcl:90 msgid "Font Example" msgstr "Пример текста" -# TOVERIFY: what's the Russian version of the font sample (see Windows Fonts). #: lib/choose_font.tcl:101 msgid "" "This is example text.\n" @@ -929,39 +892,34 @@ msgstr "" #: lib/choose_repository.tcl:25 msgid "Git Gui" -msgstr "Git Gui" +msgstr "" #: lib/choose_repository.tcl:69 lib/choose_repository.tcl:204 -#, fuzzy msgid "Create New Repository" -msgstr "Из репозитория" +msgstr "Создать новый репозиторий" #: lib/choose_repository.tcl:74 lib/choose_repository.tcl:291 -#, fuzzy msgid "Clone Existing Repository" -msgstr "Репозиторий назначения" +msgstr "Склонировать существующий репозиторий" #: lib/choose_repository.tcl:79 lib/choose_repository.tcl:800 -#, fuzzy msgid "Open Existing Repository" -msgstr "Репозиторий назначения" +msgstr "Выбрать существующий репозиторий" -# TOVERIFY #: lib/choose_repository.tcl:91 -#, fuzzy msgid "Next >" msgstr "Дальше >" #: lib/choose_repository.tcl:152 -#, fuzzy, tcl-format +#, tcl-format msgid "Location %s already exists." -msgstr "Ветвь '%s' уже существует." +msgstr "Путь '%s' уже существует." #: lib/choose_repository.tcl:158 lib/choose_repository.tcl:165 #: lib/choose_repository.tcl:172 -#, fuzzy, tcl-format +#, tcl-format msgid "Failed to create repository %s:" -msgstr "Не удалось полностью сохранить настройки:" +msgstr "Не удалось создать репозиторий %s:" #: lib/choose_repository.tcl:209 lib/choose_repository.tcl:309 msgid "Directory:" @@ -969,121 +927,98 @@ msgstr "Каталог:" #: lib/choose_repository.tcl:238 lib/choose_repository.tcl:363 #: lib/choose_repository.tcl:834 -#, fuzzy msgid "Git Repository" msgstr "Репозиторий" #: lib/choose_repository.tcl:253 lib/choose_repository.tcl:260 -#, fuzzy, tcl-format +#, tcl-format msgid "Directory %s already exists." -msgstr "Ветвь '%s' уже существует." +msgstr "Каталог '%s' уже существует." #: lib/choose_repository.tcl:265 -#, fuzzy, tcl-format +#, tcl-format msgid "File %s already exists." -msgstr "Ветвь '%s' уже существует." +msgstr "Файл '%s' уже существует." #: lib/choose_repository.tcl:286 -#, fuzzy msgid "Clone" -msgstr "Закрыть" +msgstr "Склонировать" #: lib/choose_repository.tcl:299 msgid "URL:" msgstr "Ссылка:" -# TOVERIFY #: lib/choose_repository.tcl:319 -#, fuzzy msgid "Clone Type:" msgstr "Тип клона:" -# TOVERIFY #: lib/choose_repository.tcl:325 -#, fuzzy msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Стандартный (Быстрый, полуизбыточный, \"жесткие\" ссылки)" -# TOVERIFY #: lib/choose_repository.tcl:331 -#, fuzzy msgid "Full Copy (Slower, Redundant Backup)" -msgstr "Полная копия (Медленный, избыточная резервная копия)" +msgstr "Полная копия (Медленный, создает резервную копию)" -# TOVERIFY #: lib/choose_repository.tcl:337 -#, fuzzy msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Общий (Самый быстрый, не рекомендуется, без резервной копии)" #: lib/choose_repository.tcl:369 lib/choose_repository.tcl:418 #: lib/choose_repository.tcl:560 lib/choose_repository.tcl:630 #: lib/choose_repository.tcl:840 lib/choose_repository.tcl:848 -#, fuzzy, tcl-format +#, tcl-format msgid "Not a Git repository: %s" -msgstr "Не указан репозиторий" +msgstr "Каталог не является репозиторием: %s" -# TOVERIFY #: lib/choose_repository.tcl:405 -#, fuzzy msgid "Standard only available for local repository." msgstr "Стандартный клон возможен только для локального репозитория." -# TOVERIFY #: lib/choose_repository.tcl:409 -#, fuzzy msgid "Shared only available for local repository." msgstr "Общий клон возможен только для локального репозитория." -# TOVERIFY #: lib/choose_repository.tcl:439 -#, fuzzy msgid "Failed to configure origin" -msgstr "Не могу сконфигурировать искходник." +msgstr "Не могу сконфигурировать исходный репозиторий." #: lib/choose_repository.tcl:451 msgid "Counting objects" msgstr "Считаю объекты" -# carbon copy #: lib/choose_repository.tcl:452 #, fuzzy msgid "buckets" -msgstr "buckets" +msgstr "" -# TOVERIFY #: lib/choose_repository.tcl:476 -#, fuzzy, tcl-format +#, tcl-format msgid "Unable to copy objects/info/alternates: %s" -msgstr "Не могу скопировать объекты/инфо/альтернативы: %s" +msgstr "Не могу скопировать objects/info/alternates: %s" #: lib/choose_repository.tcl:512 -#, fuzzy, tcl-format +#, tcl-format msgid "Nothing to clone from %s." -msgstr "Получение изменений из %s " +msgstr "Нечего клонировать с %s." -# TOVERIFY #: lib/choose_repository.tcl:514 lib/choose_repository.tcl:728 #: lib/choose_repository.tcl:740 -#, fuzzy msgid "The 'master' branch has not been initialized." msgstr "Не инициализирована ветвь 'master'." -# TOVERIFY #: lib/choose_repository.tcl:527 -#, fuzzy msgid "Hardlinks are unavailable. Falling back to copying." msgstr "\"Жесткие ссылки\" не доступны. Буду использовать копирование." #: lib/choose_repository.tcl:539 -#, fuzzy, tcl-format +#, tcl-format msgid "Cloning from %s" -msgstr "Получение изменений из %s " +msgstr "Клонирование %s" #: lib/choose_repository.tcl:570 -#, fuzzy msgid "Copying objects" -msgstr "Сжатие базы объектов" +msgstr "Копирование objects" #: lib/choose_repository.tcl:571 msgid "KiB" @@ -1096,42 +1031,33 @@ msgstr "Не могу скопировать объект: %s" #: lib/choose_repository.tcl:605 msgid "Linking objects" -msgstr "Связываю объекты" +msgstr "Создание ссылок на objects" -# TOVERIFY #: lib/choose_repository.tcl:606 -#, fuzzy msgid "objects" -msgstr "объектов" +msgstr "объекты" -# TOVERIFY #: lib/choose_repository.tcl:614 -#, fuzzy, tcl-format +#, tcl-format msgid "Unable to hardlink object: %s" msgstr "Не могу \"жестко связать\" объект: %s" -# TOVERIFY #: lib/choose_repository.tcl:669 -#, fuzzy msgid "Cannot fetch branches and objects. See console output for details." -msgstr "Не могу получить ветви и объекты. Детали - на консоле." +msgstr "Не могу получить ветви и объекты. Дополнительная информация на консоли." -# TOVERIFY #: lib/choose_repository.tcl:680 -#, fuzzy msgid "Cannot fetch tags. See console output for details." -msgstr "Не могу получить таги. Детали - на консоле." +msgstr "Не могу получить метки. Дополнительная информация на консоли." -# TOVERIFY #: lib/choose_repository.tcl:704 -#, fuzzy msgid "Cannot determine HEAD. See console output for details." -msgstr "Не могу определить главную ветвь. Детали - на консоле." +msgstr "Не могу определить HEAD. Дополнительная информация на консоли." #: lib/choose_repository.tcl:713 #, tcl-format msgid "Unable to cleanup %s" -msgstr "Не могу почистить %s" +msgstr "Не могу очистить %s" #: lib/choose_repository.tcl:719 msgid "Clone failed." @@ -1139,7 +1065,7 @@ msgstr "Клонирование не удалось." #: lib/choose_repository.tcl:726 msgid "No default branch obtained." -msgstr "Не возможно получить ветвь по умолчанию." +msgstr "Не было получено ветви по умолчанию." #: lib/choose_repository.tcl:737 #, tcl-format @@ -1147,9 +1073,8 @@ msgid "Cannot resolve %s as a commit." msgstr "Не могу распознать %s как состояние." #: lib/choose_repository.tcl:749 -#, fuzzy msgid "Creating working directory" -msgstr "Отсутствует рабочий каталог" +msgstr "Создаю рабочий каталог" #: lib/choose_repository.tcl:750 lib/index.tcl:15 lib/index.tcl:80 #: lib/index.tcl:149 @@ -1158,21 +1083,20 @@ msgstr "файлов" #: lib/choose_repository.tcl:779 msgid "Initial file checkout failed." -msgstr "Первое получение файла не удалось." +msgstr "Не удалось получить начальное состояние файлов репозитория." #: lib/choose_repository.tcl:795 msgid "Open" msgstr "Открыть" #: lib/choose_repository.tcl:805 -#, fuzzy msgid "Repository:" -msgstr "Репозиторий" +msgstr "Репозиторий:" #: lib/choose_repository.tcl:854 -#, fuzzy, tcl-format +#, tcl-format msgid "Failed to open repository %s:" -msgstr "Не удалось полностью сохранить настройки:" +msgstr "Не удалось открыть репозиторий %s:" #: lib/choose_rev.tcl:53 msgid "This Detached Checkout" @@ -1205,7 +1129,7 @@ msgstr "Версия не указана." #: lib/choose_rev.tcl:346 msgid "Revision expression is empty." -msgstr "Пустое выражения для определения версии." +msgstr "Пустое выражение для определения версии." #: lib/choose_rev.tcl:530 msgid "Updated" @@ -1223,7 +1147,7 @@ msgid "" msgstr "" "Отсутствует состояние для исправления.\n" "\n" -"Вы можете создать начальное сохраненное состояние. Других состояний для исправления нет.\n" +"Вы создаете первое состояние в репозитории, здесь еще нечего исправлять.\n" #: lib/commit.tcl:18 msgid "" @@ -1257,12 +1181,12 @@ msgid "" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git.Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git. Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" "\n" "Это будет сделано сейчас автоматически.\n" #: lib/commit.tcl:154 -#, fuzzy, tcl-format +#, tcl-format msgid "" "Unmerged files cannot be committed.\n" "\n" @@ -1284,7 +1208,6 @@ msgstr "" "Файл %s не может быть сохранен данной программой.\n" #: lib/commit.tcl:170 -#, fuzzy msgid "" "No changes to commit.\n" "\n" @@ -1416,14 +1339,14 @@ msgid "" msgstr "" "Этот репозиторий сейчас содержит примерно %i свободных объектов\n" "\n" -"Для лучшей производительности рекомендуется сжать базу данных, когда есть более %i свободных объектов.\n" +"Для лучшей производительности рекомендуется сжать базу данных, когда есть более %i несвязанных объектов.\n" "\n" "Сжать базу данных сейчас?" #: lib/date.tcl:25 -#, fuzzy, tcl-format +#, tcl-format msgid "Invalid date from Git: %s" -msgstr "Неверная версия: %s" +msgstr "Неправильная дата в репозитории: %s" #: lib/diff.tcl:42 #, tcl-format @@ -1445,9 +1368,9 @@ msgstr "" "Сейчас будет запущено перечитывание репозитория, чтобы найти подобные файлы." #: lib/diff.tcl:81 -#, fuzzy, tcl-format +#, tcl-format msgid "Loading diff of %s..." -msgstr "Загрузка %s..." +msgstr "Загрузка изменений в %s..." #: lib/diff.tcl:114 lib/diff.tcl:184 #, tcl-format @@ -1460,7 +1383,7 @@ msgstr "Ошибка загрузки файла:" #: lib/diff.tcl:122 msgid "Git Repository (subproject)" -msgstr "Репозиторий Git (под-проект)" +msgstr "Репозиторий Git (подпроект)" #: lib/diff.tcl:134 msgid "* Binary file (not showing content)." @@ -1472,11 +1395,11 @@ msgstr "Ошибка загрузки diff:" #: lib/diff.tcl:302 msgid "Failed to unstage selected hunk." -msgstr "Не удалось исключить выбранную часть" +msgstr "Не удалось исключить выбранную часть." #: lib/diff.tcl:309 msgid "Failed to stage selected hunk." -msgstr "Не удалось подготовить к сохранению выбранную часть" +msgstr "Не удалось подготовить к сохранению выбранную часть." #: lib/error.tcl:12 lib/error.tcl:102 msgid "error" @@ -1491,19 +1414,19 @@ msgid "You must correct the above errors before committing." msgstr "Прежде чем сохранить, исправьте вышеуказанные ошибки." #: lib/index.tcl:241 -#, fuzzy, tcl-format +#, tcl-format msgid "Unstaging %s from commit" -msgstr "Убрать из подготовленного" +msgstr "Удаление %s из подготовленного" #: lib/index.tcl:285 -#, fuzzy, tcl-format +#, tcl-format msgid "Adding %s" -msgstr "Чтение %s..." +msgstr "Добавление %s..." #: lib/index.tcl:340 -#, fuzzy, tcl-format +#, tcl-format msgid "Revert changes in file %s?" -msgstr "Отменить изменения" +msgstr "Отменить изменения в файле %s?" #: lib/index.tcl:342 #, tcl-format @@ -1511,11 +1434,8 @@ msgid "Revert changes in these %i files?" msgstr "Отменить изменения в %i файле(-ах)?" #: lib/index.tcl:348 -#, fuzzy msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" -"Отменить изменения в %s?\n" -"\n" "Любые изменения, не подготовленные к сохранению, будут потеряны при данной операции." #: lib/index.tcl:351 @@ -1542,12 +1462,12 @@ msgid "" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git.Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git. Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь.\n" "\n" "Это будет сделано сейчас автоматически.\n" #: lib/merge.tcl:44 -#, fuzzy, tcl-format +#, tcl-format msgid "" "You are in the middle of a conflicted merge.\n" "\n" @@ -1599,9 +1519,8 @@ msgid "Merge Into %s" msgstr "Объединить с %s" #: lib/merge.tcl:177 -#, fuzzy msgid "Revision To Merge" -msgstr "Версия" +msgstr "Версия для объединения" #: lib/merge.tcl:212 msgid "" @@ -1622,12 +1541,12 @@ msgid "" "Continue with aborting the current merge?" msgstr "" "Прервать объединение?\n" +"\n" "Прерывание объединения приведет к потере *ВСЕХ* несохраненных изменений.\n" "\n" "Продолжить?" #: lib/merge.tcl:228 -#, fuzzy msgid "" "Reset changes?\n" "\n" @@ -1636,6 +1555,7 @@ msgid "" "Continue with resetting the current changes?" msgstr "" "Прервать объединение?\n" +"\n" "Прерывание объединения приведет к потере *ВСЕХ* несохраненных изменений.\n" "\n" "Продолжить?" @@ -1663,7 +1583,7 @@ msgstr "Сохранить" #: lib/option.tcl:96 #, tcl-format msgid "%s Repository" -msgstr "для репозитория %s " +msgstr "для репозитория %s" #: lib/option.tcl:97 msgid "Global (All Repositories)" @@ -1710,7 +1630,6 @@ msgid "New Branch Name Template" msgstr "Шаблон для имени новой ветви" #: lib/option.tcl:176 -#, fuzzy msgid "Change Font" msgstr "Шрифт интерфейса" @@ -1723,7 +1642,7 @@ msgstr "Выберите %s" #: lib/option.tcl:186 #, fuzzy msgid "pt." -msgstr "pt." +msgstr "" #: lib/option.tcl:200 msgid "Preferences" @@ -1734,17 +1653,14 @@ msgid "Failed to completely save options:" msgstr "Не удалось полностью сохранить настройки:" #: lib/remote.tcl:165 -#, fuzzy msgid "Prune from" -msgstr "Чистка %s... " +msgstr "Чистка" #: lib/remote.tcl:170 -#, fuzzy msgid "Fetch from" -msgstr "Чистка %s... " +msgstr "Получение из" #: lib/remote.tcl:213 -#, fuzzy msgid "Push to" msgstr "Отправить" @@ -1785,18 +1701,22 @@ msgid "A branch is required for 'Merged Into'." msgstr "Для опции 'Объединено с' требуется указать ветвь." #: lib/remote_branch_delete.tcl:184 -#, fuzzy, tcl-format +#, tcl-format msgid "" "The following branches are not completely merged into %s:\n" "\n" " - %s" -msgstr "Следующие ветви объединены с %s не полностью:" +msgstr "" +"Следующие ветви объединены с %s не полностью:" +"\n" +" - %s" -# TOVERIFY #: lib/remote_branch_delete.tcl:189 -#, fuzzy, tcl-format +#, tcl-format msgid "One or more of the merge tests failed because you have not fetched the necessary commits. Try fetching from %s first." -msgstr "Один или несколько тестов на объединение не прошли, потому что Вы не получили необходимые состояния. Попробуйте сначала получить из %s." +msgstr "" +"Один или несколько тестов на объединение не прошли, потому что " +"Вы не получили необходимые состояния. Попробуйте сначала получить их из %s." #: lib/remote_branch_delete.tcl:207 msgid "Please select one or more branches to delete." @@ -1819,7 +1739,7 @@ msgstr "Удаление ветвей из %s" #: lib/remote_branch_delete.tcl:286 msgid "No repository selected." -msgstr "Не указан репозиторий" +msgstr "Не указан репозиторий." #: lib/remote_branch_delete.tcl:291 #, tcl-format @@ -1840,9 +1760,9 @@ msgid "%s ... %*i of %*i %s (%3i%%)" msgstr "%s ... %*i из %*i %s (%3i%%)" #: lib/transport.tcl:6 -#, fuzzy, tcl-format +#, tcl-format msgid "fetch %s" -msgstr "Получить" +msgstr "получение %s" #: lib/transport.tcl:7 #, tcl-format @@ -1851,9 +1771,9 @@ msgstr "Получение изменений из %s " # carbon copy #: lib/transport.tcl:18 -#, fuzzy, tcl-format +#, tcl-format msgid "remote prune %s" -msgstr "remote prune %s" +msgstr "чистка внешнего %s" #: lib/transport.tcl:19 #, tcl-format @@ -1877,7 +1797,7 @@ msgstr "Отправка %s %s в %s" #: lib/transport.tcl:89 msgid "Push Branches" -msgstr "Отправить изменения" +msgstr "Отправить изменения в ветвях" #: lib/transport.tcl:103 msgid "Source Branches" @@ -1889,7 +1809,7 @@ msgstr "Репозиторий назначения" #: lib/transport.tcl:158 msgid "Transfer Options" -msgstr "Настройки передачи" +msgstr "Настройки отправки" #: lib/transport.tcl:160 msgid "Force overwrite existing branch (may discard changes)" @@ -1903,31 +1823,3 @@ msgstr "Использовать thin pack (для медленных сетев msgid "Include tags" msgstr "Включить метки" -#~ msgid "Cannot find the git directory:" -#~ msgstr "Каталог Git не найден:" -#~ msgid "Add To Commit" -#~ msgstr "Подготовить к сохранению" -#~ msgid "Add Existing To Commit" -#~ msgstr "Подготовить имеющиеся файлы к сохранению" -#~ msgid "Unstaged Changes (Will Not Be Committed)" -#~ msgstr "Изменено (не будет сохранено)" -#~ msgid "Add Existing" -#~ msgstr "Добавить имеющиеся файлы" -#~ msgid "" -#~ "Abort commit?\n" -#~ "\n" -#~ "Aborting the current commit will cause *ALL* uncommitted changes to be " -#~ "lost.\n" -#~ "\n" -#~ "Continue with aborting the current commit?" -#~ msgstr "" -#~ "Отменить изменения?\n" -#~ "\n" -#~ "Вызванная операция приведет к потере *ВСЕХ* несохраненных изменений.\n" -#~ "\n" -#~ "Продолжить?" -#~ msgid "Aborting... please wait..." -#~ msgstr "Прерывание выполнения... Пожалуйста, ждите..." -#~ msgid "Push to %s..." -#~ msgstr "Отправка в %s..." - From d4e890e5de1ea7107d8d1b4134ab0144bbf27b8c Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 23 Oct 2007 16:55:32 -0400 Subject: [PATCH 006/107] git-gui: Make sure we get errors from git-update-index I'm seeing a lot of silent failures from git-update-index on Windows and this is leaving the index.lock file intact, which means users are later unable to perform additional operations. When the index is locked behind our back and we are unable to use it we may need to allow the user to delete the index lock and try again. However our UI state is probably not currect as we have assumed that some changes were applied but none of them actually did. A rescan is the easiest (in code anyway) solution to correct our UI to show what the index really has (or doesn't have). Signed-off-by: Shawn O. Pearce --- lib/index.tcl | 61 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/lib/index.tcl b/lib/index.tcl index 44689ab63b..28ca039012 100644 --- a/lib/index.tcl +++ b/lib/index.tcl @@ -1,6 +1,55 @@ # git-gui index (add/remove) support # Copyright (C) 2006, 2007 Shawn Pearce +proc _delete_indexlock {} { + if {[catch {file delete -- [gitdir index.lock]} err]} { + error_popup [strcat [mc "Unable to unlock the index."] "\n\n$err"] + } +} + +proc _close_updateindex {fd after} { + fconfigure $fd -blocking 1 + if {[catch {close $fd} err]} { + set w .indexfried + toplevel $w + wm title $w [strcat "[appname] ([reponame]): " [mc "Index Error"]] + wm geometry $w "+[winfo rootx .]+[winfo rooty .]" + pack [label $w.msg \ + -justify left \ + -anchor w \ + -text [strcat \ + [mc "Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui."] \ + "\n\n$err"] \ + ] -anchor w + + frame $w.buttons + button $w.buttons.continue \ + -text [mc "Continue"] \ + -command [list destroy $w] + pack $w.buttons.continue -side right -padx 5 + button $w.buttons.unlock \ + -text [mc "Unlock Index"] \ + -command "destroy $w; _delete_indexlock" + pack $w.buttons.unlock -side right + pack $w.buttons -side bottom -fill x -pady 10 -padx 10 + + wm protocol $w WM_DELETE_WINDOW update + bind $w.buttons.continue " + grab $w + focus $w.buttons.continue + " + tkwait window $w + + $::main_status stop + unlock_index + rescan $after 0 + return + } + + unlock_index + uplevel #0 $after +} + proc update_indexinfo {msg pathList after} { global update_index_cp @@ -41,9 +90,7 @@ proc write_update_indexinfo {fd pathList totalCnt batch msg after} { global file_states current_diff_path if {$update_index_cp >= $totalCnt} { - close $fd - unlock_index - uplevel #0 $after + _close_updateindex $fd $after return } @@ -116,9 +163,7 @@ proc write_update_index {fd pathList totalCnt batch msg after} { global file_states current_diff_path if {$update_index_cp >= $totalCnt} { - close $fd - unlock_index - uplevel #0 $after + _close_updateindex $fd $after return } @@ -201,9 +246,7 @@ proc write_checkout_index {fd pathList totalCnt batch msg after} { global file_states current_diff_path if {$update_index_cp >= $totalCnt} { - close $fd - unlock_index - uplevel #0 $after + _close_updateindex $fd $after return } From ab0d33c43852b047c2a3e5ae960df9a146363e7c Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 23 Oct 2007 18:44:55 -0400 Subject: [PATCH 007/107] git-gui: Protect against bad translation strings If a translation string uses a format character we don't have an argument for then it may throw an error when we attempt to format the translation. In this case switch back to the default format that comes with the program (aka the English translation). Signed-off-by: Shawn O. Pearce --- git-gui.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 38c6e595d8..a7227ac1b6 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -88,13 +88,20 @@ if {![catch {set _verbose $env(GITGUI_VERBOSE)}]} { package require msgcat -proc mc {fmt args} { - set fmt [::msgcat::mc $fmt] +proc _mc_trim {fmt} { set cmk [string first @@ $fmt] if {$cmk > 0} { - set fmt [string range $fmt 0 [expr {$cmk - 1}]] + return [string range $fmt 0 [expr {$cmk - 1}]] } - return [eval [list format $fmt] $args] + return $fmt +} + +proc mc {en_fmt args} { + set fmt [_mc_trim [::msgcat::mc $en_fmt]] + if {[catch {set msg [eval [list format $fmt] $args]} err]} { + set msg [eval [list format [_mc_trim $en_fmt]] $args] + } + return $msg } proc strcat {args} { From f94872dfc18c2670c9eb4ed8528ba45943213f39 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 30 Oct 2007 11:24:37 +0000 Subject: [PATCH 008/107] po2msg: ignore entries marked with "fuzzy" As Christian Stimming pointed out, entries which are "fuzzy" need to be checked by human translators, and cannot be used. Signed-off-by: Johannes Schindelin Signed-off-by: Shawn O. Pearce --- po/po2msg.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/po/po2msg.sh b/po/po2msg.sh index da0765dd80..48a2669967 100644 --- a/po/po2msg.sh +++ b/po/po2msg.sh @@ -48,12 +48,16 @@ for {set i 1} {$i < $argc} {incr i} { } proc flush_msg {} { - global msgid msgstr mode lang out + global msgid msgstr mode lang out fuzzy if {![info exists msgid] || $mode == ""} { return } set mode "" + if {$fuzzy == 1} { + set fuzzy 0 + return + } if {$msgid == ""} { set prefix "set ::msgcat::header" @@ -64,6 +68,7 @@ proc flush_msg {} { puts $out "$prefix \"[u2a $msgstr]\"" } +set fuzzy 0 foreach file $files { regsub "^.*/\(\[^/\]*\)\.po$" $file "$output_directory\\1.msg" outfile set in [open $file "r"] @@ -73,7 +78,11 @@ foreach file $files { set mode "" while {[gets $in line] >= 0} { if {[regexp "^#" $line]} { - flush_msg + if {[regexp ", fuzzy" $line]} { + set fuzzy 1 + } else { + flush_msg + } continue } elseif {[regexp "^msgid \"(.*)\"$" $line dummy match]} { flush_msg From 9a25ae82dd635957e40e2d29ea5022d25fb6c2b0 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 30 Oct 2007 11:24:53 +0000 Subject: [PATCH 009/107] po2msg: ignore untranslated messages Do not generate translations when the translated message is empty. Signed-off-by: Johannes Schindelin Signed-off-by: Shawn O. Pearce --- po/po2msg.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/po/po2msg.sh b/po/po2msg.sh index 48a2669967..91d420b4fb 100644 --- a/po/po2msg.sh +++ b/po/po2msg.sh @@ -62,6 +62,9 @@ proc flush_msg {} { if {$msgid == ""} { set prefix "set ::msgcat::header" } else { + if {$msgstr == ""} { + return + } set prefix "::msgcat::mcset $lang \"[u2a $msgid]\"" } From 95a8b67c2642c576f848005e72126fb25d11286c Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 30 Oct 2007 11:25:31 +0000 Subject: [PATCH 010/107] po2msg: actually output statistics The "--statistics" option was ignored so far; no longer. Now we have a message similar to that of msgfmt. (Untranslated, though ;-) Signed-off-by: Johannes Schindelin Signed-off-by: Shawn O. Pearce --- po/po2msg.sh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/po/po2msg.sh b/po/po2msg.sh index 91d420b4fb..c63248e375 100644 --- a/po/po2msg.sh +++ b/po/po2msg.sh @@ -26,11 +26,17 @@ proc u2a {s} { set output_directory "." set lang "dummy" set files [list] +set show_statistics 0 # parse options -for {set i 1} {$i < $argc} {incr i} { +for {set i 0} {$i < $argc} {incr i} { set arg [lindex $argv $i] - if {$arg == "--statistics" || $arg == "--tcl"} { + if {$arg == "--statistics"} { + incr show_statistics + continue + } + if {$arg == "--tcl"} { + # we know continue } if {$arg == "-l"} { @@ -49,12 +55,14 @@ for {set i 1} {$i < $argc} {incr i} { proc flush_msg {} { global msgid msgstr mode lang out fuzzy + global translated_count fuzzy_count not_translated_count if {![info exists msgid] || $mode == ""} { return } set mode "" if {$fuzzy == 1} { + incr fuzzy_count set fuzzy 0 return } @@ -63,15 +71,20 @@ proc flush_msg {} { set prefix "set ::msgcat::header" } else { if {$msgstr == ""} { + incr not_translated_count return } set prefix "::msgcat::mcset $lang \"[u2a $msgid]\"" + incr translated_count } puts $out "$prefix \"[u2a $msgstr]\"" } set fuzzy 0 +set translated_count 0 +set fuzzy_count 0 +set not_translated_count 0 foreach file $files { regsub "^.*/\(\[^/\]*\)\.po$" $file "$output_directory\\1.msg" outfile set in [open $file "r"] @@ -113,3 +126,8 @@ foreach file $files { close $out } +if {$show_statistics} { + puts [concat "$translated_count translated messages, " \ + "$fuzzy_count fuzzy ones, " \ + "$not_translated_count untranslated ones."] +} From efb848666cd45be5bc213785bedc772969fb3da0 Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Wed, 31 Oct 2007 22:16:17 +0100 Subject: [PATCH 011/107] Updated russian translation of git-gui Fixed some spelling mistakes. Signed-off-by: Shawn O. Pearce --- po/ru.po | 516 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 292 insertions(+), 224 deletions(-) diff --git a/po/ru.po b/po/ru.po index b8e9447942..6727a832ea 100644 --- a/po/ru.po +++ b/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-10-10 04:04-0400\n" +"POT-Creation-Date: 2007-10-31 21:23+0100\n" "PO-Revision-Date: 2007-10-22 22:30-0200\n" "Last-Translator: Alex Riesen \n" "Language-Team: Russian Translation \n" @@ -15,33 +15,33 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 -#: git-gui.sh:763 +#: git-gui.sh:41 git-gui.sh:597 git-gui.sh:611 git-gui.sh:624 git-gui.sh:707 +#: git-gui.sh:726 msgid "git-gui: fatal error" msgstr "git-gui: критическая ошибка" -#: git-gui.sh:595 +#: git-gui.sh:558 #, tcl-format msgid "Invalid font specified in %s:" msgstr "В %s установлен неверный шрифт:" -#: git-gui.sh:620 +#: git-gui.sh:583 msgid "Main Font" msgstr "Шрифт интерфейса" -#: git-gui.sh:621 +#: git-gui.sh:584 msgid "Diff/Console Font" msgstr "Шрифт консоли и изменений (diff)" -#: git-gui.sh:635 +#: git-gui.sh:598 msgid "Cannot find git in PATH." msgstr "git не найден в PATH." -#: git-gui.sh:662 +#: git-gui.sh:625 msgid "Cannot parse Git version string:" msgstr "Невозможно распознать строку версии Git: " -#: git-gui.sh:680 +#: git-gui.sh:643 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -59,79 +59,79 @@ msgstr "" "\n" "Принять '%s' как версию 1.5.0?\n" -#: git-gui.sh:853 +#: git-gui.sh:881 msgid "Git directory not found:" msgstr "Каталог Git не найден:" -#: git-gui.sh:860 +#: git-gui.sh:888 msgid "Cannot move to top of working directory:" msgstr "Невозможно перейти к корню рабочего каталога репозитория: " -#: git-gui.sh:867 +#: git-gui.sh:895 msgid "Cannot use funny .git directory:" msgstr "Каталог.git испорчен: " -#: git-gui.sh:872 +#: git-gui.sh:900 msgid "No working directory" msgstr "Отсутствует рабочий каталог" -#: git-gui.sh:1019 +#: git-gui.sh:1047 msgid "Refreshing file status..." msgstr "Обновление информации о состоянии файлов..." -#: git-gui.sh:1084 +#: git-gui.sh:1112 msgid "Scanning for modified files ..." msgstr "Поиск измененных файлов..." -#: git-gui.sh:1259 lib/browser.tcl:245 +#: git-gui.sh:1287 lib/browser.tcl:245 msgid "Ready." msgstr "Готово." -#: git-gui.sh:1525 +#: git-gui.sh:1553 msgid "Unmodified" msgstr "Не изменено" -#: git-gui.sh:1527 +#: git-gui.sh:1555 msgid "Modified, not staged" msgstr "Изменено, не подготовлено" -#: git-gui.sh:1528 git-gui.sh:1533 +#: git-gui.sh:1556 git-gui.sh:1561 msgid "Staged for commit" msgstr "Подготовлено для сохранения" -#: git-gui.sh:1529 git-gui.sh:1534 +#: git-gui.sh:1557 git-gui.sh:1562 msgid "Portions staged for commit" msgstr "Части, подготовленные для сохранения" -#: git-gui.sh:1530 git-gui.sh:1535 +#: git-gui.sh:1558 git-gui.sh:1563 msgid "Staged for commit, missing" msgstr "Подготовлено для сохранения, отсутствует" -#: git-gui.sh:1532 +#: git-gui.sh:1560 msgid "Untracked, not staged" msgstr "Не отслеживается, не подготовлено" -#: git-gui.sh:1537 +#: git-gui.sh:1565 msgid "Missing" msgstr "Отсутствует" -#: git-gui.sh:1538 +#: git-gui.sh:1566 msgid "Staged for removal" msgstr "Подготовлено для удаления" -#: git-gui.sh:1539 +#: git-gui.sh:1567 msgid "Staged for removal, still present" msgstr "Подготовлено для удаления, еще не удалено" -#: git-gui.sh:1541 git-gui.sh:1542 git-gui.sh:1543 git-gui.sh:1544 +#: git-gui.sh:1569 git-gui.sh:1570 git-gui.sh:1571 git-gui.sh:1572 msgid "Requires merge resolution" msgstr "Требуется разрешение конфликта при объединении" -#: git-gui.sh:1579 +#: git-gui.sh:1607 msgid "Starting gitk... please wait..." msgstr "Запускается gitk... пожалуйста, ждите..." -#: git-gui.sh:1588 +#: git-gui.sh:1616 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -142,296 +142,295 @@ msgstr "" "\n" "%s не существует" -#: git-gui.sh:1788 lib/choose_repository.tcl:32 +#: git-gui.sh:1816 lib/choose_repository.tcl:35 msgid "Repository" msgstr "Репозиторий" -#: git-gui.sh:1789 +#: git-gui.sh:1817 msgid "Edit" msgstr "Редактировать" -#: git-gui.sh:1791 lib/choose_rev.tcl:560 +#: git-gui.sh:1819 lib/choose_rev.tcl:560 msgid "Branch" msgstr "Ветвь" -#: git-gui.sh:1794 lib/choose_rev.tcl:547 +#: git-gui.sh:1822 lib/choose_rev.tcl:547 msgid "Commit@@noun" msgstr "Состояние" -#: git-gui.sh:1797 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1825 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 msgid "Merge" msgstr "Объединить" -#: git-gui.sh:1798 lib/choose_rev.tcl:556 +#: git-gui.sh:1826 lib/choose_rev.tcl:556 msgid "Remote" msgstr "Внешние репозитории" -#: git-gui.sh:1807 +#: git-gui.sh:1835 msgid "Browse Current Branch's Files" msgstr "Просмотреть файлы текущей ветви" -#: git-gui.sh:1811 +#: git-gui.sh:1839 msgid "Browse Branch Files..." msgstr "Показать файлы ветви..." -#: git-gui.sh:1816 +#: git-gui.sh:1844 msgid "Visualize Current Branch's History" msgstr "История текущей ветви наглядно" -#: git-gui.sh:1820 +#: git-gui.sh:1848 msgid "Visualize All Branch History" msgstr "История всех ветвей наглядно" -#: git-gui.sh:1827 +#: git-gui.sh:1855 #, tcl-format msgid "Browse %s's Files" msgstr "Показать файлы ветви %s" -#: git-gui.sh:1829 +#: git-gui.sh:1857 #, tcl-format msgid "Visualize %s's History" msgstr "История ветви %s наглядно" -#: git-gui.sh:1834 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1862 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Статистика базы данных" -#: git-gui.sh:1837 lib/database.tcl:34 +#: git-gui.sh:1865 lib/database.tcl:34 msgid "Compress Database" msgstr "Сжать базу данных" -#: git-gui.sh:1840 +#: git-gui.sh:1868 msgid "Verify Database" msgstr "Проверить базу данных" -#: git-gui.sh:1847 git-gui.sh:1851 git-gui.sh:1855 lib/shortcut.tcl:9 -#: lib/shortcut.tcl:45 lib/shortcut.tcl:84 +#: git-gui.sh:1875 git-gui.sh:1879 git-gui.sh:1883 lib/shortcut.tcl:7 +#: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Создать ярлык на рабочем столе" -#: git-gui.sh:1860 lib/choose_repository.tcl:36 lib/choose_repository.tcl:95 +#: git-gui.sh:1888 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 msgid "Quit" msgstr "Выход" -#: git-gui.sh:1867 +#: git-gui.sh:1895 msgid "Undo" msgstr "Отменить" -#: git-gui.sh:1870 +#: git-gui.sh:1898 msgid "Redo" msgstr "Повторить" -#: git-gui.sh:1874 git-gui.sh:2366 +#: git-gui.sh:1902 git-gui.sh:2395 msgid "Cut" msgstr "Вырезать" -#: git-gui.sh:1877 git-gui.sh:2369 git-gui.sh:2440 git-gui.sh:2512 +#: git-gui.sh:1905 git-gui.sh:2398 git-gui.sh:2469 git-gui.sh:2541 #: lib/console.tcl:67 msgid "Copy" msgstr "Копировать" -#: git-gui.sh:1880 git-gui.sh:2372 +#: git-gui.sh:1908 git-gui.sh:2401 msgid "Paste" msgstr "Вставить" -#: git-gui.sh:1883 git-gui.sh:2375 lib/branch_delete.tcl:26 +#: git-gui.sh:1911 git-gui.sh:2404 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Удалить" -#: git-gui.sh:1887 git-gui.sh:2379 git-gui.sh:2516 lib/console.tcl:69 +#: git-gui.sh:1915 git-gui.sh:2408 git-gui.sh:2545 lib/console.tcl:69 msgid "Select All" msgstr "Выделить все" -#: git-gui.sh:1896 +#: git-gui.sh:1924 msgid "Create..." msgstr "Создать..." -#: git-gui.sh:1902 +#: git-gui.sh:1930 msgid "Checkout..." msgstr "Перейти..." -#: git-gui.sh:1908 +#: git-gui.sh:1936 msgid "Rename..." msgstr "Переименовать..." -#: git-gui.sh:1913 git-gui.sh:2012 +#: git-gui.sh:1941 git-gui.sh:2040 msgid "Delete..." msgstr "Удалить..." -#: git-gui.sh:1918 +#: git-gui.sh:1946 msgid "Reset..." msgstr "Сбросить..." -#: git-gui.sh:1930 git-gui.sh:2313 +#: git-gui.sh:1958 git-gui.sh:2342 msgid "New Commit" msgstr "Новое состояние" -#: git-gui.sh:1938 git-gui.sh:2320 +#: git-gui.sh:1966 git-gui.sh:2349 msgid "Amend Last Commit" msgstr "Исправить последнее состояние" -#: git-gui.sh:1947 git-gui.sh:2280 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:1975 git-gui.sh:2309 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Перечитать" -#: git-gui.sh:1953 +#: git-gui.sh:1981 msgid "Stage To Commit" msgstr "Подготовить для сохранения" -#: git-gui.sh:1958 +#: git-gui.sh:1986 msgid "Stage Changed Files To Commit" msgstr "Подготовить измененные файлы для сохранения" -#: git-gui.sh:1964 +#: git-gui.sh:1992 msgid "Unstage From Commit" msgstr "Убрать из подготовленного" -#: git-gui.sh:1969 lib/index.tcl:352 +#: git-gui.sh:1997 lib/index.tcl:393 msgid "Revert Changes" msgstr "Отменить изменения" -#: git-gui.sh:1976 git-gui.sh:2292 git-gui.sh:2390 +#: git-gui.sh:2004 git-gui.sh:2321 git-gui.sh:2419 msgid "Sign Off" msgstr "Подписать" -#: git-gui.sh:1980 git-gui.sh:2296 +#: git-gui.sh:2008 git-gui.sh:2325 msgid "Commit@@verb" msgstr "Сохранить" -#: git-gui.sh:1991 +#: git-gui.sh:2019 msgid "Local Merge..." msgstr "Локальное объединение..." -#: git-gui.sh:1996 +#: git-gui.sh:2024 msgid "Abort Merge..." msgstr "Прервать объединение..." -#: git-gui.sh:2008 +#: git-gui.sh:2036 msgid "Push..." msgstr "Отправить..." -#: git-gui.sh:2019 lib/choose_repository.tcl:41 -#, fuzzy +#: git-gui.sh:2047 lib/choose_repository.tcl:40 msgid "Apple" msgstr "" -#: git-gui.sh:2022 git-gui.sh:2044 lib/about.tcl:13 -#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 +#: git-gui.sh:2050 git-gui.sh:2072 lib/about.tcl:13 +#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 #, tcl-format msgid "About %s" msgstr "О %s" -#: git-gui.sh:2026 +#: git-gui.sh:2054 msgid "Preferences..." msgstr "Настройки..." -#: git-gui.sh:2034 git-gui.sh:2558 +#: git-gui.sh:2062 git-gui.sh:2587 msgid "Options..." msgstr "Настройки..." -#: git-gui.sh:2040 lib/choose_repository.tcl:47 +#: git-gui.sh:2068 lib/choose_repository.tcl:46 msgid "Help" msgstr "Помощь" -#: git-gui.sh:2081 +#: git-gui.sh:2109 msgid "Online Documentation" msgstr "Документация в интернете" -#: git-gui.sh:2165 +#: git-gui.sh:2193 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "критическая ошибка: %s: нет такого файла или каталога" -#: git-gui.sh:2198 +#: git-gui.sh:2226 msgid "Current Branch:" msgstr "Текущая ветвь:" -#: git-gui.sh:2219 +#: git-gui.sh:2247 msgid "Staged Changes (Will Commit)" msgstr "Подготовлено (будет сохранено)" -#: git-gui.sh:2239 +#: git-gui.sh:2266 msgid "Unstaged Changes" msgstr "Изменено (не будет сохранено)" -#: git-gui.sh:2286 +#: git-gui.sh:2315 msgid "Stage Changed" msgstr "Подготовить все" -#: git-gui.sh:2302 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2331 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Отправить" -#: git-gui.sh:2332 +#: git-gui.sh:2361 msgid "Initial Commit Message:" msgstr "Комментарий к первому состоянию:" -#: git-gui.sh:2333 +#: git-gui.sh:2362 msgid "Amended Commit Message:" msgstr "Комментарий к исправленному состоянию:" -#: git-gui.sh:2334 +#: git-gui.sh:2363 msgid "Amended Initial Commit Message:" msgstr "Комментарий к исправленному первоначальному состоянию:" -#: git-gui.sh:2335 +#: git-gui.sh:2364 msgid "Amended Merge Commit Message:" msgstr "Комментарий к исправленному объединению:" -#: git-gui.sh:2336 +#: git-gui.sh:2365 msgid "Merge Commit Message:" msgstr "Комментарий к объединению:" -#: git-gui.sh:2337 +#: git-gui.sh:2366 msgid "Commit Message:" msgstr "Комментарий к состоянию:" -#: git-gui.sh:2382 git-gui.sh:2520 lib/console.tcl:71 +#: git-gui.sh:2411 git-gui.sh:2549 lib/console.tcl:71 msgid "Copy All" msgstr "Копировать все" -#: git-gui.sh:2406 lib/blame.tcl:104 +#: git-gui.sh:2435 lib/blame.tcl:104 msgid "File:" msgstr "Файл:" -#: git-gui.sh:2508 +#: git-gui.sh:2537 msgid "Refresh" msgstr "Обновить" -#: git-gui.sh:2529 +#: git-gui.sh:2558 msgid "Apply/Reverse Hunk" msgstr "Применить/Убрать изменение" -#: git-gui.sh:2535 +#: git-gui.sh:2564 msgid "Decrease Font Size" msgstr "Уменьшить размер шрифта" -#: git-gui.sh:2539 +#: git-gui.sh:2568 msgid "Increase Font Size" msgstr "Увеличить размер шрифта" -#: git-gui.sh:2544 +#: git-gui.sh:2573 msgid "Show Less Context" msgstr "Меньше контекста" -#: git-gui.sh:2551 +#: git-gui.sh:2580 msgid "Show More Context" msgstr "Больше контекста" -#: git-gui.sh:2565 +#: git-gui.sh:2594 msgid "Unstage Hunk From Commit" msgstr "Не сохранять часть" -#: git-gui.sh:2567 +#: git-gui.sh:2596 msgid "Stage Hunk For Commit" msgstr "Подготовить часть для сохранения" -#: git-gui.sh:2586 +#: git-gui.sh:2615 msgid "Initializing..." msgstr "Инициализация..." -#: git-gui.sh:2677 +#: git-gui.sh:2706 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -448,7 +447,7 @@ msgstr "" "запущенными из %s\n" "\n" -#: git-gui.sh:2707 +#: git-gui.sh:2736 msgid "" "\n" "This is due to a known issue with the\n" @@ -458,7 +457,7 @@ msgstr "" "Это известная проблема с Tcl,\n" "распространяемым Cygwin." -#: git-gui.sh:2712 +#: git-gui.sh:2741 #, tcl-format msgid "" "\n" @@ -579,7 +578,7 @@ msgstr "Создание ветви" msgid "Create New Branch" msgstr "Создать новую ветвь" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:199 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 msgid "Create" msgstr "Создать" @@ -732,9 +731,9 @@ msgstr "[На уровень выше]" msgid "Browse Branch Files" msgstr "Показать файлы ветви" -#: lib/browser.tcl:277 lib/choose_repository.tcl:215 -#: lib/choose_repository.tcl:305 lib/choose_repository.tcl:315 -#: lib/choose_repository.tcl:811 +#: lib/browser.tcl:277 lib/choose_repository.tcl:391 +#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 +#: lib/choose_repository.tcl:989 msgid "Browse" msgstr "Показать" @@ -788,7 +787,8 @@ msgstr "Рабочая область заблокирована другим п msgid "" "Last scanned state does not match repository state.\n" "\n" -"Another Git program has modified this repository since the last scan. A rescan must be performed before the current branch can be changed.\n" +"Another Git program has modified this repository since the last scan. A " +"rescan must be performed before the current branch can be changed.\n" "\n" "The rescan will be automatically started now.\n" msgstr "" @@ -822,11 +822,13 @@ msgstr "Ветвь '%s' остается текущей." msgid "" "You are no longer on a local branch.\n" "\n" -"If you wanted to be on a branch, create one now starting from 'This Detached Checkout'." +"If you wanted to be on a branch, create one now starting from 'This Detached " +"Checkout'." msgstr "" "Вы находитесь не в локальной ветви.\n" "\n" -"Если вы хотите снова вернуться к какой-нибудь ветви, создайте ее сейчас, начиная с 'Текущего отсоединенного состояния'." +"Если вы хотите снова вернуться к какой-нибудь ветви, создайте ее сейчас, " +"начиная с 'Текущего отсоединенного состояния'." #: lib/checkout_op.tcl:446 #, tcl-format @@ -856,19 +858,21 @@ msgstr "Наглядно" msgid "" "Failed to set current branch.\n" "\n" -"This working directory is only partially switched. We successfully updated your files, but failed to update an internal Git file.\n" +"This working directory is only partially switched. We successfully updated " +"your files, but failed to update an internal Git file.\n" "\n" "This should not have occurred. %s will now close and give up." msgstr "" "Не удалось установить текущую ветвь.\n" "\n" -"Ваш рабочий каталог обновлен только частично. Были обновлены все файлы кроме служебных файлов Git. \n" +"Ваш рабочий каталог обновлен только частично. Были обновлены все файлы кроме " +"служебных файлов Git. \n" "\n" "Этого не должно было произойти. %s завершается." #: lib/choose_font.tcl:39 msgid "Select" -msgstr "Выделить все" +msgstr "Выбрать" #: lib/choose_font.tcl:53 msgid "Font Family" @@ -890,210 +894,226 @@ msgstr "" "Это пример текста.\n" "Если Вам нравится этот текст, это может быть Ваш шрифт." -#: lib/choose_repository.tcl:25 +#: lib/choose_repository.tcl:27 msgid "Git Gui" msgstr "" -#: lib/choose_repository.tcl:69 lib/choose_repository.tcl:204 +#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 msgid "Create New Repository" msgstr "Создать новый репозиторий" -#: lib/choose_repository.tcl:74 lib/choose_repository.tcl:291 +#: lib/choose_repository.tcl:86 +msgid "New..." +msgstr "Новый..." + +#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 msgid "Clone Existing Repository" msgstr "Склонировать существующий репозиторий" -#: lib/choose_repository.tcl:79 lib/choose_repository.tcl:800 +#: lib/choose_repository.tcl:99 +msgid "Clone..." +msgstr "Склонировать..." + +#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 msgid "Open Existing Repository" msgstr "Выбрать существующий репозиторий" -#: lib/choose_repository.tcl:91 -msgid "Next >" -msgstr "Дальше >" +#: lib/choose_repository.tcl:112 +msgid "Open..." +msgstr "Открыть..." -#: lib/choose_repository.tcl:152 +#: lib/choose_repository.tcl:125 +msgid "Recent Repositories" +msgstr "Недавние репозитории" + +#: lib/choose_repository.tcl:131 +msgid "Open Recent Repository:" +msgstr "Открыть последний репозиторий" + +#: lib/choose_repository.tcl:294 #, tcl-format msgid "Location %s already exists." msgstr "Путь '%s' уже существует." -#: lib/choose_repository.tcl:158 lib/choose_repository.tcl:165 -#: lib/choose_repository.tcl:172 +#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 +#: lib/choose_repository.tcl:314 #, tcl-format msgid "Failed to create repository %s:" msgstr "Не удалось создать репозиторий %s:" -#: lib/choose_repository.tcl:209 lib/choose_repository.tcl:309 +#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 msgid "Directory:" msgstr "Каталог:" -#: lib/choose_repository.tcl:238 lib/choose_repository.tcl:363 -#: lib/choose_repository.tcl:834 +#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 +#: lib/choose_repository.tcl:1013 msgid "Git Repository" msgstr "Репозиторий" -#: lib/choose_repository.tcl:253 lib/choose_repository.tcl:260 +#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "Каталог '%s' уже существует." -#: lib/choose_repository.tcl:265 +#: lib/choose_repository.tcl:442 #, tcl-format msgid "File %s already exists." msgstr "Файл '%s' уже существует." -#: lib/choose_repository.tcl:286 +#: lib/choose_repository.tcl:463 msgid "Clone" msgstr "Склонировать" -#: lib/choose_repository.tcl:299 +#: lib/choose_repository.tcl:476 msgid "URL:" msgstr "Ссылка:" -#: lib/choose_repository.tcl:319 +#: lib/choose_repository.tcl:496 msgid "Clone Type:" msgstr "Тип клона:" -#: lib/choose_repository.tcl:325 +#: lib/choose_repository.tcl:502 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Стандартный (Быстрый, полуизбыточный, \"жесткие\" ссылки)" -#: lib/choose_repository.tcl:331 +#: lib/choose_repository.tcl:508 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Полная копия (Медленный, создает резервную копию)" -#: lib/choose_repository.tcl:337 +#: lib/choose_repository.tcl:514 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Общий (Самый быстрый, не рекомендуется, без резервной копии)" -#: lib/choose_repository.tcl:369 lib/choose_repository.tcl:418 -#: lib/choose_repository.tcl:560 lib/choose_repository.tcl:630 -#: lib/choose_repository.tcl:840 lib/choose_repository.tcl:848 +#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 +#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 +#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 #, tcl-format msgid "Not a Git repository: %s" msgstr "Каталог не является репозиторием: %s" -#: lib/choose_repository.tcl:405 +#: lib/choose_repository.tcl:586 msgid "Standard only available for local repository." msgstr "Стандартный клон возможен только для локального репозитория." -#: lib/choose_repository.tcl:409 +#: lib/choose_repository.tcl:590 msgid "Shared only available for local repository." msgstr "Общий клон возможен только для локального репозитория." -#: lib/choose_repository.tcl:439 +#: lib/choose_repository.tcl:617 msgid "Failed to configure origin" msgstr "Не могу сконфигурировать исходный репозиторий." -#: lib/choose_repository.tcl:451 +#: lib/choose_repository.tcl:629 msgid "Counting objects" msgstr "Считаю объекты" -#: lib/choose_repository.tcl:452 -#, fuzzy +#: lib/choose_repository.tcl:630 msgid "buckets" msgstr "" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:654 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Не могу скопировать objects/info/alternates: %s" -#: lib/choose_repository.tcl:512 +#: lib/choose_repository.tcl:690 #, tcl-format msgid "Nothing to clone from %s." msgstr "Нечего клонировать с %s." -#: lib/choose_repository.tcl:514 lib/choose_repository.tcl:728 -#: lib/choose_repository.tcl:740 +#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 +#: lib/choose_repository.tcl:918 msgid "The 'master' branch has not been initialized." msgstr "Не инициализирована ветвь 'master'." -#: lib/choose_repository.tcl:527 +#: lib/choose_repository.tcl:705 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "\"Жесткие ссылки\" не доступны. Буду использовать копирование." -#: lib/choose_repository.tcl:539 +#: lib/choose_repository.tcl:717 #, tcl-format msgid "Cloning from %s" msgstr "Клонирование %s" -#: lib/choose_repository.tcl:570 +#: lib/choose_repository.tcl:748 msgid "Copying objects" msgstr "Копирование objects" -#: lib/choose_repository.tcl:571 +#: lib/choose_repository.tcl:749 msgid "KiB" msgstr "КБ" -#: lib/choose_repository.tcl:595 +#: lib/choose_repository.tcl:773 #, tcl-format msgid "Unable to copy object: %s" msgstr "Не могу скопировать объект: %s" -#: lib/choose_repository.tcl:605 +#: lib/choose_repository.tcl:783 msgid "Linking objects" msgstr "Создание ссылок на objects" -#: lib/choose_repository.tcl:606 +#: lib/choose_repository.tcl:784 msgid "objects" msgstr "объекты" -#: lib/choose_repository.tcl:614 +#: lib/choose_repository.tcl:792 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Не могу \"жестко связать\" объект: %s" -#: lib/choose_repository.tcl:669 +#: lib/choose_repository.tcl:847 msgid "Cannot fetch branches and objects. See console output for details." -msgstr "Не могу получить ветви и объекты. Дополнительная информация на консоли." +msgstr "" +"Не могу получить ветви и объекты. Дополнительная информация на консоли." -#: lib/choose_repository.tcl:680 +#: lib/choose_repository.tcl:858 msgid "Cannot fetch tags. See console output for details." msgstr "Не могу получить метки. Дополнительная информация на консоли." -#: lib/choose_repository.tcl:704 +#: lib/choose_repository.tcl:882 msgid "Cannot determine HEAD. See console output for details." msgstr "Не могу определить HEAD. Дополнительная информация на консоли." -#: lib/choose_repository.tcl:713 +#: lib/choose_repository.tcl:891 #, tcl-format msgid "Unable to cleanup %s" msgstr "Не могу очистить %s" -#: lib/choose_repository.tcl:719 +#: lib/choose_repository.tcl:897 msgid "Clone failed." msgstr "Клонирование не удалось." -#: lib/choose_repository.tcl:726 +#: lib/choose_repository.tcl:904 msgid "No default branch obtained." msgstr "Не было получено ветви по умолчанию." -#: lib/choose_repository.tcl:737 +#: lib/choose_repository.tcl:915 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "Не могу распознать %s как состояние." -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:927 msgid "Creating working directory" msgstr "Создаю рабочий каталог" -#: lib/choose_repository.tcl:750 lib/index.tcl:15 lib/index.tcl:80 -#: lib/index.tcl:149 +#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/index.tcl:193 msgid "files" msgstr "файлов" -#: lib/choose_repository.tcl:779 +#: lib/choose_repository.tcl:957 msgid "Initial file checkout failed." msgstr "Не удалось получить начальное состояние файлов репозитория." -#: lib/choose_repository.tcl:795 +#: lib/choose_repository.tcl:973 msgid "Open" msgstr "Открыть" -#: lib/choose_repository.tcl:805 +#: lib/choose_repository.tcl:983 msgid "Repository:" msgstr "Репозиторий:" -#: lib/choose_repository.tcl:854 +#: lib/choose_repository.tcl:1033 #, tcl-format msgid "Failed to open repository %s:" msgstr "Не удалось открыть репозиторий %s:" @@ -1116,7 +1136,7 @@ msgstr "Ветвь слежения" #: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 msgid "Tag" -msgstr "Метка" +msgstr "Таг" #: lib/choose_rev.tcl:317 #, tcl-format @@ -1143,7 +1163,8 @@ msgstr "Ссылка" msgid "" "There is nothing to amend.\n" "\n" -"You are about to create the initial commit. There is no commit before this to amend.\n" +"You are about to create the initial commit. There is no commit before this " +"to amend.\n" msgstr "" "Отсутствует состояние для исправления.\n" "\n" @@ -1153,11 +1174,14 @@ msgstr "" msgid "" "Cannot amend while merging.\n" "\n" -"You are currently in the middle of a merge that has not been fully completed. You cannot amend the prior commit unless you first abort the current merge activity.\n" +"You are currently in the middle of a merge that has not been fully " +"completed. You cannot amend the prior commit unless you first abort the " +"current merge activity.\n" msgstr "" "Невозможно исправить состояние во время объединения.\n" "\n" -"Текущее объединение не завершено. Невозможно исправить предыдущее сохраненное состояние не прерывая текущее объединение.\n" +"Текущее объединение не завершено. Невозможно исправить предыдущее " +"сохраненное состояние не прерывая текущее объединение.\n" #: lib/commit.tcl:49 msgid "Error loading commit data for amend:" @@ -1169,19 +1193,21 @@ msgstr "Невозможно получить информацию об авто #: lib/commit.tcl:81 msgid "Invalid GIT_COMMITTER_IDENT:" -msgstr "Неверная GIT_COMMITTER_IDENT:" +msgstr "Неверный GIT_COMMITTER_IDENT:" #: lib/commit.tcl:133 msgid "" "Last scanned state does not match repository state.\n" "\n" -"Another Git program has modified this repository since the last scan. A rescan must be performed before another commit can be created.\n" +"Another Git program has modified this repository since the last scan. A " +"rescan must be performed before another commit can be created.\n" "\n" "The rescan will be automatically started now.\n" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git. Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" +"С момента последней проверки репозиторий был изменен другой программой Git. " +"Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь. \n" "\n" "Это будет сделано сейчас автоматически.\n" @@ -1190,11 +1216,13 @@ msgstr "" msgid "" "Unmerged files cannot be committed.\n" "\n" -"File %s has merge conflicts. You must resolve them and stage the file before committing.\n" +"File %s has merge conflicts. You must resolve them and stage the file " +"before committing.\n" msgstr "" "Нельзя сохранить необъединенные файлы.\n" "\n" -"Для файла %s возник конфликт объединения. Разрешите конфликт и добавьте к подготовленным файлам перед сохранением.\n" +"Для файла %s возник конфликт объединения. Разрешите конфликт и добавьте к " +"подготовленным файлам перед сохранением.\n" #: lib/commit.tcl:162 #, tcl-format @@ -1333,13 +1361,15 @@ msgstr "Проверка базы объектов при помощи fsck" msgid "" "This repository currently has approximately %i loose objects.\n" "\n" -"To maintain optimal performance it is strongly recommended that you compress the database when more than %i loose objects exist.\n" +"To maintain optimal performance it is strongly recommended that you compress " +"the database when more than %i loose objects exist.\n" "\n" "Compress the database now?" msgstr "" "Этот репозиторий сейчас содержит примерно %i свободных объектов\n" "\n" -"Для лучшей производительности рекомендуется сжать базу данных, когда есть более %i несвязанных объектов.\n" +"Для лучшей производительности рекомендуется сжать базу данных, когда есть " +"более %i несвязанных объектов.\n" "\n" "Сжать базу данных сейчас?" @@ -1355,15 +1385,18 @@ msgid "" "\n" "%s has no changes.\n" "\n" -"The modification date of this file was updated by another application, but the content within the file was not changed.\n" +"The modification date of this file was updated by another application, but " +"the content within the file was not changed.\n" "\n" -"A rescan will be automatically started to find other files which may have the same state." +"A rescan will be automatically started to find other files which may have " +"the same state." msgstr "" "Изменений не обнаружено.\n" "\n" "в %s отутствуют изменения.\n" "\n" -"Дата изменения файла была обновлена другой программой, но содержимое файла осталось прежним.\n" +"Дата изменения файла была обновлена другой программой, но содержимое файла " +"осталось прежним.\n" "\n" "Сейчас будет запущено перечитывание репозитория, чтобы найти подобные файлы." @@ -1413,32 +1446,57 @@ msgstr "предупреждение" msgid "You must correct the above errors before committing." msgstr "Прежде чем сохранить, исправьте вышеуказанные ошибки." -#: lib/index.tcl:241 +#: lib/index.tcl:6 +msgid "Unable to unlock the index." +msgstr "Не удалось разблокировать индекс" + +#: lib/index.tcl:15 +msgid "Index Error" +msgstr "Ошибка индекса" + +#: lib/index.tcl:21 +msgid "" +"Updating the Git index failed. A rescan will be automatically started to " +"resynchronize git-gui." +msgstr "" +"Не удалось обновить индекс Git. Состояние репозитория будет" +"перечитано автоматически." + +#: lib/index.tcl:27 +msgid "Continue" +msgstr "Продолжить" + +#: lib/index.tcl:31 +msgid "Unlock Index" +msgstr "Разблокировать индекс" + +#: lib/index.tcl:282 #, tcl-format msgid "Unstaging %s from commit" msgstr "Удаление %s из подготовленного" -#: lib/index.tcl:285 +#: lib/index.tcl:326 #, tcl-format msgid "Adding %s" msgstr "Добавление %s..." -#: lib/index.tcl:340 +#: lib/index.tcl:381 #, tcl-format msgid "Revert changes in file %s?" msgstr "Отменить изменения в файле %s?" -#: lib/index.tcl:342 +#: lib/index.tcl:383 #, tcl-format msgid "Revert changes in these %i files?" msgstr "Отменить изменения в %i файле(-ах)?" -#: lib/index.tcl:348 +#: lib/index.tcl:389 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" -"Любые изменения, не подготовленные к сохранению, будут потеряны при данной операции." +"Любые изменения, не подготовленные к сохранению, будут потеряны при данной " +"операции." -#: lib/index.tcl:351 +#: lib/index.tcl:392 msgid "Do Nothing" msgstr "Ничего не делать" @@ -1450,19 +1508,22 @@ msgid "" msgstr "" "Невозможно выполнить объединение во время исправления.\n" "\n" -"Завершите исправление данного состояния перед выполнением операции объединения.\n" +"Завершите исправление данного состояния перед выполнением операции " +"объединения.\n" #: lib/merge.tcl:27 msgid "" "Last scanned state does not match repository state.\n" "\n" -"Another Git program has modified this repository since the last scan. A rescan must be performed before a merge can be performed.\n" +"Another Git program has modified this repository since the last scan. A " +"rescan must be performed before a merge can be performed.\n" "\n" "The rescan will be automatically started now.\n" msgstr "" "Последнее прочитанное состояние репозитория не соответствует текущему.\n" "\n" -"С момента последней проверки репозиторий был изменен другой программой Git. Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь.\n" +"С момента последней проверки репозиторий был изменен другой программой Git. " +"Необходимо перечитать репозиторий, прежде чем изменять текущую ветвь.\n" "\n" "Это будет сделано сейчас автоматически.\n" @@ -1473,12 +1534,15 @@ msgid "" "\n" "File %s has merge conflicts.\n" "\n" -"You must resolve them, stage the file, and commit to complete the current merge. Only then can you begin another merge.\n" +"You must resolve them, stage the file, and commit to complete the current " +"merge. Only then can you begin another merge.\n" msgstr "" "Предыдущее объединение не завершено из-за конфликта.\n" "\n" "Для файла %s возник конфликт объединения.\n" -"Разрешите конфликт, подготовьте файл и сохраните. Только после этого можно начать следующее объединение.\n" +"\n" +"Разрешите конфликт, подготовьте файл и сохраните. Только после этого можно " +"начать следующее объединение.\n" #: lib/merge.tcl:54 #, tcl-format @@ -1487,13 +1551,15 @@ msgid "" "\n" "File %s is modified.\n" "\n" -"You should complete the current commit before starting a merge. Doing so will help you abort a failed merge, should the need arise.\n" +"You should complete the current commit before starting a merge. Doing so " +"will help you abort a failed merge, should the need arise.\n" msgstr "" "Изменения не сохранены.\n" "\n" -"Файл %s изменен.\n" +"Файл %s изменен.\n" "\n" -"Подготовьте и сохраните измения перед началом объединения. В случае необходимости это позволит прервать операцию объединения.\n" +"Подготовьте и сохраните измения перед началом объединения. В случае " +"необходимости это позволит прервать операцию объединения.\n" #: lib/merge.tcl:106 #, tcl-format @@ -1631,7 +1697,7 @@ msgstr "Шаблон для имени новой ветви" #: lib/option.tcl:176 msgid "Change Font" -msgstr "Шрифт интерфейса" +msgstr "Изменить шрифт" #: lib/option.tcl:180 #, tcl-format @@ -1640,7 +1706,6 @@ msgstr "Выберите %s" # carbon copy #: lib/option.tcl:186 -#, fuzzy msgid "pt." msgstr "" @@ -1652,18 +1717,6 @@ msgstr "Настройки" msgid "Failed to completely save options:" msgstr "Не удалось полностью сохранить настройки:" -#: lib/remote.tcl:165 -msgid "Prune from" -msgstr "Чистка" - -#: lib/remote.tcl:170 -msgid "Fetch from" -msgstr "Получение из" - -#: lib/remote.tcl:213 -msgid "Push to" -msgstr "Отправить" - #: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34 msgid "Delete Remote Branch" msgstr "Удалить внешнюю ветвь" @@ -1707,16 +1760,17 @@ msgid "" "\n" " - %s" msgstr "" -"Следующие ветви объединены с %s не полностью:" -"\n" +"Следующие ветви объединены с %s не полностью:\n" " - %s" #: lib/remote_branch_delete.tcl:189 #, tcl-format -msgid "One or more of the merge tests failed because you have not fetched the necessary commits. Try fetching from %s first." +msgid "" +"One or more of the merge tests failed because you have not fetched the " +"necessary commits. Try fetching from %s first." msgstr "" -"Один или несколько тестов на объединение не прошли, потому что " -"Вы не получили необходимые состояния. Попробуйте сначала получить их из %s." +"Один или несколько тестов на объединение не прошли, потому что Вы не " +"получили необходимые состояния. Попытайтесь получить их из %s." #: lib/remote_branch_delete.tcl:207 msgid "Please select one or more branches to delete." @@ -1746,11 +1800,23 @@ msgstr "Не указан репозиторий." msgid "Scanning %s..." msgstr "Перечитывание %s... " -#: lib/shortcut.tcl:26 lib/shortcut.tcl:74 -msgid "Cannot write script:" -msgstr "Невозможно записать скрипт:" +#: lib/remote.tcl:165 +msgid "Prune from" +msgstr "Чистка" -#: lib/shortcut.tcl:149 +#: lib/remote.tcl:170 +msgid "Fetch from" +msgstr "Получение из" + +#: lib/remote.tcl:213 +msgid "Push to" +msgstr "Отправить" + +#: lib/shortcut.tcl:20 lib/shortcut.tcl:61 +msgid "Cannot write shortcut:" +msgstr "Невозможно записать ссылку:" + +#: lib/shortcut.tcl:136 msgid "Cannot write icon:" msgstr "Невозможно записать значок:" @@ -1821,5 +1887,7 @@ msgstr "Использовать thin pack (для медленных сетев #: lib/transport.tcl:168 msgid "Include tags" -msgstr "Включить метки" +msgstr "Передать таги" +#~ msgid "Next >" +#~ msgstr "Дальше >" From 76d536b8af3a2cdf6fb86b2f05051a31b7096cbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=97=E3=82=89=E3=81=84=E3=81=97=E3=81=AA=E3=81=AA?= =?UTF-8?q?=E3=81=93?= Date: Wed, 31 Oct 2007 23:12:12 +0900 Subject: [PATCH 012/107] git-gui: Update Japanese strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates the Japanese translation file. Signed-off-by: しらいしななこ Signed-off-by: Shawn O. Pearce --- po/ja.po | 277 ++++++++++++++++++++++++++----------------------------- 1 file changed, 133 insertions(+), 144 deletions(-) diff --git a/po/ja.po b/po/ja.po index f65e460686..e4491f704c 100644 --- a/po/ja.po +++ b/po/ja.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-10-10 04:04-0400\n" -"PO-Revision-Date: 2007-08-14 18:49+0900\n" +"PO-Revision-Date: 2007-10-31 16:23+0900\n" "Last-Translator: しらいし ななこ \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -19,12 +19,12 @@ msgstr "" #: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 #: git-gui.sh:763 msgid "git-gui: fatal error" -msgstr "" +msgstr "git-gui: 致命的なエラー" #: git-gui.sh:595 -#, fuzzy, tcl-format +#, tcl-format msgid "Invalid font specified in %s:" -msgstr "gui.%s に無効なフォントが指定されています:" +msgstr "%s に無効なフォントが指定されています:" #: git-gui.sh:620 msgid "Main Font" @@ -66,9 +66,8 @@ msgid "Git directory not found:" msgstr "Git ディレクトリが見つかりません:" #: git-gui.sh:860 -#, fuzzy msgid "Cannot move to top of working directory:" -msgstr "変な .git ディレクトリは使えません" +msgstr "作業ディレクトリの最上位に移動できません" #: git-gui.sh:867 msgid "Cannot use funny .git directory:" @@ -158,7 +157,6 @@ msgid "Branch" msgstr "ブランチ" #: git-gui.sh:1794 lib/choose_rev.tcl:547 -#, fuzzy msgid "Commit@@noun" msgstr "コミット" @@ -167,9 +165,8 @@ msgid "Merge" msgstr "マージ" #: git-gui.sh:1798 lib/choose_rev.tcl:556 -#, fuzzy msgid "Remote" -msgstr "リモート:" +msgstr "リモート" #: git-gui.sh:1807 msgid "Browse Current Branch's Files" @@ -301,7 +298,6 @@ msgid "Sign Off" msgstr "署名" #: git-gui.sh:1980 git-gui.sh:2296 -#, fuzzy msgid "Commit@@verb" msgstr "コミット" @@ -329,7 +325,7 @@ msgstr "%s について" #: git-gui.sh:2026 msgid "Preferences..." -msgstr "" +msgstr "設定…" #: git-gui.sh:2034 git-gui.sh:2558 msgid "Options..." @@ -346,21 +342,19 @@ msgstr "オンライン・ドキュメント" #: git-gui.sh:2165 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" -msgstr "" +msgstr "致命的: パス %s が stat できません。そのようなファイルやディレクトリはありません" #: git-gui.sh:2198 msgid "Current Branch:" msgstr "現在のブランチ" #: git-gui.sh:2219 -#, fuzzy msgid "Staged Changes (Will Commit)" msgstr "ステージングされた(コミット予定済の)変更" #: git-gui.sh:2239 -#, fuzzy msgid "Unstaged Changes" -msgstr "変更をコミット予定に入れる" +msgstr "コミット予定に入っていない変更" #: git-gui.sh:2286 msgid "Stage Changed" @@ -448,6 +442,10 @@ msgid "" "by %s:\n" "\n" msgstr "" +"環境に問題がある可能性があります\n" +"\n" +"以下の環境変数は %s が起動する Git サブプロセスによって無視されるでしょう:\n" +"\n" #: git-gui.sh:2707 msgid "" @@ -455,6 +453,9 @@ msgid "" "This is due to a known issue with the\n" "Tcl binary distributed by Cygwin." msgstr "" +"\n" +"これは Cygwin で配布されている Tcl バイナリに\n" +"関しての既知の問題によります" #: git-gui.sh:2712 #, tcl-format @@ -466,6 +467,10 @@ msgid "" "user.email settings into your personal\n" "~/.gitconfig file.\n" msgstr "" +"\n" +"\n" +"個人的な ~/.gitconfig ファイル内で user.name と user.email の値を設定\n" +"するのが、%s の良い代用となります\n" #: lib/about.tcl:25 msgid "git-gui - a graphical user interface for Git." @@ -490,50 +495,47 @@ msgstr "%s を読んでいます…" #: lib/blame.tcl:473 msgid "Loading copy/move tracking annotations..." -msgstr "" +msgstr "コピー・移動追跡データを読んでいます…" #: lib/blame.tcl:493 msgid "lines annotated" -msgstr "" +msgstr "行を注釈しました" #: lib/blame.tcl:674 msgid "Loading original location annotations..." -msgstr "" +msgstr "元位置行の注釈データを読んでいます…" #: lib/blame.tcl:677 msgid "Annotation complete." -msgstr "" +msgstr "注釈完了しました" #: lib/blame.tcl:731 -#, fuzzy msgid "Loading annotation..." -msgstr "%s をロード中…" +msgstr "注釈を読み込んでいます…" #: lib/blame.tcl:787 msgid "Author:" -msgstr "" +msgstr "作者:" #: lib/blame.tcl:791 -#, fuzzy msgid "Committer:" -msgstr "コミット:" +msgstr "コミット者:" #: lib/blame.tcl:796 msgid "Original File:" -msgstr "" +msgstr "元ファイル" #: lib/blame.tcl:910 msgid "Originally By:" -msgstr "" +msgstr "原作者:" #: lib/blame.tcl:916 -#, fuzzy msgid "In File:" msgstr "ファイル:" #: lib/blame.tcl:921 msgid "Copied Or Moved Here By:" -msgstr "" +msgstr "複写・移動者:" #: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19 msgid "Checkout Branch" @@ -741,7 +743,7 @@ msgstr "%s から %s をフェッチしています" #: lib/checkout_op.tcl:127 #, tcl-format msgid "fatal: Cannot resolve %s" -msgstr "" +msgstr "致命的エラー: %s を解決できません" #: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 msgid "Close" @@ -796,9 +798,9 @@ msgstr "" "自動的に再スキャンを開始します。\n" #: lib/checkout_op.tcl:322 -#, fuzzy, tcl-format +#, tcl-format msgid "Updating working directory to '%s'..." -msgstr "作業ディレクトリがありません" +msgstr "作業ディレクトリを '%s' に更新しています…" #: lib/checkout_op.tcl:353 #, tcl-format @@ -827,9 +829,9 @@ msgstr "" "チを開始してください。" #: lib/checkout_op.tcl:446 -#, fuzzy, tcl-format +#, tcl-format msgid "Checked out '%s'." -msgstr "チェックアウト" +msgstr "'%s' をチェックアウトしました" #: lib/checkout_op.tcl:478 #, tcl-format @@ -866,244 +868,235 @@ msgstr "" "起こるはずのないエラーです。あきらめて %s を終了します。" #: lib/choose_font.tcl:39 -#, fuzzy msgid "Select" -msgstr "全て選択" +msgstr "選択" #: lib/choose_font.tcl:53 msgid "Font Family" -msgstr "" +msgstr "フォント・ファミリー" #: lib/choose_font.tcl:73 -#, fuzzy msgid "Font Size" -msgstr "フォントを小さく" +msgstr "フォントの大きさ" #: lib/choose_font.tcl:90 msgid "Font Example" -msgstr "" +msgstr "フォント・サンプル" #: lib/choose_font.tcl:101 msgid "" "This is example text.\n" "If you like this text, it can be your font." msgstr "" +"これはサンプル文です。\n" +"このフォントが気に入ればお使いになれます。" #: lib/choose_repository.tcl:25 msgid "Git Gui" -msgstr "" +msgstr "Git GUI" #: lib/choose_repository.tcl:69 lib/choose_repository.tcl:204 -#, fuzzy msgid "Create New Repository" -msgstr "元のリポジトリ" +msgstr "新しいリポジトリを作る" #: lib/choose_repository.tcl:74 lib/choose_repository.tcl:291 -#, fuzzy msgid "Clone Existing Repository" -msgstr "送り先リポジトリ" +msgstr "既存リポジトリを複製する" #: lib/choose_repository.tcl:79 lib/choose_repository.tcl:800 -#, fuzzy msgid "Open Existing Repository" -msgstr "送り先リポジトリ" +msgstr "既存リポジトリを開く" #: lib/choose_repository.tcl:91 msgid "Next >" -msgstr "" +msgstr "次 >" #: lib/choose_repository.tcl:152 -#, fuzzy, tcl-format +#, tcl-format msgid "Location %s already exists." -msgstr "'%s'というブランチは既に存在します。" +msgstr "'%s' は既に存在します。" #: lib/choose_repository.tcl:158 lib/choose_repository.tcl:165 #: lib/choose_repository.tcl:172 -#, fuzzy, tcl-format +#, tcl-format msgid "Failed to create repository %s:" -msgstr "完全にオプションを保存できません:" +msgstr "リポジトリ %s を作製できません:" #: lib/choose_repository.tcl:209 lib/choose_repository.tcl:309 msgid "Directory:" -msgstr "" +msgstr "ディレクトリ:" #: lib/choose_repository.tcl:238 lib/choose_repository.tcl:363 #: lib/choose_repository.tcl:834 -#, fuzzy msgid "Git Repository" -msgstr "リポジトリ" +msgstr "GIT リポジトリ" #: lib/choose_repository.tcl:253 lib/choose_repository.tcl:260 -#, fuzzy, tcl-format +#, tcl-format msgid "Directory %s already exists." -msgstr "'%s'というブランチは既に存在します。" +msgstr "ディレクトリ '%s' は既に存在します。" #: lib/choose_repository.tcl:265 -#, fuzzy, tcl-format +#, tcl-format msgid "File %s already exists." -msgstr "'%s'というブランチは既に存在します。" +msgstr "ファイル '%s' は既に存在します。" #: lib/choose_repository.tcl:286 -#, fuzzy msgid "Clone" -msgstr "閉じる" +msgstr "複製" #: lib/choose_repository.tcl:299 msgid "URL:" -msgstr "" +msgstr "URL:" #: lib/choose_repository.tcl:319 msgid "Clone Type:" -msgstr "" +msgstr "複製方式:" #: lib/choose_repository.tcl:325 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" -msgstr "" +msgstr "標準(高速・中冗長度・ハードリンク)" #: lib/choose_repository.tcl:331 msgid "Full Copy (Slower, Redundant Backup)" -msgstr "" +msgstr "全複写(低速・冗長バックアップ)" #: lib/choose_repository.tcl:337 msgid "Shared (Fastest, Not Recommended, No Backup)" -msgstr "" +msgstr "共有(最高速・非推奨・バックアップ無し)" #: lib/choose_repository.tcl:369 lib/choose_repository.tcl:418 #: lib/choose_repository.tcl:560 lib/choose_repository.tcl:630 #: lib/choose_repository.tcl:840 lib/choose_repository.tcl:848 -#, fuzzy, tcl-format +#, tcl-format msgid "Not a Git repository: %s" -msgstr "リポジトリが選択されていません。" +msgstr "Git リポジトリではありません: %s" #: lib/choose_repository.tcl:405 msgid "Standard only available for local repository." -msgstr "" +msgstr "標準方式は同一計算機上のリポジトリにのみ使えます。" #: lib/choose_repository.tcl:409 msgid "Shared only available for local repository." -msgstr "" +msgstr "共有方式は同一計算機上のリポジトリにのみ使えます。" #: lib/choose_repository.tcl:439 msgid "Failed to configure origin" -msgstr "" +msgstr "origin を設定できませんでした" #: lib/choose_repository.tcl:451 msgid "Counting objects" -msgstr "" +msgstr "オブジェクトを数えています" #: lib/choose_repository.tcl:452 msgid "buckets" -msgstr "" +msgstr "バケツ" #: lib/choose_repository.tcl:476 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" -msgstr "" +msgstr "objects/info/alternates を複写できません: %s" #: lib/choose_repository.tcl:512 -#, fuzzy, tcl-format +#, tcl-format msgid "Nothing to clone from %s." -msgstr "%s から新しい変更をフェッチしています" +msgstr "%s から複製する内容はありません" #: lib/choose_repository.tcl:514 lib/choose_repository.tcl:728 #: lib/choose_repository.tcl:740 msgid "The 'master' branch has not been initialized." -msgstr "" +msgstr "'master' ブランチが初期化されていません" #: lib/choose_repository.tcl:527 msgid "Hardlinks are unavailable. Falling back to copying." -msgstr "" +msgstr "ハードリンクが作れないので、コピーします" #: lib/choose_repository.tcl:539 -#, fuzzy, tcl-format +#, tcl-format msgid "Cloning from %s" -msgstr "%s から %s をフェッチしています" +msgstr "%s から複製しています" #: lib/choose_repository.tcl:570 -#, fuzzy msgid "Copying objects" -msgstr "データベース圧縮" +msgstr "オブジェクトを複写しています" #: lib/choose_repository.tcl:571 msgid "KiB" -msgstr "" +msgstr "KiB" #: lib/choose_repository.tcl:595 #, tcl-format msgid "Unable to copy object: %s" -msgstr "" +msgstr "オブジェクトを複写できません: %s" #: lib/choose_repository.tcl:605 msgid "Linking objects" -msgstr "" +msgstr "オブジェクトを連結しています" #: lib/choose_repository.tcl:606 msgid "objects" -msgstr "" +msgstr "オブジェクト" #: lib/choose_repository.tcl:614 #, tcl-format msgid "Unable to hardlink object: %s" -msgstr "" +msgstr "オブジェクトをハードリンクできません: %s" #: lib/choose_repository.tcl:669 msgid "Cannot fetch branches and objects. See console output for details." -msgstr "" +msgstr "ブランチやオブジェクトを取得できません。コンソール出力を見て下さい" #: lib/choose_repository.tcl:680 msgid "Cannot fetch tags. See console output for details." -msgstr "" +msgstr "タグを取得できません。コンソール出力を見て下さい" #: lib/choose_repository.tcl:704 msgid "Cannot determine HEAD. See console output for details." -msgstr "" +msgstr "HEAD を確定できません。コンソール出力を見て下さい" #: lib/choose_repository.tcl:713 #, tcl-format msgid "Unable to cleanup %s" -msgstr "" +msgstr "%s を掃除できません" #: lib/choose_repository.tcl:719 -#, fuzzy msgid "Clone failed." -msgstr "中断に失敗しました。" +msgstr "複写に失敗しました。" #: lib/choose_repository.tcl:726 msgid "No default branch obtained." -msgstr "" +msgstr "デフォールト・ブランチが取得されませんでした" #: lib/choose_repository.tcl:737 #, tcl-format msgid "Cannot resolve %s as a commit." -msgstr "" +msgstr "%s をコミットとして解釈できません" #: lib/choose_repository.tcl:749 -#, fuzzy msgid "Creating working directory" -msgstr "作業ディレクトリがありません" +msgstr "作業ディレクトリを作成しています" #: lib/choose_repository.tcl:750 lib/index.tcl:15 lib/index.tcl:80 #: lib/index.tcl:149 msgid "files" -msgstr "" +msgstr "ファイル" #: lib/choose_repository.tcl:779 msgid "Initial file checkout failed." -msgstr "" +msgstr "初期チェックアウトに失敗しました" #: lib/choose_repository.tcl:795 msgid "Open" -msgstr "" +msgstr "開く" #: lib/choose_repository.tcl:805 -#, fuzzy msgid "Repository:" -msgstr "リポジトリ" +msgstr "リポジトリ:" #: lib/choose_repository.tcl:854 -#, fuzzy, tcl-format +#, tcl-format msgid "Failed to open repository %s:" -msgstr "完全にオプションを保存できません:" +msgstr "リポジトリ %s を開けません:" #: lib/choose_rev.tcl:53 msgid "This Detached Checkout" @@ -1140,11 +1133,11 @@ msgstr "リビジョン式が空です。" #: lib/choose_rev.tcl:530 msgid "Updated" -msgstr "" +msgstr "更新しました" #: lib/choose_rev.tcl:558 msgid "URL" -msgstr "" +msgstr "URL" #: lib/commit.tcl:9 msgid "" @@ -1258,7 +1251,7 @@ msgstr "write-tree が失敗しました:" #: lib/commit.tcl:275 #, tcl-format msgid "Commit %s appears to be corrupt" -msgstr "" +msgstr "コミット %s は壊れています" #: lib/commit.tcl:279 msgid "" @@ -1281,7 +1274,7 @@ msgstr "コミットする変更がありません。" #: lib/commit.tcl:303 #, tcl-format msgid "warning: Tcl does not support encoding '%s'." -msgstr "" +msgstr "警告: Tcl はエンコーディング '%s' をサポートしていません" #: lib/commit.tcl:317 msgid "commit-tree failed:" @@ -1354,11 +1347,16 @@ msgid "" "\n" "Compress the database now?" msgstr "" +"このリポジトリにはおおよそ %i 個の個別オブジェクトがあります\n" +"\n" +"最適な性能を保つために、%i 個以上の個別オブジェクトを作る毎にデータベースを圧縮することを推奨します\n" +"\n" +"データベースを圧縮しますか?" #: lib/date.tcl:25 -#, fuzzy, tcl-format +#, tcl-format msgid "Invalid date from Git: %s" -msgstr "無効なリビジョン: %s" +msgstr "Git から出た無効な日付: %s" #: lib/diff.tcl:42 #, tcl-format @@ -1383,14 +1381,14 @@ msgstr "" "同様な状態のファイルを探すために、自動的に再スキャンを開始します。" #: lib/diff.tcl:81 -#, fuzzy, tcl-format +#, tcl-format msgid "Loading diff of %s..." -msgstr "%s をロード中…" +msgstr "%s の変更点をロード中…" #: lib/diff.tcl:114 lib/diff.tcl:184 #, tcl-format msgid "Unable to display %s" -msgstr "" +msgstr "%s を表示できません" #: lib/diff.tcl:115 msgid "Error loading file:" @@ -1398,11 +1396,11 @@ msgstr "ファイルを読む際のエラーです:" #: lib/diff.tcl:122 msgid "Git Repository (subproject)" -msgstr "" +msgstr "Git リポジトリ(サブプロジェクト)" #: lib/diff.tcl:134 msgid "* Binary file (not showing content)." -msgstr "" +msgstr "* バイナリファイル(内容は表示しません)" #: lib/diff.tcl:185 msgid "Error loading diff:" @@ -1429,14 +1427,14 @@ msgid "You must correct the above errors before committing." msgstr "コミットする前に、以上のエラーを修正して下さい" #: lib/index.tcl:241 -#, fuzzy, tcl-format +#, tcl-format msgid "Unstaging %s from commit" -msgstr "コミットから降ろす" +msgstr "コミットから '%s' を降ろす" #: lib/index.tcl:285 -#, fuzzy, tcl-format +#, tcl-format msgid "Adding %s" -msgstr "%s を読んでいます…" +msgstr "コミットに %s を加えています" #: lib/index.tcl:340 #, tcl-format @@ -1651,41 +1649,37 @@ msgid "New Branch Name Template" msgstr "新しいブランチ名のテンプレート" #: lib/option.tcl:176 -#, fuzzy msgid "Change Font" -msgstr "主フォント" +msgstr "フォントを変更" #: lib/option.tcl:180 #, tcl-format msgid "Choose %s" -msgstr "" +msgstr "%s を選択" #: lib/option.tcl:186 msgid "pt." -msgstr "" +msgstr "ポイント" #: lib/option.tcl:200 msgid "Preferences" -msgstr "" +msgstr "設定" #: lib/option.tcl:235 msgid "Failed to completely save options:" msgstr "完全にオプションを保存できません:" #: lib/remote.tcl:165 -#, fuzzy msgid "Prune from" -msgstr "%s から刈る…" +msgstr "から刈込む…" #: lib/remote.tcl:170 -#, fuzzy msgid "Fetch from" -msgstr "%s からフェッチ…" +msgstr "取得元" #: lib/remote.tcl:213 -#, fuzzy msgid "Push to" -msgstr "プッシュ" +msgstr "プッシュ先" #: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34 msgid "Delete Remote Branch" @@ -1724,12 +1718,15 @@ msgid "A branch is required for 'Merged Into'." msgstr "'マージ先' にはブランチが必要です。" #: lib/remote_branch_delete.tcl:184 -#, fuzzy, tcl-format +#, tcl-format msgid "" "The following branches are not completely merged into %s:\n" "\n" " - %s" -msgstr "以下のブランチは %s に完全にマージされていません:" +msgstr "" +"以下のブランチは %s に完全にマージされていません:\n" +"\n" +" - %s" #: lib/remote_branch_delete.tcl:189 #, tcl-format @@ -1782,9 +1779,9 @@ msgid "%s ... %*i of %*i %s (%3i%%)" msgstr "%1$s ... %3$*i %4$s 中の %$2*i (%5$3i%%)" #: lib/transport.tcl:6 -#, fuzzy, tcl-format +#, tcl-format msgid "fetch %s" -msgstr "フェッチ" +msgstr "%s を取得" #: lib/transport.tcl:7 #, tcl-format @@ -1794,7 +1791,7 @@ msgstr "%s から新しい変更をフェッチしています" #: lib/transport.tcl:18 #, tcl-format msgid "remote prune %s" -msgstr "" +msgstr "遠隔刈込 %s" #: lib/transport.tcl:19 #, tcl-format @@ -1804,7 +1801,7 @@ msgstr "%s から削除されたトラッキング・ブランチを刈ってい #: lib/transport.tcl:25 lib/transport.tcl:71 #, tcl-format msgid "push %s" -msgstr "" +msgstr "%s をプッシュ" #: lib/transport.tcl:26 #, tcl-format @@ -1834,7 +1831,7 @@ msgstr "通信オプション" #: lib/transport.tcl:160 msgid "Force overwrite existing branch (may discard changes)" -msgstr "" +msgstr "既存ブランチを上書き(変更を破棄する可能性があります)" #: lib/transport.tcl:164 msgid "Use thin pack (for slow network connections)" @@ -1844,11 +1841,3 @@ msgstr "Thin Pack を使う(遅いネットワーク接続)" msgid "Include tags" msgstr "タグを含める" -#~ msgid "Cannot find the git directory:" -#~ msgstr "git ディレクトリが見つかりません:" - -#~ msgid "Unstaged Changes (Will Not Be Committed)" -#~ msgstr "ステージングされていない(コミット未予定の)変更" - -#~ msgid "Push to %s..." -#~ msgstr "%s へプッシュ…" From 6ea10797deb7699c35a2b097938bf02aabc29e45 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 31 Oct 2007 21:14:01 -0700 Subject: [PATCH 013/107] git-gui: Update Japanese strings (part 2) Resolve an earlier suggestion from Christian. Signed-off-by: Shawn O. Pearce --- po/ja.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/po/ja.po b/po/ja.po index e4491f704c..f3a547b1b9 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1776,7 +1776,7 @@ msgstr "アイコンが書けません:" #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" -msgstr "%1$s ... %3$*i %4$s 中の %$2*i (%5$3i%%)" +msgstr "%1$s ... %4$*i %6$s 中の %2$*i (%7$3i%%)" #: lib/transport.tcl:6 #, tcl-format From 48b8d2b3792339d4dbd37802db8ec797361dd1fe Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 1 Nov 2007 00:31:36 -0400 Subject: [PATCH 014/107] git-gui: Allow users to set font weights to bold Previously we allowed users to tweak their font weight to be bold by setting it manually in their ~/.gitconfig prior to starting git-gui. This was broken in ae0754ac9a24afa2693246222fc078fe9c133b3a when Simon set the font weight to normal by default, overridding whatever we found from the ~/.gitconfig file. Signed-off-by: Shawn O. Pearce --- git-gui.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/git-gui.sh b/git-gui.sh index a7227ac1b6..b41e107d94 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -551,8 +551,15 @@ proc apply_config {} { set name [lindex $option 0] set font [lindex $option 1] if {[catch { + set need_weight 1 foreach {cn cv} $repo_config(gui.$name) { - font configure $font $cn $cv -weight normal + if {$cn eq {-weight}} { + set need_weight 0 + } + font configure $font $cn $cv + } + if {$need_weight} { + font configure $font -weight normal } } err]} { error_popup [strcat [mc "Invalid font specified in %s:" "gui.$name"] "\n\n$err"] From 23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 2 Nov 2007 13:32:58 -0700 Subject: [PATCH 015/107] Simplify topo-sort logic .. by not using quite so much indirection. This currently grows the "struct commit" a bit, which could be avoided by using a union for "util" and "indegree" (the topo-sort used to use "util" anyway, so you cannot use them together), but for now the goal of this was to simplify, not optimize. Signed-off-by: Linus Torvalds --- commit.c | 148 ++++++++++++++++++----------------------------------- commit.h | 20 +------- revision.c | 7 +-- revision.h | 4 +- 4 files changed, 54 insertions(+), 125 deletions(-) diff --git a/commit.c b/commit.c index 8262f6ac58..ab4eb8bdd1 100644 --- a/commit.c +++ b/commit.c @@ -9,22 +9,6 @@ int save_commit_buffer = 1; -struct sort_node -{ - /* - * the number of children of the associated commit - * that also occur in the list being sorted. - */ - unsigned int indegree; - - /* - * reference to original list item that we will re-use - * on output. - */ - struct commit_list * list_item; - -}; - const char *commit_type = "commit"; static struct cmt_fmt_map { @@ -1149,69 +1133,38 @@ struct commit *pop_commit(struct commit_list **stack) return item; } -void topo_sort_default_setter(struct commit *c, void *data) -{ - c->util = data; -} - -void *topo_sort_default_getter(struct commit *c) -{ - return c->util; -} - /* * Performs an in-place topological sort on the list supplied. */ void sort_in_topological_order(struct commit_list ** list, int lifo) { - sort_in_topological_order_fn(list, lifo, topo_sort_default_setter, - topo_sort_default_getter); -} + struct commit_list *next, *orig = *list; + struct commit_list *work, **insert; + struct commit_list **pptr; -void sort_in_topological_order_fn(struct commit_list ** list, int lifo, - topo_sort_set_fn_t setter, - topo_sort_get_fn_t getter) -{ - struct commit_list * next = *list; - struct commit_list * work = NULL, **insert; - struct commit_list ** pptr = list; - struct sort_node * nodes; - struct sort_node * next_nodes; - int count = 0; - - /* determine the size of the list */ - while (next) { - next = next->next; - count++; - } - - if (!count) + if (!orig) return; - /* allocate an array to help sort the list */ - nodes = xcalloc(count, sizeof(*nodes)); - /* link the list to the array */ - next_nodes = nodes; - next=*list; - while (next) { - next_nodes->list_item = next; - setter(next->item, next_nodes); - next_nodes++; - next = next->next; + *list = NULL; + + /* Mark them and clear the indegree */ + for (next = orig; next; next = next->next) { + struct commit *commit = next->item; + commit->object.flags |= TOPOSORT; + commit->indegree = 0; } + /* update the indegree */ - next=*list; - while (next) { + for (next = orig; next; next = next->next) { struct commit_list * parents = next->item->parents; while (parents) { - struct commit * parent=parents->item; - struct sort_node * pn = (struct sort_node *) getter(parent); + struct commit *parent = parents->item; - if (pn) - pn->indegree++; - parents=parents->next; + if (parent->object.flags & TOPOSORT) + parent->indegree++; + parents = parents->next; } - next=next->next; } + /* * find the tips * @@ -1219,55 +1172,56 @@ void sort_in_topological_order_fn(struct commit_list ** list, int lifo, * * the tips serve as a starting set for the work queue. */ - next=*list; + work = NULL; insert = &work; - while (next) { - struct sort_node * node = (struct sort_node *) getter(next->item); + for (next = orig; next; next = next->next) { + struct commit *commit = next->item; - if (node->indegree == 0) { - insert = &commit_list_insert(next->item, insert)->next; - } - next=next->next; + if (!commit->indegree) + insert = &commit_list_insert(commit, insert)->next; } /* process the list in topological order */ if (!lifo) sort_by_date(&work); + + pptr = list; + *list = NULL; while (work) { - struct commit * work_item = pop_commit(&work); - struct sort_node * work_node = (struct sort_node *) getter(work_item); - struct commit_list * parents = work_item->parents; + struct commit *commit; + struct commit_list *parents, *work_item; - while (parents) { - struct commit * parent=parents->item; - struct sort_node * pn = (struct sort_node *) getter(parent); + work_item = work; + work = work_item->next; + work_item->next = NULL; - if (pn) { - /* - * parents are only enqueued for emission - * when all their children have been emitted thereby - * guaranteeing topological order. - */ - pn->indegree--; - if (!pn->indegree) { - if (!lifo) - insert_by_date(parent, &work); - else - commit_list_insert(parent, &work); - } + commit = work_item->item; + for (parents = commit->parents; parents ; parents = parents->next) { + struct commit *parent=parents->item; + + if (!(parent->object.flags & TOPOSORT)) + continue; + + /* + * parents are only enqueued for emission + * when all their children have been emitted thereby + * guaranteeing topological order. + */ + if (!--parent->indegree) { + if (!lifo) + insert_by_date(parent, &work); + else + commit_list_insert(parent, &work); } - parents=parents->next; } /* * work_item is a commit all of whose children * have already been emitted. we can emit it now. */ - *pptr = work_node->list_item; - pptr = &(*pptr)->next; - *pptr = NULL; - setter(work_item, NULL); + commit->object.flags &= ~TOPOSORT; + *pptr = work_item; + pptr = &work_item->next; } - free(nodes); } /* merge-base stuff */ diff --git a/commit.h b/commit.h index 13b537293d..4ed0c1cf7f 100644 --- a/commit.h +++ b/commit.h @@ -14,6 +14,7 @@ struct commit_list { struct commit { struct object object; void *util; + unsigned int indegree; unsigned long date; struct commit_list *parents; struct tree *tree; @@ -84,31 +85,12 @@ void clear_commit_marks(struct commit *commit, unsigned int mark); /* * Performs an in-place topological sort of list supplied. * - * Pre-conditions for sort_in_topological_order: - * all commits in input list and all parents of those - * commits must have object.util == NULL - * - * Pre-conditions for sort_in_topological_order_fn: - * all commits in input list and all parents of those - * commits must have getter(commit) == NULL - * - * Post-conditions: * invariant of resulting list is: * a reachable from b => ord(b) < ord(a) * in addition, when lifo == 0, commits on parallel tracks are * sorted in the dates order. */ - -typedef void (*topo_sort_set_fn_t)(struct commit*, void *data); -typedef void* (*topo_sort_get_fn_t)(struct commit*); - -void topo_sort_default_setter(struct commit *c, void *data); -void *topo_sort_default_getter(struct commit *c); - void sort_in_topological_order(struct commit_list ** list, int lifo); -void sort_in_topological_order_fn(struct commit_list ** list, int lifo, - topo_sort_set_fn_t setter, - topo_sort_get_fn_t getter); struct commit_graft { unsigned char sha1[20]; diff --git a/revision.c b/revision.c index e76da0d448..e85b4af392 100644 --- a/revision.c +++ b/revision.c @@ -677,9 +677,6 @@ void init_revisions(struct rev_info *revs, const char *prefix) revs->prune_fn = NULL; revs->prune_data = NULL; - revs->topo_setter = topo_sort_default_setter; - revs->topo_getter = topo_sort_default_getter; - revs->commit_format = CMIT_FMT_DEFAULT; diff_setup(&revs->diffopt); @@ -1303,9 +1300,7 @@ int prepare_revision_walk(struct rev_info *revs) if (limit_list(revs) < 0) return -1; if (revs->topo_order) - sort_in_topological_order_fn(&revs->commits, revs->lifo, - revs->topo_setter, - revs->topo_getter); + sort_in_topological_order(&revs->commits, revs->lifo); return 0; } diff --git a/revision.h b/revision.h index 98a0a8f3fa..1f645764a5 100644 --- a/revision.h +++ b/revision.h @@ -10,6 +10,7 @@ #define CHILD_SHOWN (1u<<6) #define ADDED (1u<<7) /* Parents already parsed and added? */ #define SYMMETRIC_LEFT (1u<<8) +#define TOPOSORT (1u<<9) /* In the active toposort list.. */ struct rev_info; struct log_info; @@ -96,9 +97,6 @@ struct rev_info { struct diff_options diffopt; struct diff_options pruning; - topo_sort_set_fn_t topo_setter; - topo_sort_get_fn_t topo_getter; - struct reflog_walk_info *reflog_info; }; From cdcefbc971d8fcdd293750af7571d4c715f86964 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 3 Nov 2007 11:11:10 -0700 Subject: [PATCH 016/107] Add "--early-output" log flag for interactive GUI use This adds support for "--early-output[=n]" as a flag to the "git log" family of commands. This allows GUI programs to state that they want to get some output early, in order to be able to show at least something quickly, even if the full output may take longer to generate. If no count is specified, a default count of a hundred commits will be used, although the actual numbr of commits output may be smaller depending on how many commits were actually found in the first tenth of a second (or if *everything* was found before that, in which case no early output will be provided, and only the final list is made available). When the full list is generated, there will be a "Final output:" string prepended to it, regardless of whether any early commits were shown or not, so that the consumer can always know the difference between early output and the final list. Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- builtin-log.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ revision.c | 22 +++++++++++++++++ revision.h | 4 +++ 3 files changed, 93 insertions(+) diff --git a/builtin-log.c b/builtin-log.c index 8b2bf632c5..4e9d0cb69c 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -77,11 +77,78 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, } } +static void log_show_early(struct rev_info *revs, struct commit_list *list) +{ + int i = revs->early_output; + + sort_in_topological_order(&list, revs->lifo); + while (list && i) { + struct commit *commit = list->item; + log_tree_commit(revs, commit); + list = list->next; + i--; + } +} + +static void early_output(int signal) +{ + show_early_output = log_show_early; +} + +static void setup_early_output(struct rev_info *rev) +{ + struct sigaction sa; + struct itimerval v; + + /* + * Set up the signal handler, minimally intrusively: + * we only set a single volatile integer word (not + * using sigatomic_t - trying to avoid unnecessary + * system dependencies and headers), and using + * SA_RESTART. + */ + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = early_output; + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sigaction(SIGALRM, &sa, NULL); + + /* + * If we can get the whole output in less than a + * tenth of a second, don't even bother doing the + * early-output thing.. + * + * This is a one-time-only trigger. + */ + memset(&v, 0, sizeof(v)); + v.it_value.tv_sec = 0; + v.it_value.tv_usec = 100000; + setitimer(ITIMER_REAL, &v, NULL); +} + +static void finish_early_output(struct rev_info *rev) +{ + signal(SIGALRM, SIG_IGN); + if (rev->shown_one) { + rev->shown_one = 0; + if (rev->commit_format != CMIT_FMT_ONELINE) + putchar(rev->diffopt.line_termination); + } + printf("Final output:\n"); +} + static int cmd_log_walk(struct rev_info *rev) { struct commit *commit; + if (rev->early_output) + setup_early_output(rev); + prepare_revision_walk(rev); + + if (rev->early_output) + finish_early_output(rev); + while ((commit = get_revision(rev)) != NULL) { log_tree_commit(rev, commit); if (!rev->reflog_info) { diff --git a/revision.c b/revision.c index e85b4af392..26610bb42d 100644 --- a/revision.c +++ b/revision.c @@ -10,6 +10,8 @@ #include "reflog-walk.h" #include "patch-ids.h" +volatile show_early_output_fn_t show_early_output; + static char *path_name(struct name_path *path, const char *name) { struct name_path *p; @@ -533,6 +535,7 @@ static int limit_list(struct rev_info *revs) struct commit_list *entry = list; struct commit *commit = list->item; struct object *obj = &commit->object; + show_early_output_fn_t show; list = list->next; free(entry); @@ -550,6 +553,13 @@ static int limit_list(struct rev_info *revs) if (revs->min_age != -1 && (commit->date > revs->min_age)) continue; p = &commit_list_insert(commit, p)->next; + + show = show_early_output; + if (!show) + continue; + + show(revs, newlist); + show_early_output = NULL; } if (revs->cherry_pick) cherry_pick_list(newlist, revs); @@ -991,6 +1001,18 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch revs->topo_order = 1; continue; } + if (!prefixcmp(arg, "--early-output")) { + int count = 100; + switch (arg[14]) { + case '=': + count = atoi(arg+15); + /* Fallthrough */ + case 0: + revs->topo_order = 1; + revs->early_output = count; + continue; + } + } if (!strcmp(arg, "--parents")) { revs->parents = 1; continue; diff --git a/revision.h b/revision.h index 1f645764a5..d8a5a5021f 100644 --- a/revision.h +++ b/revision.h @@ -30,6 +30,8 @@ struct rev_info { void *prune_data; prune_fn_t *prune_fn; + unsigned int early_output; + /* Traversal flags */ unsigned int dense:1, no_merges:1, @@ -105,6 +107,8 @@ struct rev_info { #define REV_TREE_DIFFERENT 2 /* revision.c */ +typedef void (*show_early_output_fn_t)(struct rev_info *, struct commit_list *); +volatile show_early_output_fn_t show_early_output; extern void init_revisions(struct rev_info *revs, const char *prefix); extern int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def); From 252a7c02354a3e2825cfde3c5053a04acc07be9c Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 4 Nov 2007 12:12:05 -0800 Subject: [PATCH 017/107] Enhance --early-output format This makes --early-output a bit more advanced, and actually makes it generate multiple "Final output:" headers as it updates things asynchronously. I realize that the "Final output:" line is now illogical, since it's not really final until it also says "done", but It now _always_ generates a "Final output:" header in front of any commit list, and that output header gives you a *guess* at the maximum number of commits available. However, it should be noted that the guess can be completely off: I do a reasonable job estimating it, but it is not meant to be exact. So what happens is that you may get output like this: - at 0.1 seconds: Final output: 2 incomplete .. 2 commits listed .. - half a second later: Final output: 33 incomplete .. 33 commits listed .. - another half a second after that: Final output: 71 incomplete .. 71 commits listed .. - another half second later: Final output: 136 incomplete .. 100 commits listed: we hit the --early-output limit, and .. will only output 100 commits, and after this you'll not .. see an "incomplete" report any more since you got as much .. early output as you asked for! - .. and then finally: Final output: 73106 done .. all the commits .. The above is a real-life scenario on my current kernel tree after having flushed all the caches. Tested with the experimental gitk patch that Paul sent out, and by looking at the actual log output (and verifying that my commit count guesses actually match real life fairly well). Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- builtin-log.c | 88 +++++++++++++++++++++++++++++++++++++++++++-------- revision.c | 63 ++++++++++++++++++++---------------- revision.h | 8 +++++ 3 files changed, 119 insertions(+), 40 deletions(-) diff --git a/builtin-log.c b/builtin-log.c index 4e9d0cb69c..981f38872c 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -77,17 +77,85 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, } } +/* + * This gives a rough estimate for how many commits we + * will print out in the list. + */ +static int estimate_commit_count(struct rev_info *rev, struct commit_list *list) +{ + int n = 0; + + while (list) { + struct commit *commit = list->item; + unsigned int flags = commit->object.flags; + + list = list->next; + if (flags & UNINTERESTING) + continue; + if (rev->prune_fn && rev->dense && !(flags & TREECHANGE)) { + if (commit->parents && !commit->parents->next) + continue; + } + n++; + } + return n; +} + +static void show_early_header(struct rev_info *rev, const char *stage, int nr) +{ + if (rev->shown_one) { + rev->shown_one = 0; + if (rev->commit_format != CMIT_FMT_ONELINE) + putchar(rev->diffopt.line_termination); + } + printf("Final output: %d %s\n", nr, stage); +} + +struct itimerval early_output_timer; + static void log_show_early(struct rev_info *revs, struct commit_list *list) { int i = revs->early_output; + int show_header = 1; sort_in_topological_order(&list, revs->lifo); while (list && i) { struct commit *commit = list->item; - log_tree_commit(revs, commit); + switch (simplify_commit(revs, commit)) { + case commit_show: + if (show_header) { + int n = estimate_commit_count(revs, list); + show_early_header(revs, "incomplete", n); + show_header = 0; + } + log_tree_commit(revs, commit); + i--; + break; + case commit_ignore: + break; + case commit_error: + return; + } list = list->next; - i--; } + + /* Did we already get enough commits for the early output? */ + if (!i) + return; + + /* + * ..if no, then repeat it twice a second until we + * do. + * + * NOTE! We don't use "it_interval", because if the + * reader isn't listening, we want our output to be + * throttled by the writing, and not have the timer + * trigger every second even if we're blocked on a + * reader! + */ + early_output_timer.it_value.tv_sec = 0; + early_output_timer.it_value.tv_usec = 500000; + setitimer(ITIMER_REAL, &early_output_timer, NULL); } static void early_output(int signal) @@ -98,7 +166,6 @@ static void early_output(int signal) static void setup_early_output(struct rev_info *rev) { struct sigaction sa; - struct itimerval v; /* * Set up the signal handler, minimally intrusively: @@ -120,21 +187,16 @@ static void setup_early_output(struct rev_info *rev) * * This is a one-time-only trigger. */ - memset(&v, 0, sizeof(v)); - v.it_value.tv_sec = 0; - v.it_value.tv_usec = 100000; - setitimer(ITIMER_REAL, &v, NULL); + early_output_timer.it_value.tv_sec = 0; + early_output_timer.it_value.tv_usec = 100000; + setitimer(ITIMER_REAL, &early_output_timer, NULL); } static void finish_early_output(struct rev_info *rev) { + int n = estimate_commit_count(rev, rev->commits); signal(SIGALRM, SIG_IGN); - if (rev->shown_one) { - rev->shown_one = 0; - if (rev->commit_format != CMIT_FMT_ONELINE) - putchar(rev->diffopt.line_termination); - } - printf("Final output:\n"); + show_early_header(rev, "done", n); } static int cmd_log_walk(struct rev_info *rev) diff --git a/revision.c b/revision.c index 26610bb42d..2e6121fa1b 100644 --- a/revision.c +++ b/revision.c @@ -1398,6 +1398,36 @@ static int commit_match(struct commit *commit, struct rev_info *opt) commit->buffer, strlen(commit->buffer)); } +enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit) +{ + if (commit->object.flags & SHOWN) + return commit_ignore; + if (revs->unpacked && has_sha1_pack(commit->object.sha1, revs->ignore_packed)) + return commit_ignore; + if (commit->object.flags & UNINTERESTING) + return commit_ignore; + if (revs->min_age != -1 && (commit->date > revs->min_age)) + return commit_ignore; + if (revs->no_merges && commit->parents && commit->parents->next) + return commit_ignore; + if (!commit_match(commit, revs)) + return commit_ignore; + if (revs->prune_fn && revs->dense) { + /* Commit without changes? */ + if (!(commit->object.flags & TREECHANGE)) { + /* drop merges unless we want parenthood */ + if (!revs->parents) + return commit_ignore; + /* non-merge - always ignore it */ + if (!commit->parents || !commit->parents->next) + return commit_ignore; + } + if (revs->parents && rewrite_parents(revs, commit) < 0) + return commit_error; + } + return commit_show; +} + static struct commit *get_revision_1(struct rev_info *revs) { if (!revs->commits) @@ -1425,36 +1455,15 @@ static struct commit *get_revision_1(struct rev_info *revs) if (add_parents_to_list(revs, commit, &revs->commits) < 0) return NULL; } - if (commit->object.flags & SHOWN) - continue; - if (revs->unpacked && has_sha1_pack(commit->object.sha1, - revs->ignore_packed)) - continue; - - if (commit->object.flags & UNINTERESTING) + switch (simplify_commit(revs, commit)) { + case commit_ignore: continue; - if (revs->min_age != -1 && (commit->date > revs->min_age)) - continue; - if (revs->no_merges && - commit->parents && commit->parents->next) - continue; - if (!commit_match(commit, revs)) - continue; - if (revs->prune_fn && revs->dense) { - /* Commit without changes? */ - if (!(commit->object.flags & TREECHANGE)) { - /* drop merges unless we want parenthood */ - if (!revs->parents) - continue; - /* non-merge - always ignore it */ - if (!commit->parents || !commit->parents->next) - continue; - } - if (revs->parents && rewrite_parents(revs, commit) < 0) - return NULL; + case commit_error: + return NULL; + default: + return commit; } - return commit; } while (revs->commits); return NULL; } diff --git a/revision.h b/revision.h index d8a5a5021f..2232247be4 100644 --- a/revision.h +++ b/revision.h @@ -133,4 +133,12 @@ extern void add_object(struct object *obj, extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name); +enum commit_action { + commit_ignore, + commit_show, + commit_error +}; + +extern enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit); + #endif From 53b2c823f6e862e0c83a4a25bab43e8c32e9c289 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 5 Nov 2007 13:22:34 -0800 Subject: [PATCH 018/107] revision walker: mini clean-up This removes the unnecessary indirection of "revs->prune_fn", since that function is always the same one (or NULL), and there is in fact not even an abstraction reason to make it a function (i.e. its not called from some other file and doesn't allow us to keep the function itself static or anything like that). It then just replaces it with a bit that says "prune or not", and if not pruning, every commit gets TREECHANGE. That in turn means that - if (!revs->prune_fn || (flags & TREECHANGE)) - if (revs->prune_fn && !(flags & TREECHANGE)) just become - if (flags & TREECHANGE) - if (!(flags & TREECHANGE)) respectively. Together with adding the "single_parent()" helper function, the "complex" conditional now becomes if (!(flags & TREECHANGE) && rev->dense && single_parent(commit)) continue; Also indirection of "revs->dense" checking is thrown away the same way, because TREECHANGE bit is set appropriately now. Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- builtin-log.c | 10 ++-------- builtin-rev-list.c | 14 +++++++------- commit.h | 5 +++++ revision.c | 27 ++++++++++++++++++++------- revision.h | 5 +---- 5 files changed, 35 insertions(+), 26 deletions(-) diff --git a/builtin-log.c b/builtin-log.c index 981f38872c..d6845bc7f8 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -88,15 +88,9 @@ static int estimate_commit_count(struct rev_info *rev, struct commit_list *list) while (list) { struct commit *commit = list->item; unsigned int flags = commit->object.flags; - list = list->next; - if (flags & UNINTERESTING) - continue; - if (rev->prune_fn && rev->dense && !(flags & TREECHANGE)) { - if (commit->parents && !commit->parents->next) - continue; - } - n++; + if ((flags & TREECHANGE) && !(flags & UNINTERESTING)) + n++; } return n; } diff --git a/builtin-rev-list.c b/builtin-rev-list.c index 697046723f..2dec8873f8 100644 --- a/builtin-rev-list.c +++ b/builtin-rev-list.c @@ -142,7 +142,7 @@ static int count_distance(struct commit_list *entry) if (commit->object.flags & (UNINTERESTING | COUNTED)) break; - if (!revs.prune_fn || (commit->object.flags & TREECHANGE)) + if (commit->object.flags & TREECHANGE) nr++; commit->object.flags |= COUNTED; p = commit->parents; @@ -198,7 +198,7 @@ static inline int halfway(struct commit_list *p, int nr) /* * Don't short-cut something we are not going to return! */ - if (revs.prune_fn && !(p->item->object.flags & TREECHANGE)) + if (!(p->item->object.flags & TREECHANGE)) return 0; if (DEBUG_BISECT) return 0; @@ -268,7 +268,7 @@ static struct commit_list *best_bisection(struct commit_list *list, int nr) int distance; unsigned flags = p->item->object.flags; - if (revs.prune_fn && !(flags & TREECHANGE)) + if (!(flags & TREECHANGE)) continue; distance = weight(p); if (nr - distance < distance) @@ -308,7 +308,7 @@ static struct commit_list *best_bisection_sorted(struct commit_list *list, int n int distance; unsigned flags = p->item->object.flags; - if (revs.prune_fn && !(flags & TREECHANGE)) + if (!(flags & TREECHANGE)) continue; distance = weight(p); if (nr - distance < distance) @@ -362,7 +362,7 @@ static struct commit_list *do_find_bisection(struct commit_list *list, p->item->util = &weights[n++]; switch (count_interesting_parents(commit)) { case 0: - if (!revs.prune_fn || (flags & TREECHANGE)) { + if (flags & TREECHANGE) { weight_set(p, 1); counted++; show_list("bisection 2 count one", @@ -435,7 +435,7 @@ static struct commit_list *do_find_bisection(struct commit_list *list, * add one for p itself if p is to be counted, * otherwise inherit it from q directly. */ - if (!revs.prune_fn || (flags & TREECHANGE)) { + if (flags & TREECHANGE) { weight_set(p, weight(q)+1); counted++; show_list("bisection 2 count one", @@ -482,7 +482,7 @@ static struct commit_list *find_bisection(struct commit_list *list, continue; p->next = last; last = p; - if (!revs.prune_fn || (flags & TREECHANGE)) + if (flags & TREECHANGE) nr++; on_list++; } diff --git a/commit.h b/commit.h index 4ed0c1cf7f..aa679867a9 100644 --- a/commit.h +++ b/commit.h @@ -117,4 +117,9 @@ extern int interactive_add(void); extern void add_files_to_cache(int verbose, const char *prefix, const char **files); extern int rerere(void); +static inline int single_parent(struct commit *commit) +{ + return commit->parents && !commit->parents->next; +} + #endif /* COMMIT_H */ diff --git a/revision.c b/revision.c index 2e6121fa1b..931f978af9 100644 --- a/revision.c +++ b/revision.c @@ -308,6 +308,14 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) struct commit_list **pp, *parent; int tree_changed = 0, tree_same = 0; + /* + * If we don't do pruning, everything is interesting + */ + if (!revs->prune) { + commit->object.flags |= TREECHANGE; + return; + } + if (!commit->tree) return; @@ -317,6 +325,15 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) return; } + /* + * Normal non-merge commit? If we don't want to make the + * history dense, we consider it always to be a change.. + */ + if (!revs->dense && !commit->parents->next) { + commit->object.flags |= TREECHANGE; + return; + } + pp = &commit->parents; while ((parent = *pp) != NULL) { struct commit *p = parent->item; @@ -415,8 +432,7 @@ static int add_parents_to_list(struct rev_info *revs, struct commit *commit, str * simplify the commit history and find the parent * that has no differences in the path set if one exists. */ - if (revs->prune_fn) - revs->prune_fn(revs, commit); + try_to_simplify_commit(revs, commit); if (revs->no_walk) return 0; @@ -684,9 +700,6 @@ void init_revisions(struct rev_info *revs, const char *prefix) revs->skip_count = -1; revs->max_count = -1; - revs->prune_fn = NULL; - revs->prune_data = NULL; - revs->commit_format = CMIT_FMT_DEFAULT; diff_setup(&revs->diffopt); @@ -1271,7 +1284,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch diff_tree_setup_paths(revs->prune_data, &revs->pruning); /* Can't prune commits with rename following: the paths change.. */ if (!revs->diffopt.follow_renames) - revs->prune_fn = try_to_simplify_commit; + revs->prune = 1; if (!revs->full_diff) diff_tree_setup_paths(revs->prune_data, &revs->diffopt); } @@ -1412,7 +1425,7 @@ enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit) return commit_ignore; if (!commit_match(commit, revs)) return commit_ignore; - if (revs->prune_fn && revs->dense) { + if (revs->prune && revs->dense) { /* Commit without changes? */ if (!(commit->object.flags & TREECHANGE)) { /* drop merges unless we want parenthood */ diff --git a/revision.h b/revision.h index 2232247be4..a79851449c 100644 --- a/revision.h +++ b/revision.h @@ -15,8 +15,6 @@ struct rev_info; struct log_info; -typedef void (prune_fn_t)(struct rev_info *revs, struct commit *commit); - struct rev_info { /* Starting list */ struct commit_list *commits; @@ -28,12 +26,11 @@ struct rev_info { /* Basic information */ const char *prefix; void *prune_data; - prune_fn_t *prune_fn; - unsigned int early_output; /* Traversal flags */ unsigned int dense:1, + prune:1, no_merges:1, no_walk:1, remove_empty_trees:1, From 21d4783538662143ef52ed6967c948ab27586232 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sun, 4 Nov 2007 11:30:53 +0100 Subject: [PATCH 019/107] Add a parseopt mode to git-rev-parse to bring parse-options to shell scripts. Signed-off-by: Pierre Habouzit Signed-off-by: Junio C Hamano --- Documentation/git-rev-parse.txt | 76 ++++++++++++++++++- builtin-rev-parse.c | 126 ++++++++++++++++++++++++++++++++ 2 files changed, 200 insertions(+), 2 deletions(-) diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt index 4758c33dee..329fce0aab 100644 --- a/Documentation/git-rev-parse.txt +++ b/Documentation/git-rev-parse.txt @@ -23,6 +23,13 @@ distinguish between them. OPTIONS ------- +--parseopt:: + Use `git-rev-parse` in option parsing mode (see PARSEOPT section below). + +--keep-dash-dash:: + Only meaningful in `--parseopt` mode. Tells the option parser to echo + out the first `--` met instead of skipping it. + --revs-only:: Do not output flags and parameters not meant for `git-rev-list` command. @@ -288,10 +295,75 @@ Here are a handful examples: C^@ I J F F^! D G H D F +PARSEOPT +-------- + +In `--parseopt` mode, `git-rev-parse` helps massaging options to bring to shell +scripts the same facilities C builtins have. It works as an option normalizer +(e.g. splits single switches aggregate values), a bit like `getopt(1)` does. + +It takes on the standard input the specification of the options to parse and +understand, and echoes on the standard output a line suitable for `sh(1)` `eval` +to replace the arguments with normalized ones. In case of error, it outputs +usage on the standard error stream, and exits with code 129. + +Input Format +~~~~~~~~~~~~ + +`git-rev-parse --parseopt` input format is fully text based. It has two parts, +separated by a line that contains only `--`. The lines before the separator +(should be more than one) are used for the usage. +The lines after the separator describe the options. + +Each line of options has this format: + +------------ +? SP+ help LF +------------ + +``:: + its format is the short option character, then the long option name + separated by a comma. Both parts are not required, though at least one + is necessary. `h,help`, `dry-run` and `f` are all three correct + ``. + +``:: + an `` tells the option parser if the option has an argument + (`=`), an optional one (`?` though its use is discouraged) or none + (no `` in that case). + +The remainder of the line, after stripping the spaces, is used +as the help associated to the option. + +Blank lines are ignored, and lines that don't match this specification are used +as option group headers (start the line with a space to create such +lines on purpose). + +Example +~~~~~~~ + +------------ +OPTS_SPEC="\ +some-command [options] ... + +some-command does foo and bar! +-- +h,help show the help + +foo some nifty option --foo +bar= some cool option --bar with an argument + + An option group Header +C? option C with an optional argument" + +eval `echo "$OPTS_SPEC" | git-rev-parse --parseopt -- "$@" || echo exit $?` +------------ + + Author ------ -Written by Linus Torvalds and -Junio C Hamano +Written by Linus Torvalds . +Junio C Hamano and Pierre Habouzit Documentation -------------- diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c index 8d78b69c90..054519bf28 100644 --- a/builtin-rev-parse.c +++ b/builtin-rev-parse.c @@ -8,6 +8,7 @@ #include "refs.h" #include "quote.h" #include "builtin.h" +#include "parse-options.h" #define DO_REVS 1 #define DO_NOREV 2 @@ -209,6 +210,128 @@ static int try_difference(const char *arg) return 0; } +static int parseopt_dump(const struct option *o, const char *arg, int unset) +{ + struct strbuf *parsed = o->value; + if (unset) + strbuf_addf(parsed, " --no-%s", o->long_name); + else if (o->short_name) + strbuf_addf(parsed, " -%c", o->short_name); + else + strbuf_addf(parsed, " --%s", o->long_name); + if (arg) { + strbuf_addch(parsed, ' '); + sq_quote_buf(parsed, arg); + } + return 0; +} + +static const char *skipspaces(const char *s) +{ + while (isspace(*s)) + s++; + return s; +} + +static int cmd_parseopt(int argc, const char **argv, const char *prefix) +{ + static int keep_dashdash = 0; + static char const * const parseopt_usage[] = { + "git-rev-parse --parseopt [options] -- [...]", + NULL + }; + static struct option parseopt_opts[] = { + OPT_BOOLEAN(0, "keep-dashdash", &keep_dashdash, + "keep the `--` passed as an arg"), + OPT_END(), + }; + + struct strbuf sb, parsed; + const char **usage = NULL; + struct option *opts = NULL; + int onb = 0, osz = 0, unb = 0, usz = 0; + + strbuf_init(&parsed, 0); + strbuf_addstr(&parsed, "set --"); + argc = parse_options(argc, argv, parseopt_opts, parseopt_usage, + PARSE_OPT_KEEP_DASHDASH); + if (argc < 1 || strcmp(argv[0], "--")) + usage_with_options(parseopt_usage, parseopt_opts); + + strbuf_init(&sb, 0); + /* get the usage up to the first line with a -- on it */ + for (;;) { + if (strbuf_getline(&sb, stdin, '\n') == EOF) + die("premature end of input"); + ALLOC_GROW(usage, unb + 1, usz); + if (!strcmp("--", sb.buf)) { + if (unb < 1) + die("no usage string given before the `--' separator"); + usage[unb] = NULL; + break; + } + usage[unb++] = strbuf_detach(&sb, NULL); + } + + /* parse: (|,|)[=?]? SP+ */ + while (strbuf_getline(&sb, stdin, '\n') != EOF) { + const char *s; + struct option *o; + + if (!sb.len) + continue; + + ALLOC_GROW(opts, onb + 1, osz); + memset(opts + onb, 0, sizeof(opts[onb])); + + o = &opts[onb++]; + s = strchr(sb.buf, ' '); + if (!s || *sb.buf == ' ') { + o->type = OPTION_GROUP; + o->help = xstrdup(skipspaces(s)); + continue; + } + + o->type = OPTION_CALLBACK; + o->help = xstrdup(skipspaces(s)); + o->value = &parsed; + o->callback = &parseopt_dump; + switch (s[-1]) { + case '=': + s--; + break; + case '?': + o->flags = PARSE_OPT_OPTARG; + s--; + break; + default: + o->flags = PARSE_OPT_NOARG; + break; + } + + if (s - sb.buf == 1) /* short option only */ + o->short_name = *sb.buf; + else if (sb.buf[1] != ',') /* long option only */ + o->long_name = xmemdupz(sb.buf, s - sb.buf); + else { + o->short_name = *sb.buf; + o->long_name = xmemdupz(sb.buf + 2, s - sb.buf - 2); + } + } + strbuf_release(&sb); + + /* put an OPT_END() */ + ALLOC_GROW(opts, onb + 1, osz); + memset(opts + onb, 0, sizeof(opts[onb])); + argc = parse_options(argc, argv, opts, usage, + keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0); + + strbuf_addf(&parsed, " --"); + sq_quote_argv(&parsed, argv, argc, 0); + puts(parsed.buf); + return 0; +} + int cmd_rev_parse(int argc, const char **argv, const char *prefix) { int i, as_is = 0, verify = 0; @@ -216,6 +339,9 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) git_config(git_default_config); + if (argc > 1 && !strcmp("--parseopt", argv[1])) + return cmd_parseopt(argc - 1, argv + 1, prefix); + for (i = 1; i < argc; i++) { const char *arg = argv[i]; From bac199b7b17cd12286a7d5393f4789574c2e1dc4 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sun, 4 Nov 2007 11:30:54 +0100 Subject: [PATCH 020/107] Update git-sh-setup(1) to allow transparent use of git-rev-parse --parseopt If you set OPTIONS_SPEC, git-sh-setups uses git-rev-parse --parseopt automatically. It also diverts usage to re-exec $0 with the -h option as parse-options.c will catch that. If you need git-rev-parse --parseopt to keep the `--` the user may have passed to your command, set OPTIONS_KEEPDASHDASH to a non empty value in your script. Signed-off-by: Pierre Habouzit Signed-off-by: Junio C Hamano --- git-sh-setup.sh | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 86d7d4c4e7..e1cf885983 100755 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -16,9 +16,36 @@ die() { exit 1 } -usage() { - die "Usage: $0 $USAGE" -} +if test -n "$OPTIONS_SPEC"; then + usage() { + exec "$0" -h + } + + parseopt_extra= + [ -n "$OPTIONS_KEEPDASHDASH" ] && + parseopt_extra="$parseopt_extra --keep-dashdash" + + eval `echo "$OPTIONS_SPEC" | git rev-parse --parseopt $parseopt_extra -- "$@" || echo exit $?` +else + usage() { + die "Usage: $0 $USAGE" + } + + if [ -z "$LONG_USAGE" ] + then + LONG_USAGE="Usage: $0 $USAGE" + else + LONG_USAGE="Usage: $0 $USAGE + +$LONG_USAGE" + fi + + case "$1" in + -h|--h|--he|--hel|--help) + echo "$LONG_USAGE" + exit + esac +fi set_reflog_action() { if [ -z "${GIT_REFLOG_ACTION:+set}" ] @@ -91,21 +118,6 @@ get_author_ident_from_commit () { LANG=C LC_ALL=C sed -ne "$pick_author_script" } -if [ -z "$LONG_USAGE" ] -then - LONG_USAGE="Usage: $0 $USAGE" -else - LONG_USAGE="Usage: $0 $USAGE - -$LONG_USAGE" -fi - -case "$1" in - -h|--h|--he|--hel|--help) - echo "$LONG_USAGE" - exit -esac - # Make sure we are in a valid repository of a vintage we understand. if [ -z "$SUBDIRECTORY_OK" ] then From 27c0d1c7f51dd0b31c8a6283df7a23bdb7de8957 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sun, 4 Nov 2007 11:30:55 +0100 Subject: [PATCH 021/107] Migrate git-clean.sh to use git-rev-parse --parseopt. Also minor consistency tweaks in how errors are caught. Signed-off-by: Pierre Habouzit Signed-off-by: Junio C Hamano --- git-clean.sh | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/git-clean.sh b/git-clean.sh index 4491738186..35a5142c56 100755 --- a/git-clean.sh +++ b/git-clean.sh @@ -3,16 +3,22 @@ # Copyright (c) 2005-2006 Pavel Roskin # -USAGE="[-d] [-f] [-n] [-q] [-x | -X] [--] ..." -LONG_USAGE='Clean untracked files from the working directory - -d remove directories as well - -f override clean.requireForce and clean anyway - -n don'\''t remove anything, just show what would be done - -q be quiet, only report errors - -x remove ignored files as well - -X remove only ignored files +OPTIONS_KEEPDASHDASH= +OPTIONS_SPEC="\ +git-clean [options] ... + +Clean untracked files from the working directory + When optional ... arguments are given, the paths -affected are further limited to those that match them.' +affected are further limited to those that match them. +-- +d remove directories as well +f override clean.requireForce and clean anyway +n don't remove anything, just show what would be done +q be quiet, only report errors +x remove ignored files as well +X remove only ignored files" + SUBDIRECTORY_OK=Yes . git-sh-setup require_work_tree @@ -55,23 +61,20 @@ do shift break ;; - -*) - usage - ;; *) - break + usage # should not happen + ;; esac shift done if [ "$disabled" = true ]; then - echo "clean.requireForce set and -n or -f not given; refusing to clean" - exit 1 + die "clean.requireForce set and -n or -f not given; refusing to clean" fi -case "$ignored,$ignoredonly" in - 1,1) usage;; -esac +if [ "$ignored,$ignoredonly" = "1,1" ]; then + die "-x and -X cannot be set together" +fi if [ -z "$ignored" ]; then excl="--exclude-per-directory=.gitignore" From 943625998b43ae7b7a4faf840951f0cefb28dc33 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sun, 4 Nov 2007 11:30:56 +0100 Subject: [PATCH 022/107] Migrate git-clone to use git-rev-parse --parseopt Signed-off-by: Pierre Habouzit Signed-off-by: Junio C Hamano --- git-clone.sh | 101 ++++++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/git-clone.sh b/git-clone.sh index 3f00693608..f216f03a77 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -8,15 +8,36 @@ # See git-sh-setup why. unset CDPATH +OPTIONS_SPEC="\ +git-clone [options] [--] [] +-- +n,no-checkout don't create a checkout +bare create a bare repository +naked create a bare repository +l,local to clone from a local repository +no-hardlinks don't use local hardlinks, always copy +s,shared setup as a shared repository +template= path to the template directory +q,quiet be quiet +reference= reference repository +o,origin= use instead of 'origin' to track upstream +u,upload-pack= path to git-upload-pack on the remote +depth= create a shallow clone of that depth + +use-separate-remote compatibility, do not use +no-separate-remote compatibility, do not use" + die() { echo >&2 "$@" exit 1 } usage() { - die "Usage: $0 [--template=] [--reference ] [--bare] [-l [-s]] [-q] [-u ] [--origin ] [--depth ] [-n] [--] []" + exec "$0" -h } +eval `echo "$OPTIONS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?` + get_repo_base() { ( cd "`/bin/pwd`" && @@ -106,67 +127,57 @@ depth= no_progress= local_explicitly_asked_for= test -t 1 || no_progress=--no-progress -while - case "$#,$1" in - 0,*) break ;; - *,-n|*,--no|*,--no-|*,--no-c|*,--no-ch|*,--no-che|*,--no-chec|\ - *,--no-check|*,--no-checko|*,--no-checkou|*,--no-checkout) - no_checkout=yes ;; - *,--na|*,--nak|*,--nake|*,--naked|\ - *,-b|*,--b|*,--ba|*,--bar|*,--bare) bare=yes ;; - *,-l|*,--l|*,--lo|*,--loc|*,--loca|*,--local) - local_explicitly_asked_for=yes - use_local_hardlink=yes ;; - *,--no-h|*,--no-ha|*,--no-har|*,--no-hard|*,--no-hardl|\ - *,--no-hardli|*,--no-hardlin|*,--no-hardlink|*,--no-hardlinks) - use_local_hardlink=no ;; - *,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared) - local_shared=yes; ;; - 1,--template) usage ;; - *,--template) + +while test $# != 0 +do + case "$1" in + -n|--no-checkout) + no_checkout=yes ;; + --naked|--bare) + bare=yes ;; + -l|--local) + local_explicitly_asked_for=yes + use_local_hardlink=yes + ;; + --no-hardlinks) + use_local_hardlink=no ;; + -s|--shared) + local_shared=yes ;; + --template) shift; template="--template=$1" ;; - *,--template=*) - template="$1" ;; - *,-q|*,--quiet) quiet=-q ;; - *,--use-separate-remote) ;; - *,--no-separate-remote) + -q|--quiet) + quiet=-q ;; + --use-separate-remote|--no-separate-remote) die "clones are always made with separate-remote layout" ;; - 1,--reference) usage ;; - *,--reference) + --reference) shift; reference="$1" ;; - *,--reference=*) - reference=`expr "z$1" : 'z--reference=\(.*\)'` ;; - *,-o|*,--or|*,--ori|*,--orig|*,--origi|*,--origin) - case "$2" in + -o,--origin) + shift; + case "$1" in '') usage ;; */*) - die "'$2' is not suitable for an origin name" + die "'$1' is not suitable for an origin name" esac - git check-ref-format "heads/$2" || - die "'$2' is not suitable for a branch name" + git check-ref-format "heads/$1" || + die "'$1' is not suitable for a branch name" test -z "$origin_override" || die "Do not give more than one --origin options." origin_override=yes - origin="$2"; shift + origin="$1" ;; - 1,-u|1,--upload-pack) usage ;; - *,-u|*,--upload-pack) + -u|--upload-pack) shift upload_pack="--upload-pack=$1" ;; - *,--upload-pack=*) - upload_pack=--upload-pack=$(expr "z$1" : 'z-[^=]*=\(.*\)') ;; - 1,--depth) usage;; - *,--depth) + --depth) shift - depth="--depth=$1";; - *,--) + depth="--depth=$1" ;; + --) shift break ;; - *,-*) usage ;; - *) break ;; + *) + usage ;; esac -do shift done From 78443d90491c1b82afdffc3d5d2ab8c1a58928b5 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sun, 4 Nov 2007 11:30:57 +0100 Subject: [PATCH 023/107] Migrate git-am.sh to use git-rev-parse --parseopt Signed-off-by: Pierre Habouzit Signed-off-by: Junio C Hamano --- git-am.sh | 94 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/git-am.sh b/git-am.sh index 2514d07de2..876b973a4d 100755 --- a/git-am.sh +++ b/git-am.sh @@ -2,11 +2,26 @@ # # Copyright (c) 2005, 2006 Junio C Hamano -USAGE='[--signoff] [--dotest=] [--keep] [--utf8 | --no-utf8] - [--3way] [--interactive] [--binary] - [--whitespace=