From c2f2dab971d4e955dbf5a48055ed3cde4a078711 Mon Sep 17 00:00:00 2001 From: Christian Couder Date: Sat, 12 Dec 2009 05:52:39 +0100 Subject: [PATCH 01/66] gitk: Add "--no-replace-objects" option Replace refs are useful to change some git objects after they have started to be shared between different repositories. One might want to ignore them to see the original state, and "--no-replace-objects" option can be used from the command line to do so. This option simply sets the GIT_NO_REPLACE_OBJECTS environment variable, and that is enough to make gitk ignore replace refs. The GIT_NO_REPLACE_OBJECTS is set to "1" instead of "" as it is safer on some platforms, thanks to Johannes Sixt and Michael J Gruber. Tested-by: Michael J Gruber Signed-off-by: Christian Couder Signed-off-by: Paul Mackerras --- gitk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gitk b/gitk index 364c7a84cb..86dff0fc06 100755 --- a/gitk +++ b/gitk @@ -130,7 +130,7 @@ proc unmerged_files {files} { } proc parseviewargs {n arglist} { - global vdatemode vmergeonly vflags vdflags vrevs vfiltered vorigargs + global vdatemode vmergeonly vflags vdflags vrevs vfiltered vorigargs env set vdatemode($n) 0 set vmergeonly($n) 0 @@ -210,6 +210,9 @@ proc parseviewargs {n arglist} { # git rev-parse doesn't understand --merge lappend revargs --gitk-symmetric-diff-marker MERGE_HEAD...HEAD } + "--no-replace-objects" { + set env(GIT_NO_REPLACE_OBJECTS) "1" + } "-*" { # Other flag arguments including - if {[string is digit -strict [string range $arg 1 end]]} { From 7e705ec185186e5e4141ebc83003a8d8174c4d35 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Tue, 12 Jan 2010 21:40:41 +1100 Subject: [PATCH 02/66] gitk: Add Hungarian translation [Junio C Hamano : Fix a couple of wrapped lines] Signed-off-by: Laszlo Papp Signed-off-by: Paul Mackerras --- po/hu.po | 1149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1149 insertions(+) create mode 100644 po/hu.po diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000000..7a4bdcadaa --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1149 @@ +# Translation of gitk to Hungarian. +# Copyright (C) 2007 Paul Mackerras. +# This file is distributed under the same license as the gitk package. +# +# Laszlo Papp , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: git-gui\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-12 21:55+0200\n" +"PO-Revision-Date: 2009-12-14 13:28+0100\n" +"Last-Translator: Laszlo Papp \n" +"Language-Team: Hungarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: gitk:113 +msgid "Couldn't get list of unmerged files:" +msgstr "Nem sikerült letölteni az unmerged fájl listát:" + +#: gitk:268 +msgid "Error parsing revisions:" +msgstr "Hiba történt értelmezés közben:" + +#: gitk:323 +msgid "Error executing --argscmd command:" +msgstr "Hiba történt a végrehajtáskor --argscmd parancs:" + +#: gitk:336 +msgid "No files selected: --merge specified but no files are unmerged." +msgstr "Nincsen fájl kiválasztva: --merge megadve, de egyetlen fájl sem unmerged." + +#: gitk:339 +msgid "" +"No files selected: --merge specified but no unmerged files are within file " +"limit." +msgstr "" +"Nincsen fájl kiválasztva: --merge megadva, de nincsenek unmerged fájlok a fájlon belül " +"limit." + +#: gitk:361 gitk:508 +msgid "Error executing git log:" +msgstr "Hiba történt a git log végrehajtása közben:" + +#: gitk:379 gitk:524 +msgid "Reading" +msgstr "Olvasás" + +#: gitk:439 gitk:4061 +msgid "Reading commits..." +msgstr "Commitok olvasása ..." + +#: gitk:442 gitk:1560 gitk:4064 +msgid "No commits selected" +msgstr "Nincsen commit kiválasztva" + +#: gitk:1436 +msgid "Can't parse git log output:" +msgstr "Nem lehet értelmezni a git log kimenetét:" + +#: gitk:1656 +msgid "No commit information available" +msgstr "Nincsen elérhető commit információ" + +#: gitk:1791 gitk:1815 gitk:3854 gitk:8714 gitk:10250 gitk:10422 +msgid "OK" +msgstr "OK" + +#: gitk:1817 gitk:3856 gitk:8311 gitk:8385 gitk:8495 gitk:8544 gitk:8716 +#: gitk:10251 gitk:10423 +msgid "Cancel" +msgstr "Visszavonás" + +#: gitk:1917 +msgid "Update" +msgstr "Frissités" + +#: gitk:1918 +msgid "Reload" +msgstr "Újratöltés" + +#: gitk:1919 +msgid "Reread references" +msgstr "Referenciák újraolvasása" + +#: gitk:1920 +msgid "List references" +msgstr "Referenciák listázása" + +#: gitk:1922 +msgid "Start git gui" +msgstr "Git gui indítása" + +#: gitk:1924 +msgid "Quit" +msgstr "Kilépés" + +#: gitk:1916 +msgid "File" +msgstr "Fájl" + +#: gitk:1928 +msgid "Preferences" +msgstr "Beállítások" + +#: gitk:1927 +msgid "Edit" +msgstr "Szerkesztés" + +#: gitk:1932 +msgid "New view..." +msgstr "Új nézet ..." + +#: gitk:1933 +msgid "Edit view..." +msgstr "Nézet szerkesztése ..." + +#: gitk:1934 +msgid "Delete view" +msgstr "Nézet törlése" + +#: gitk:1936 +msgid "All files" +msgstr "Minden fájl" + +#: gitk:1931 gitk:3666 +msgid "View" +msgstr "Nézet" + +#: gitk:1941 gitk:1951 gitk:2650 +msgid "About gitk" +msgstr "Gitk névjegy" + +#: gitk:1942 gitk:1956 +msgid "Key bindings" +msgstr "Billentyűkombináció" + +#: gitk:1940 gitk:1955 +msgid "Help" +msgstr "Segítség" + +#: gitk:2016 +msgid "SHA1 ID: " +msgstr "SHA1 ID: " + +#: gitk:2047 +msgid "Row" +msgstr "Sor" + +#: gitk:2078 +msgid "Find" +msgstr "Keresés" + +#: gitk:2079 +msgid "next" +msgstr "következő" + +#: gitk:2080 +msgid "prev" +msgstr "előző" + +#: gitk:2081 +msgid "commit" +msgstr "commit" + +#: gitk:2084 gitk:2086 gitk:4222 gitk:4245 gitk:4269 gitk:6210 gitk:6282 +#: gitk:6366 +msgid "containing:" +msgstr "tartalmazás:" + +#: gitk:2087 gitk:3158 gitk:3163 gitk:4297 +msgid "touching paths:" +msgstr "érintendő útvonalak:" + +#: gitk:2088 gitk:4302 +msgid "adding/removing string:" +msgstr "string hozzáadása/törlése:" + +#: gitk:2097 gitk:2099 +msgid "Exact" +msgstr "Pontos" + +#: gitk:2099 gitk:4377 gitk:6178 +msgid "IgnCase" +msgstr "Kis/nagy betű nem számít" + +#: gitk:2099 gitk:4271 gitk:4375 gitk:6174 +msgid "Regexp" +msgstr "Regexp" + +#: gitk:2101 gitk:2102 gitk:4396 gitk:4426 gitk:4433 gitk:6302 gitk:6370 +msgid "All fields" +msgstr "Minden mező" + +#: gitk:2102 gitk:4394 gitk:4426 gitk:6241 +msgid "Headline" +msgstr "Főcím" + +#: gitk:2103 gitk:4394 gitk:6241 gitk:6370 gitk:6804 +msgid "Comments" +msgstr "Megjegyzések" + +#: gitk:2103 gitk:4394 gitk:4398 gitk:4433 gitk:6241 gitk:6739 gitk:7991 +#: gitk:8006 +msgid "Author" +msgstr "Szerző" + +#: gitk:2103 gitk:4394 gitk:6241 gitk:6741 +msgid "Committer" +msgstr "Commitoló" + +#: gitk:2132 +msgid "Search" +msgstr "Keresés" + +#: gitk:2139 +msgid "Diff" +msgstr "Diff" + +#: gitk:2141 +msgid "Old version" +msgstr "Régi verzió" + +#: gitk:2143 +msgid "New version" +msgstr "Új verzió" + +#: gitk:2145 +msgid "Lines of context" +msgstr "Tartalmi sorok" + +#: gitk:2155 +msgid "Ignore space change" +msgstr "Space váltás mellőzése" + +#: gitk:2213 +msgid "Patch" +msgstr "Patch" + +#: gitk:2215 +msgid "Tree" +msgstr "Tree" + +#: gitk:2359 gitk:2376 +msgid "Diff this -> selected" +msgstr "Diff ezeket -> kiválasztott" + +#: gitk:2360 gitk:2377 +msgid "Diff selected -> this" +msgstr "Diff kiválasztottakat -> ezt" + +#: gitk:2361 gitk:2378 +msgid "Make patch" +msgstr "Patch készítése" + +#: gitk:2362 gitk:8369 +msgid "Create tag" +msgstr "Tag készítése" + +#: gitk:2363 gitk:8475 +msgid "Write commit to file" +msgstr "Commit fáljba írása" + +#: gitk:2364 gitk:8532 +msgid "Create new branch" +msgstr "Új branch készítése" + +#: gitk:2365 +msgid "Cherry-pick this commit" +msgstr "Cherry-pick erre a commitra" + +#: gitk:2366 +msgid "Reset HEAD branch to here" +msgstr "HEAD branch újraindítása ide" + +#: gitk:2367 +msgid "Mark this commit" +msgstr "Ezen commit megjelölése" + +#: gitk:2368 +msgid "Return to mark" +msgstr "Visszatérés a megjelöléshez" + +#: gitk:2369 +msgid "Find descendant of this and mark" +msgstr "Találd meg ezen utódokat és jelöld meg" + +#: gitk:2370 +msgid "Compare with marked commit" +msgstr "Összehasonlítás a megjelölt commit-tal" + +#: gitk:2384 +msgid "Check out this branch" +msgstr "Check out ezt a branchot" + +#: gitk:2385 +msgid "Remove this branch" +msgstr "Töröld ezt a branch-ot" + +#: gitk:2392 +msgid "Highlight this too" +msgstr "Emeld ki ezt is" + +#: gitk:2393 +msgid "Highlight this only" +msgstr "Csak ezt emeld ki" + +#: gitk:2394 +msgid "External diff" +msgstr "Külső diff" + +#: gitk:2395 +msgid "Blame parent commit" +msgstr "Blame szülő kommitra" + +#: gitk:2402 +msgid "Show origin of this line" +msgstr "Mutasd meg ennek a sornak az eredetét" + +#: gitk:2403 +msgid "Run git gui blame on this line" +msgstr "Futtasd a git gui blame-t ezen a soron" + +#: gitk:2652 +msgid "" +"\n" +"Gitk - a commit viewer for git\n" +"\n" +"Copyright © 2005-2008 Paul Mackerras\n" +"\n" +"Use and redistribute under the terms of the GNU General Public License" +msgstr "" +"\n" +"Gitk - commit nézegető a githez\n" +"\n" +"Szerzői jog © 2005-2008 Paul Mackerras\n" +"\n" +"Használd és terjeszd a GNU General Public License feltételei mellett " +"Licensz" + +#: gitk:2660 gitk:2722 gitk:8897 +msgid "Close" +msgstr "Bezárás" + +#: gitk:2679 +msgid "Gitk key bindings" +msgstr "Gitk-billentyű hozzárendelés" + +#: gitk:2682 +msgid "Gitk key bindings:" +msgstr "Gitk-billentyű hozzaárendelés:" + +#: gitk:2684 +#, tcl-format +msgid "<%s-Q>\t\tQuit" +msgstr "<%s-Q>\t\tKilépés" + +#: gitk:2685 +msgid "\t\tMove to first commit" +msgstr "\t\tElső commithoz" + +#: gitk:2686 +msgid "\t\tMove to last commit" +msgstr "\t\tUtolsó commithoz" + +#: gitk:2687 +msgid ", p, i\tMove up one commit" +msgstr ", p, i\tEgy committal feljebb" + +#: gitk:2688 +msgid ", n, k\tMove down one commit" +msgstr ", n, k\tEgy committal lejjebb" + +#: gitk:2689 +msgid ", z, j\tGo back in history list" +msgstr ", z, j\tVissza a history listába" + +#: gitk:2690 +msgid ", x, l\tGo forward in history list" +msgstr ", x, l\tElőre a history listába" + +#: gitk:2691 +msgid "\tMove up one page in commit list" +msgstr "\tEgy lappal feljebb a commit listába" + +#: gitk:2692 +msgid "\tMove down one page in commit list" +msgstr "\tEgy lappal lejjebb a commit listába" + +#: gitk:2693 +#, tcl-format +msgid "<%s-Home>\tScroll to top of commit list" +msgstr "<%s-Pos1>\tGörgetés a commit lista tetejéhez" + +#: gitk:2694 +#, tcl-format +msgid "<%s-End>\tScroll to bottom of commit list" +msgstr "<%s-Ende>\tGörgetés a commit lista aljához" + +#: gitk:2695 +#, tcl-format +msgid "<%s-Up>\tScroll commit list up one line" +msgstr "<%s-Hoch>\tEgy sorral feljebb görgetés a commit listában" + +#: gitk:2696 +#, tcl-format +msgid "<%s-Down>\tScroll commit list down one line" +msgstr "<%s-Runter>\tEgy sorral lejjebb görgetés a commit listában" + +#: gitk:2697 +#, tcl-format +msgid "<%s-PageUp>\tScroll commit list up one page" +msgstr "<%s-BildHoch>\tEgy lappal feljebb görgetés a commit listában" + +#: gitk:2698 +#, tcl-format +msgid "<%s-PageDown>\tScroll commit list down one page" +msgstr "<%s-BildRunter>\tEgy sorral lejjebb görgetés a commit listában" + +#: gitk:2699 +msgid "\tFind backwards (upwards, later commits)" +msgstr "\tKeresés visszafele (felfele, utolsó commitok)" + +#: gitk:2700 +msgid "\tFind forwards (downwards, earlier commits)" +msgstr "\tKeresés előre (lefelé; korábbi commitok)" + +#: gitk:2701 +msgid ", b\tScroll diff view up one page" +msgstr ", b\t\tEgy lappal feljebb görgetés a diff nézetben" + +#: gitk:2702 +msgid "\tScroll diff view up one page" +msgstr "\tEgy lappal feljebb görgetés a diff nézetben" + +#: gitk:2703 +msgid "\t\tScroll diff view down one page" +msgstr "\tEgy lappal lejjebb görgetés a diff nézetben" + +#: gitk:2704 +msgid "u\t\tScroll diff view up 18 lines" +msgstr "u\t\t18 sorral felfelé görgetés diff nézetben" + +#: gitk:2705 +msgid "d\t\tScroll diff view down 18 lines" +msgstr "d\t\t18 sorral lejjebb görgetés a diff nézetben" + +#: gitk:2706 +#, tcl-format +msgid "<%s-F>\t\tFind" +msgstr "<%s-F>\t\tKeresés" + +#: gitk:2707 +#, tcl-format +msgid "<%s-G>\t\tMove to next find hit" +msgstr "<%s-G>\t\tKövetkező találathoz" + +#: gitk:2708 +msgid "\tMove to next find hit" +msgstr "\tKövetkező találathoz" + +#: gitk:2709 +msgid "/\t\tFocus the search box" +msgstr "/\t\tLépj a keresési mezőre" + +#: gitk:2710 +msgid "?\t\tMove to previous find hit" +msgstr "?\t\tElőző találathoz" + +#: gitk:2711 +msgid "f\t\tScroll diff view to next file" +msgstr "f\t\tKövetkező fájlra görgetés diff nézetben" + +#: gitk:2712 +#, tcl-format +msgid "<%s-S>\t\tSearch for next hit in diff view" +msgstr "<%s-S>\t\tKövetkező találatra keresés diff nézetben" + +#: gitk:2713 +#, tcl-format +msgid "<%s-R>\t\tSearch for previous hit in diff view" +msgstr "<%s-R>\t\tElőző találatra keresés diff nézetben" + +#: gitk:2714 +#, tcl-format +msgid "<%s-KP+>\tIncrease font size" +msgstr "<%s-Nummerblock-Plus>\tBetűméret növelése" + +#: gitk:2715 +#, tcl-format +msgid "<%s-plus>\tIncrease font size" +msgstr "<%s-Plus>\tBetűméret növelése" + +#: gitk:2716 +#, tcl-format +msgid "<%s-KP->\tDecrease font size" +msgstr "<%s-Nummernblock-Minus> Betűméret csökkentése" + +#: gitk:2717 +#, tcl-format +msgid "<%s-minus>\tDecrease font size" +msgstr "<%s-Minus>\tBetűméret csökkentése" + +#: gitk:2718 +msgid "\t\tUpdate" +msgstr "\t\tFrissítés" + +#: gitk:3173 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Hiba történt \"%s\" letöltése közben %s-ről:" + +#: gitk:3230 gitk:3239 +#, tcl-format +msgid "Error creating temporary directory %s:" +msgstr "Hiba történt az ideiglenes könyvtár létrehozása közben %s:" + +#: gitk:3251 +msgid "command failed:" +msgstr "parancs hiba:" + +#: gitk:3397 +msgid "No such commit" +msgstr "Nincs ilyen commit" + +#: gitk:3411 +msgid "git gui blame: command failed:" +msgstr "git gui blame: parancs hiba:" + +#: gitk:3442 +#, tcl-format +msgid "Couldn't read merge head: %s" +msgstr "Nem sikerült a Merge head olvasása: %s" + +#: gitk:3450 +#, tcl-format +msgid "Error reading index: %s" +msgstr "Hiba történt az index olvasása közben: %s" + +#: gitk:3475 +#, tcl-format +msgid "Couldn't start git blame: %s" +msgstr "Nem sikerült a git blame indítása: %s" + +#: gitk:3478 gitk:6209 +msgid "Searching" +msgstr "Keresés" + +#: gitk:3510 +#, tcl-format +msgid "Error running git blame: %s" +msgstr "Hiba történt a git blame futtatása közben: %s" + +#: gitk:3538 +#, tcl-format +msgid "That line comes from commit %s, which is not in this view" +msgstr "" +"A %s commitból származik az a sor, amelyik nem található ebben a nézetben" + +#: gitk:3552 +msgid "External diff viewer failed:" +msgstr "Külső diff nézegető hiba:" + +#: gitk:3670 +msgid "Gitk view definition" +msgstr "Gitk nézet meghatározása" + +#: gitk:3674 +msgid "Remember this view" +msgstr "Maradj ennél a nézetnél" + +#: gitk:3675 +msgid "Commits to include (arguments to git log):" +msgstr "Beleértendő commitok (Argumentok a git log-hoz):" + +#: gitk:3676 +msgid "Use all refs" +msgstr "Használd az összes referenciát" + +#: gitk:3677 +msgid "Strictly sort by date" +msgstr "Szigorú rendezás dátum alapján" + +#: gitk:3678 +msgid "Mark branch sides" +msgstr "Jelölje meg az ágakat" + +#: gitk:3679 +msgid "Since date:" +msgstr "Ettől:" + +#: gitk:3680 +msgid "Until date:" +msgstr "Eddig:" + +#: gitk:3681 +msgid "Max count:" +msgstr "Max. szám:" + +#: gitk:3682 +msgid "Skip:" +msgstr "Kihagy:" + +#: gitk:3683 +msgid "Limit to first parent" +msgstr "Korlátozás az első szülőre" + +#: gitk:3684 +msgid "Command to generate more commits to include:" +msgstr "Parancs több tartalmazó commit generálására:" + +#: gitk:3780 +msgid "Gitk: edit view" +msgstr "Gitk: szerkesztés nézet" + +#: gitk:3793 +msgid "Name" +msgstr "Név" + +#: gitk:3841 +msgid "Enter files and directories to include, one per line:" +msgstr "Fájlok és könyvtárak bejegyzése amiket tartalmaz, soronként:" + +#: gitk:3855 +msgid "Apply (F5)" +msgstr "Alkalmaz (F5)" + +#: gitk:3893 +msgid "Error in commit selection arguments:" +msgstr "Hiba történt a commit argumentumok kiválasztása közben:" + +#: gitk:3946 gitk:3998 gitk:4446 gitk:4460 gitk:5721 gitk:11114 gitk:11115 +msgid "None" +msgstr "Keine" + +#: gitk:4394 gitk:6241 gitk:7993 gitk:8008 +msgid "Date" +msgstr "Dátum" + +#: gitk:4394 gitk:6241 +msgid "CDate" +msgstr "Dátum" + +#: gitk:4543 gitk:4548 +msgid "Descendant" +msgstr "Leszármazott" + +#: gitk:4544 +msgid "Not descendant" +msgstr "Nem leszármazott" + +#: gitk:4551 gitk:4556 +msgid "Ancestor" +msgstr "Előd" + +#: gitk:4552 +msgid "Not ancestor" +msgstr "Nem előd" + +#: gitk:4842 +msgid "Local changes checked in to index but not committed" +msgstr "Lokális változtatások, melyek be vannak téve az indexbe, de még nincsenek commitolva" + +#: gitk:4878 +msgid "Local uncommitted changes, not checked in to index" +msgstr "Lokális nem commitolt változások, nincsenek betéve az indexbe" + +#: gitk:6559 +msgid "many" +msgstr "sok" + +#: gitk:6743 +msgid "Tags:" +msgstr "Tagek:" + +#: gitk:6760 gitk:6766 gitk:7986 +msgid "Parent" +msgstr "Eltern" + +#: gitk:6771 +msgid "Child" +msgstr "Gyerek" + +#: gitk:6780 +msgid "Branch" +msgstr "Ág" + +#: gitk:6783 +msgid "Follows" +msgstr "Következők" + +#: gitk:6786 +msgid "Precedes" +msgstr "Megelőzők" + +#: gitk:7279 +#, tcl-format +msgid "Error getting diffs: %s" +msgstr "Hiba történt a diff-ek letöltése közben: %s" + +#: gitk:7819 +msgid "Goto:" +msgstr "Menj:" + +#: gitk:7821 +msgid "SHA1 ID:" +msgstr "SHA1 ID:" + +#: gitk:7840 +#, tcl-format +msgid "Short SHA1 id %s is ambiguous" +msgstr "Rövid SHA1 id %s félreérthető" + +#: gitk:7852 +#, tcl-format +msgid "SHA1 id %s is not known" +msgstr "SHA1 id %s nem ismert" + +#: gitk:7854 +#, tcl-format +msgid "Tag/Head %s is not known" +msgstr "Tag/Head %s nem ismert" + +#: gitk:7996 +msgid "Children" +msgstr "Gyerekek" + +#: gitk:8053 +#, tcl-format +msgid "Reset %s branch to here" +msgstr "Állítsd vissza a %s branch-ot ide" + +#: gitk:8055 +msgid "Detached head: can't reset" +msgstr "Elkülönített head: nem lehet visszaállítani" + +#: gitk:8164 gitk:8170 +msgid "Skipping merge commit " +msgstr "Merge commit kihagyása " + +#: gitk:8179 gitk:8184 +msgid "Error getting patch ID for " +msgstr "Hiba történt a patch ID megszerzése közben a következőnél " + +#: gitk:8180 gitk:8185 +msgid " - stopping\n" +msgstr " - abbahagyás\n" + +#: gitk:8190 gitk:8193 gitk:8201 gitk:8211 gitk:8220 +msgid "Commit " +msgstr "Commit " + +#: gitk:8194 +msgid "" +" is the same patch as\n" +" " +msgstr "" +" Ugyanaz a patch mint\n" +" " + +#: gitk:8202 +msgid "" +" differs from\n" +" " +msgstr "" +" különbözik innentől\n" +" " + +#: gitk:8204 +msgid "- stopping\n" +msgstr "- abbahagyás.\n" + +#: gitk:8212 gitk:8221 +#, tcl-format +msgid " has %s children - stopping\n" +msgstr " %s gyereke van. abbahagyás\n" + +#: gitk:8252 +msgid "Top" +msgstr "Teteje" + +#: gitk:8253 +msgid "From" +msgstr "Innen" + +#: gitk:8258 +msgid "To" +msgstr "Ide" + +#: gitk:8282 +msgid "Generate patch" +msgstr "Patch generálása" + +#: gitk:8284 +msgid "From:" +msgstr "Innen:" + +#: gitk:8293 +msgid "To:" +msgstr "Ide:" + +#: gitk:8302 +msgid "Reverse" +msgstr "Visszafele" + +#: gitk:8304 gitk:8489 +msgid "Output file:" +msgstr "Kimeneti fájl:" + +#: gitk:8310 +msgid "Generate" +msgstr "Generálás" + +#: gitk:8348 +msgid "Error creating patch:" +msgstr "Hiba törtét a patch készítése közben:" + +#: gitk:8371 gitk:8477 gitk:8534 +msgid "ID:" +msgstr "ID:" + +#: gitk:8380 +msgid "Tag name:" +msgstr "Tag név:" + +#: gitk:8384 gitk:8543 +msgid "Create" +msgstr "Létrehozás" + +#: gitk:8401 +msgid "No tag name specified" +msgstr "A tag neve nincsen megadva" + +#: gitk:8405 +#, tcl-format +msgid "Tag \"%s\" already exists" +msgstr "%s Tag már létezik" + +#: gitk:8411 +msgid "Error creating tag:" +msgstr "Hiba történt a tag létrehozása közben:" + +#: gitk:8486 +msgid "Command:" +msgstr "Parancs:" + +#: gitk:8494 +msgid "Write" +msgstr "Írás" + +#: gitk:8512 +msgid "Error writing commit:" +msgstr "Hiba történt a commit írása közben:" + +#: gitk:8539 +msgid "Name:" +msgstr "Név:" + +#: gitk:8562 +msgid "Please specify a name for the new branch" +msgstr "Kérem adja meg a nevét az új branchhoz" + +#: gitk:8567 +#, tcl-format +msgid "Branch '%s' already exists. Overwrite?" +msgstr "%s branch már létezik. Felülírja?" + +#: gitk:8633 +#, tcl-format +msgid "Commit %s is already included in branch %s -- really re-apply it?" +msgstr "" +"%s commit már benne van a %s branchban -- biztos hogy újra csinálja ?" +"eintragen?" + +#: gitk:8638 +msgid "Cherry-picking" +msgstr "Cherry-picking" + +#: gitk:8647 +#, tcl-format +msgid "" +"Cherry-pick failed because of local changes to file '%s'.\n" +"Please commit, reset or stash your changes and try again." +msgstr "" +"Cherry-pick hiba történt lokális váltotások miatt a '%s' fájlban.\n" +"Kérem commitolja, indítsa újra vagy rejtse el a változtatásait és próbálja újra." + +#: gitk:8653 +msgid "" +"Cherry-pick failed because of merge conflict.\n" +"Do you wish to run git citool to resolve it?" +msgstr "" +"Cherry-pick hiba történt merge konfliktus miatt.\n" +"Kívánja futtatni a git citool-t a probléma megoldásához?" + +#: gitk:8669 +msgid "No changes committed" +msgstr "Nincsen változás commitolva" + +#: gitk:8695 +msgid "Confirm reset" +msgstr "Újraindítás megerősítése" + +#: gitk:8697 +#, tcl-format +msgid "Reset branch %s to %s?" +msgstr "Újraindítja a %s branchot %s-ig?" + +#: gitk:8701 +msgid "Reset type:" +msgstr "Újraindítás típusa:" + +#: gitk:8705 +msgid "Soft: Leave working tree and index untouched" +msgstr "Soft: Hagyd a working tree-t és az indexet érintetlenül" + +#: gitk:8708 +msgid "Mixed: Leave working tree untouched, reset index" +msgstr "" +"Kevert: Hagyd a working tree-t érintetlenül, töröld az indexet" + +#: gitk:8711 +msgid "" +"Hard: Reset working tree and index\n" +"(discard ALL local changes)" +msgstr "" +"Hard: Indítsd újra a working tree-t és az indexet\n" +"(MINDEN lokális változás eldobása)" + +#: gitk:8728 +msgid "Resetting" +msgstr "Újraindítás" + +#: gitk:8785 +msgid "Checking out" +msgstr "Kivesz" + +#: gitk:8838 +msgid "Cannot delete the currently checked-out branch" +msgstr "" +"Nem lehet a jelenleg kivett branch-ot törölni" + +#: gitk:8844 +#, tcl-format +msgid "" +"The commits on branch %s aren't on any other branch.\n" +"Really delete branch %s?" +msgstr "" +"A %s branchon található commit nem található meg semelyik másik branchon.\n" +"Tényleg törli a %s branchot?" + +#: gitk:8875 +#, tcl-format +msgid "Tags and heads: %s" +msgstr "Tagek és headek: %s" + +#: gitk:8890 +msgid "Filter" +msgstr "Szűrő" + +#: gitk:9185 +msgid "" +"Error reading commit topology information; branch and preceding/following " +"tag information will be incomplete." +msgstr "" +"Hiba történt a commit topológiai információ olvasása közben; branch és" +"a megelőző/következő információ nem lesz teljes." + +#: gitk:10171 +msgid "Tag" +msgstr "Tag" + +#: gitk:10171 +msgid "Id" +msgstr "Id" + +#: gitk:10219 +msgid "Gitk font chooser" +msgstr "Gitk-betű kiválasztó" + +#: gitk:10236 +msgid "B" +msgstr "F" + +#: gitk:10239 +msgid "I" +msgstr "K" + +#: gitk:10334 +msgid "Gitk preferences" +msgstr "Gitk beállítások" + +#: gitk:10336 +msgid "Commit list display options" +msgstr "Commit lista kijelzési opciók" + +#: gitk:10339 +msgid "Maximum graph width (lines)" +msgstr "Maximális grafikon szélesség (sorok)" + +#: gitk:10343 +#, tcl-format +msgid "Maximum graph width (% of pane)" +msgstr "Maximális grafikon szélesség (táble %-je)" + +#: gitk:10347 +msgid "Show local changes" +msgstr "Mutasd a lokális változtatásokat" + +#: gitk:10350 +msgid "Auto-select SHA1" +msgstr "SHA1 Automatikus kiválasztása" + +#: gitk:10354 +msgid "Diff display options" +msgstr "Diff kijelző opciók" + +#: gitk:10356 +msgid "Tab spacing" +msgstr "Tab sorköz" + +#: gitk:10359 +msgid "Display nearby tags" +msgstr "Szomszédos tagek kijelzése" + +#: gitk:10362 +msgid "Limit diffs to listed paths" +msgstr "Korlátozott diffek a kilistázott útvonalakhoz" + +#: gitk:10365 +msgid "Support per-file encodings" +msgstr "Fájlonkénti kódolás támgatása" + +#: gitk:10371 gitk:10436 +msgid "External diff tool" +msgstr "Külső diff alkalmazás" + +#: gitk:10373 +msgid "Choose..." +msgstr "Válaszd ..." + +#: gitk:10378 +msgid "Colors: press to choose" +msgstr "Színek: nyomja meg a kiválasztáshoz" + +#: gitk:10381 +msgid "Background" +msgstr "Háttér" + +#: gitk:10382 gitk:10412 +msgid "background" +msgstr "háttér" + +#: gitk:10385 +msgid "Foreground" +msgstr "Előtér" + +#: gitk:10386 +msgid "foreground" +msgstr "előtér" + +#: gitk:10389 +msgid "Diff: old lines" +msgstr "Diff: régi sorok" + +#: gitk:10390 +msgid "diff old lines" +msgstr "diff régi sorok" + +#: gitk:10394 +msgid "Diff: new lines" +msgstr "Diff: új sorok" + +#: gitk:10395 +msgid "diff new lines" +msgstr "diff - új sorok" + +#: gitk:10399 +msgid "Diff: hunk header" +msgstr "Diff: nagy headerök" + +#: gitk:10401 +msgid "diff hunk header" +msgstr "diff - nagy headerök" + +#: gitk:10405 +msgid "Marked line bg" +msgstr "Megjelölt sor háttér" + +#: gitk:10407 +msgid "marked line background" +msgstr "megjelölt sor háttér" + +#: gitk:10411 +msgid "Select bg" +msgstr "Válasszon hátteret" + +#: gitk:10415 +msgid "Fonts: press to choose" +msgstr "Betű: nyomja meg a kiválasztáshoz" + +#: gitk:10417 +msgid "Main font" +msgstr "Fő betű" + +#: gitk:10418 +msgid "Diff display font" +msgstr "Diff kijelző betű" + +#: gitk:10419 +msgid "User interface font" +msgstr "Felhasználói interfész betű" + +#: gitk:10446 +#, tcl-format +msgid "Gitk: choose color for %s" +msgstr "Gitk: válasszon színt a %s-ra" + +#: gitk:10893 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n" +"Gitk futtatásához legalább Tcl/Tk 8.4 szükséges." + +#: gitk:11020 +msgid "Cannot find a git repository here." +msgstr "Nem találhatü git repository itt." + +#: gitk:11024 +#, tcl-format +msgid "Cannot find the git directory \"%s\"." +msgstr "Nem található a \"%s\" könyvtár." + +#: gitk:11071 +#, tcl-format +msgid "Ambiguous argument '%s': both revision and filename" +msgstr "Félreérthető argumentum '%s': revízió és fájlnév is" + +#: gitk:11083 +msgid "Bad arguments to gitk:" +msgstr "Rossz gitk argumentumok:" + +#: gitk:11167 +msgid "Command line" +msgstr "Parancs sor" From be8e40df7566b838f7ed1840e5c0802097a5e814 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 14 Dec 2009 14:12:25 +0100 Subject: [PATCH 03/66] gitk: Update Hungarian translation Signed-off-by: Miklos Vajna Signed-off-by: Paul Mackerras --- po/hu.po | 780 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 463 insertions(+), 317 deletions(-) diff --git a/po/hu.po b/po/hu.po index 7a4bdcadaa..1df212e881 100644 --- a/po/hu.po +++ b/po/hu.po @@ -8,751 +8,841 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-12 21:55+0200\n" -"PO-Revision-Date: 2009-12-14 13:28+0100\n" +"POT-Creation-Date: 2009-12-14 13:33+0100\n" +"PO-Revision-Date: 2009-12-14 14:04+0100\n" "Last-Translator: Laszlo Papp \n" "Language-Team: Hungarian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: gitk:113 +#: gitk:115 msgid "Couldn't get list of unmerged files:" msgstr "Nem sikerült letölteni az unmerged fájl listát:" -#: gitk:268 +#: gitk:271 msgid "Error parsing revisions:" msgstr "Hiba történt értelmezés közben:" -#: gitk:323 +#: gitk:326 msgid "Error executing --argscmd command:" msgstr "Hiba történt a végrehajtáskor --argscmd parancs:" -#: gitk:336 -msgid "No files selected: --merge specified but no files are unmerged." -msgstr "Nincsen fájl kiválasztva: --merge megadve, de egyetlen fájl sem unmerged." - #: gitk:339 +msgid "No files selected: --merge specified but no files are unmerged." +msgstr "" +"Nincsen fájl kiválasztva: --merge megadve, de egyetlen fájl sem unmerged." + +#: gitk:342 msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." msgstr "" -"Nincsen fájl kiválasztva: --merge megadva, de nincsenek unmerged fájlok a fájlon belül " -"limit." +"Nincsen fájl kiválasztva: --merge megadva, de nincsenek unmerged fájlok a " +"fájlon belül limit." -#: gitk:361 gitk:508 +#: gitk:364 gitk:511 msgid "Error executing git log:" msgstr "Hiba történt a git log végrehajtása közben:" -#: gitk:379 gitk:524 +#: gitk:382 gitk:527 msgid "Reading" msgstr "Olvasás" -#: gitk:439 gitk:4061 +#: gitk:442 gitk:4258 msgid "Reading commits..." msgstr "Commitok olvasása ..." -#: gitk:442 gitk:1560 gitk:4064 +#: gitk:445 gitk:1575 gitk:4261 msgid "No commits selected" msgstr "Nincsen commit kiválasztva" -#: gitk:1436 +#: gitk:1451 msgid "Can't parse git log output:" msgstr "Nem lehet értelmezni a git log kimenetét:" -#: gitk:1656 +#: gitk:1671 msgid "No commit information available" msgstr "Nincsen elérhető commit információ" -#: gitk:1791 gitk:1815 gitk:3854 gitk:8714 gitk:10250 gitk:10422 +#: gitk:1813 +msgid "mc" +msgstr "mc" + +#: gitk:1848 gitk:4051 gitk:9029 gitk:10570 gitk:10789 msgid "OK" msgstr "OK" -#: gitk:1817 gitk:3856 gitk:8311 gitk:8385 gitk:8495 gitk:8544 gitk:8716 -#: gitk:10251 gitk:10423 +#: gitk:1850 gitk:4053 gitk:8629 gitk:8703 gitk:8813 gitk:8862 gitk:9031 +#: gitk:10571 gitk:10790 msgid "Cancel" msgstr "Visszavonás" -#: gitk:1917 +#: gitk:1972 msgid "Update" msgstr "Frissités" -#: gitk:1918 +#: gitk:1973 msgid "Reload" msgstr "Újratöltés" -#: gitk:1919 +#: gitk:1974 msgid "Reread references" msgstr "Referenciák újraolvasása" -#: gitk:1920 +#: gitk:1975 msgid "List references" msgstr "Referenciák listázása" -#: gitk:1922 +#: gitk:1977 msgid "Start git gui" msgstr "Git gui indítása" -#: gitk:1924 +#: gitk:1979 msgid "Quit" msgstr "Kilépés" -#: gitk:1916 +#: gitk:1971 msgid "File" msgstr "Fájl" -#: gitk:1928 +#: gitk:1983 msgid "Preferences" msgstr "Beállítások" -#: gitk:1927 +#: gitk:1982 msgid "Edit" msgstr "Szerkesztés" -#: gitk:1932 +#: gitk:1987 msgid "New view..." msgstr "Új nézet ..." -#: gitk:1933 +#: gitk:1988 msgid "Edit view..." msgstr "Nézet szerkesztése ..." -#: gitk:1934 +#: gitk:1989 msgid "Delete view" msgstr "Nézet törlése" -#: gitk:1936 +#: gitk:1991 msgid "All files" msgstr "Minden fájl" -#: gitk:1931 gitk:3666 +#: gitk:1986 gitk:3805 msgid "View" msgstr "Nézet" -#: gitk:1941 gitk:1951 gitk:2650 +#: gitk:1996 gitk:2006 gitk:2777 msgid "About gitk" msgstr "Gitk névjegy" -#: gitk:1942 gitk:1956 +#: gitk:1997 gitk:2011 msgid "Key bindings" msgstr "Billentyűkombináció" -#: gitk:1940 gitk:1955 +#: gitk:1995 gitk:2010 msgid "Help" msgstr "Segítség" -#: gitk:2016 +#: gitk:2088 msgid "SHA1 ID: " msgstr "SHA1 ID: " -#: gitk:2047 +#: gitk:2119 msgid "Row" msgstr "Sor" -#: gitk:2078 +#: gitk:2157 msgid "Find" msgstr "Keresés" -#: gitk:2079 +#: gitk:2158 msgid "next" msgstr "következő" -#: gitk:2080 +#: gitk:2159 msgid "prev" msgstr "előző" -#: gitk:2081 +#: gitk:2160 msgid "commit" msgstr "commit" -#: gitk:2084 gitk:2086 gitk:4222 gitk:4245 gitk:4269 gitk:6210 gitk:6282 -#: gitk:6366 +#: gitk:2163 gitk:2165 gitk:4419 gitk:4442 gitk:4466 gitk:6407 gitk:6479 +#: gitk:6563 msgid "containing:" msgstr "tartalmazás:" -#: gitk:2087 gitk:3158 gitk:3163 gitk:4297 +#: gitk:2166 gitk:3287 gitk:3292 gitk:4494 msgid "touching paths:" msgstr "érintendő útvonalak:" -#: gitk:2088 gitk:4302 +#: gitk:2167 gitk:4499 msgid "adding/removing string:" msgstr "string hozzáadása/törlése:" -#: gitk:2097 gitk:2099 +#: gitk:2176 gitk:2178 msgid "Exact" msgstr "Pontos" -#: gitk:2099 gitk:4377 gitk:6178 +#: gitk:2178 gitk:4574 gitk:6375 msgid "IgnCase" msgstr "Kis/nagy betű nem számít" -#: gitk:2099 gitk:4271 gitk:4375 gitk:6174 +#: gitk:2178 gitk:4468 gitk:4572 gitk:6371 msgid "Regexp" msgstr "Regexp" -#: gitk:2101 gitk:2102 gitk:4396 gitk:4426 gitk:4433 gitk:6302 gitk:6370 +#: gitk:2180 gitk:2181 gitk:4593 gitk:4623 gitk:4630 gitk:6499 gitk:6567 msgid "All fields" msgstr "Minden mező" -#: gitk:2102 gitk:4394 gitk:4426 gitk:6241 +#: gitk:2181 gitk:4591 gitk:4623 gitk:6438 msgid "Headline" msgstr "Főcím" -#: gitk:2103 gitk:4394 gitk:6241 gitk:6370 gitk:6804 +#: gitk:2182 gitk:4591 gitk:6438 gitk:6567 gitk:7000 msgid "Comments" msgstr "Megjegyzések" -#: gitk:2103 gitk:4394 gitk:4398 gitk:4433 gitk:6241 gitk:6739 gitk:7991 -#: gitk:8006 +#: gitk:2182 gitk:4591 gitk:4595 gitk:4630 gitk:6438 gitk:6935 gitk:8280 +#: gitk:8295 msgid "Author" msgstr "Szerző" -#: gitk:2103 gitk:4394 gitk:6241 gitk:6741 +#: gitk:2182 gitk:4591 gitk:6438 gitk:6937 msgid "Committer" msgstr "Commitoló" -#: gitk:2132 +#: gitk:2213 msgid "Search" msgstr "Keresés" -#: gitk:2139 +#: gitk:2221 msgid "Diff" msgstr "Diff" -#: gitk:2141 +#: gitk:2223 msgid "Old version" msgstr "Régi verzió" -#: gitk:2143 +#: gitk:2225 msgid "New version" msgstr "Új verzió" -#: gitk:2145 +#: gitk:2227 msgid "Lines of context" msgstr "Tartalmi sorok" -#: gitk:2155 +#: gitk:2237 msgid "Ignore space change" msgstr "Space váltás mellőzése" -#: gitk:2213 +#: gitk:2296 msgid "Patch" msgstr "Patch" -#: gitk:2215 +#: gitk:2298 msgid "Tree" msgstr "Tree" -#: gitk:2359 gitk:2376 +#: gitk:2453 gitk:2470 msgid "Diff this -> selected" msgstr "Diff ezeket -> kiválasztott" -#: gitk:2360 gitk:2377 +#: gitk:2454 gitk:2471 msgid "Diff selected -> this" msgstr "Diff kiválasztottakat -> ezt" -#: gitk:2361 gitk:2378 +#: gitk:2455 gitk:2472 msgid "Make patch" msgstr "Patch készítése" -#: gitk:2362 gitk:8369 +#: gitk:2456 gitk:8687 msgid "Create tag" msgstr "Tag készítése" -#: gitk:2363 gitk:8475 +#: gitk:2457 gitk:8793 msgid "Write commit to file" msgstr "Commit fáljba írása" -#: gitk:2364 gitk:8532 +#: gitk:2458 gitk:8850 msgid "Create new branch" msgstr "Új branch készítése" -#: gitk:2365 +#: gitk:2459 msgid "Cherry-pick this commit" msgstr "Cherry-pick erre a commitra" -#: gitk:2366 +#: gitk:2460 msgid "Reset HEAD branch to here" msgstr "HEAD branch újraindítása ide" -#: gitk:2367 +#: gitk:2461 msgid "Mark this commit" msgstr "Ezen commit megjelölése" -#: gitk:2368 +#: gitk:2462 msgid "Return to mark" msgstr "Visszatérés a megjelöléshez" -#: gitk:2369 +#: gitk:2463 msgid "Find descendant of this and mark" msgstr "Találd meg ezen utódokat és jelöld meg" -#: gitk:2370 +#: gitk:2464 msgid "Compare with marked commit" msgstr "Összehasonlítás a megjelölt commit-tal" -#: gitk:2384 +#: gitk:2478 msgid "Check out this branch" msgstr "Check out ezt a branchot" -#: gitk:2385 +#: gitk:2479 msgid "Remove this branch" msgstr "Töröld ezt a branch-ot" -#: gitk:2392 +#: gitk:2486 msgid "Highlight this too" msgstr "Emeld ki ezt is" -#: gitk:2393 +#: gitk:2487 msgid "Highlight this only" msgstr "Csak ezt emeld ki" -#: gitk:2394 +#: gitk:2488 msgid "External diff" msgstr "Külső diff" -#: gitk:2395 +#: gitk:2489 msgid "Blame parent commit" msgstr "Blame szülő kommitra" -#: gitk:2402 +#: gitk:2496 msgid "Show origin of this line" msgstr "Mutasd meg ennek a sornak az eredetét" -#: gitk:2403 +#: gitk:2497 msgid "Run git gui blame on this line" msgstr "Futtasd a git gui blame-t ezen a soron" -#: gitk:2652 +#: gitk:2779 msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright ©9 2005-2009 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - commit nézegető a githez\n" "\n" -"Szerzői jog © 2005-2008 Paul Mackerras\n" +"Szerzői jog ©9 2005-2009 Paul Mackerras\n" "\n" -"Használd és terjeszd a GNU General Public License feltételei mellett " -"Licensz" +"Használd és terjeszd a GNU General Public License feltételei mellett" -#: gitk:2660 gitk:2722 gitk:8897 +#: gitk:2787 gitk:2851 gitk:9215 msgid "Close" msgstr "Bezárás" -#: gitk:2679 +#: gitk:2808 msgid "Gitk key bindings" msgstr "Gitk-billentyű hozzárendelés" -#: gitk:2682 +#: gitk:2811 msgid "Gitk key bindings:" msgstr "Gitk-billentyű hozzaárendelés:" -#: gitk:2684 +#: gitk:2813 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tKilépés" -#: gitk:2685 +#: gitk:2814 msgid "\t\tMove to first commit" msgstr "\t\tElső commithoz" -#: gitk:2686 +#: gitk:2815 msgid "\t\tMove to last commit" msgstr "\t\tUtolsó commithoz" -#: gitk:2687 +#: gitk:2816 msgid ", p, i\tMove up one commit" msgstr ", p, i\tEgy committal feljebb" -#: gitk:2688 +#: gitk:2817 msgid ", n, k\tMove down one commit" msgstr ", n, k\tEgy committal lejjebb" -#: gitk:2689 +#: gitk:2818 msgid ", z, j\tGo back in history list" msgstr ", z, j\tVissza a history listába" -#: gitk:2690 +#: gitk:2819 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tElőre a history listába" -#: gitk:2691 +#: gitk:2820 msgid "\tMove up one page in commit list" msgstr "\tEgy lappal feljebb a commit listába" -#: gitk:2692 +#: gitk:2821 msgid "\tMove down one page in commit list" msgstr "\tEgy lappal lejjebb a commit listába" -#: gitk:2693 +#: gitk:2822 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Pos1>\tGörgetés a commit lista tetejéhez" -#: gitk:2694 +#: gitk:2823 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-Ende>\tGörgetés a commit lista aljához" -#: gitk:2695 +#: gitk:2824 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Hoch>\tEgy sorral feljebb görgetés a commit listában" -#: gitk:2696 +#: gitk:2825 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Runter>\tEgy sorral lejjebb görgetés a commit listában" -#: gitk:2697 +#: gitk:2826 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-BildHoch>\tEgy lappal feljebb görgetés a commit listában" -#: gitk:2698 +#: gitk:2827 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-BildRunter>\tEgy sorral lejjebb görgetés a commit listában" -#: gitk:2699 +#: gitk:2828 msgid "\tFind backwards (upwards, later commits)" msgstr "\tKeresés visszafele (felfele, utolsó commitok)" -#: gitk:2700 +#: gitk:2829 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tKeresés előre (lefelé; korábbi commitok)" -#: gitk:2701 +#: gitk:2830 msgid ", b\tScroll diff view up one page" msgstr ", b\t\tEgy lappal feljebb görgetés a diff nézetben" -#: gitk:2702 +#: gitk:2831 msgid "\tScroll diff view up one page" msgstr "\tEgy lappal feljebb görgetés a diff nézetben" -#: gitk:2703 +#: gitk:2832 msgid "\t\tScroll diff view down one page" msgstr "\tEgy lappal lejjebb görgetés a diff nézetben" -#: gitk:2704 +#: gitk:2833 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\t18 sorral felfelé görgetés diff nézetben" -#: gitk:2705 +#: gitk:2834 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\t18 sorral lejjebb görgetés a diff nézetben" -#: gitk:2706 +#: gitk:2835 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tKeresés" -#: gitk:2707 +#: gitk:2836 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tKövetkező találathoz" -#: gitk:2708 +#: gitk:2837 msgid "\tMove to next find hit" msgstr "\tKövetkező találathoz" -#: gitk:2709 +#: gitk:2838 msgid "/\t\tFocus the search box" msgstr "/\t\tLépj a keresési mezőre" -#: gitk:2710 +#: gitk:2839 msgid "?\t\tMove to previous find hit" msgstr "?\t\tElőző találathoz" -#: gitk:2711 +#: gitk:2840 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tKövetkező fájlra görgetés diff nézetben" -#: gitk:2712 +#: gitk:2841 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tKövetkező találatra keresés diff nézetben" -#: gitk:2713 +#: gitk:2842 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tElőző találatra keresés diff nézetben" -#: gitk:2714 +#: gitk:2843 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Nummerblock-Plus>\tBetűméret növelése" -#: gitk:2715 +#: gitk:2844 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-Plus>\tBetűméret növelése" -#: gitk:2716 +#: gitk:2845 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Nummernblock-Minus> Betűméret csökkentése" -#: gitk:2717 +#: gitk:2846 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-Minus>\tBetűméret csökkentése" -#: gitk:2718 +#: gitk:2847 msgid "\t\tUpdate" msgstr "\t\tFrissítés" -#: gitk:3173 -#, tcl-format -msgid "Error getting \"%s\" from %s:" -msgstr "Hiba történt \"%s\" letöltése közben %s-ről:" - -#: gitk:3230 gitk:3239 +#: gitk:3302 gitk:3311 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Hiba történt az ideiglenes könyvtár létrehozása közben %s:" -#: gitk:3251 +#: gitk:3324 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Hiba történt \"%s\" letöltése közben %s-ről:" + +#: gitk:3387 msgid "command failed:" msgstr "parancs hiba:" -#: gitk:3397 +#: gitk:3536 msgid "No such commit" msgstr "Nincs ilyen commit" -#: gitk:3411 +#: gitk:3550 msgid "git gui blame: command failed:" msgstr "git gui blame: parancs hiba:" -#: gitk:3442 +#: gitk:3581 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Nem sikerült a Merge head olvasása: %s" -#: gitk:3450 +#: gitk:3589 #, tcl-format msgid "Error reading index: %s" msgstr "Hiba történt az index olvasása közben: %s" -#: gitk:3475 +#: gitk:3614 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Nem sikerült a git blame indítása: %s" -#: gitk:3478 gitk:6209 +#: gitk:3617 gitk:6406 msgid "Searching" msgstr "Keresés" -#: gitk:3510 +#: gitk:3649 #, tcl-format msgid "Error running git blame: %s" msgstr "Hiba történt a git blame futtatása közben: %s" -#: gitk:3538 +#: gitk:3677 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" "A %s commitból származik az a sor, amelyik nem található ebben a nézetben" -#: gitk:3552 +#: gitk:3691 msgid "External diff viewer failed:" msgstr "Külső diff nézegető hiba:" -#: gitk:3670 +#: gitk:3809 msgid "Gitk view definition" msgstr "Gitk nézet meghatározása" -#: gitk:3674 +#: gitk:3813 msgid "Remember this view" msgstr "Maradj ennél a nézetnél" -#: gitk:3675 -msgid "Commits to include (arguments to git log):" -msgstr "Beleértendő commitok (Argumentok a git log-hoz):" +#: gitk:3814 +msgid "References (space separated list):" +msgstr "Referenciák (szóközzel tagolt lista" -#: gitk:3676 -msgid "Use all refs" -msgstr "Használd az összes referenciát" +#: gitk:3815 +msgid "Branches & tags:" +msgstr "Branch-ek & tagek:" -#: gitk:3677 +#: gitk:3816 +msgid "All refs" +msgstr "Minden ref" + +#: gitk:3817 +msgid "All (local) branches" +msgstr "Minden (helyi) branch" + +#: gitk:3818 +msgid "All tags" +msgstr "Minden tag" + +#: gitk:3819 +msgid "All remote-tracking branches" +msgstr "Minden távoli követő branch" + +#: gitk:3820 +msgid "Commit Info (regular expressions):" +msgstr "Commit Infó (reguláris kifejezés):" + +#: gitk:3821 +msgid "Author:" +msgstr "Szerző:" + +#: gitk:3822 +msgid "Committer:" +msgstr "Commitoló:" + +#: gitk:3823 +msgid "Commit Message:" +msgstr "Commit üzenet:" + +#: gitk:3824 +msgid "Matches all Commit Info criteria" +msgstr "Egyezik minen Commit Infó feltétellel" + +#: gitk:3825 +msgid "Changes to Files:" +msgstr "Fájl változások:" + +#: gitk:3826 +msgid "Fixed String" +msgstr "Fix String" + +#: gitk:3827 +msgid "Regular Expression" +msgstr "Reguláris kifejezés" + +#: gitk:3828 +msgid "Search string:" +msgstr "Keresés szöveg:" + +#: gitk:3829 +msgid "" +"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" +msgstr "" +"Commit Dátumok (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" + +#: gitk:3830 +msgid "Since:" +msgstr "Ettől:" + +#: gitk:3831 +msgid "Until:" +msgstr "Eddig:" + +#: gitk:3832 +msgid "Limit and/or skip a number of revisions (positive integer):" +msgstr "Limitálva és/vagy kihagyva egy adott számú revíziót (pozitív egész):" + +#: gitk:3833 +msgid "Number to show:" +msgstr "Mutatandó szám:" + +#: gitk:3834 +msgid "Number to skip:" +msgstr "Kihagyandó szám:" + +#: gitk:3835 +msgid "Miscellaneous options:" +msgstr "Különféle opciók:" + +#: gitk:3836 msgid "Strictly sort by date" msgstr "Szigorú rendezás dátum alapján" -#: gitk:3678 +#: gitk:3837 msgid "Mark branch sides" msgstr "Jelölje meg az ágakat" -#: gitk:3679 -msgid "Since date:" -msgstr "Ettől:" - -#: gitk:3680 -msgid "Until date:" -msgstr "Eddig:" - -#: gitk:3681 -msgid "Max count:" -msgstr "Max. szám:" - -#: gitk:3682 -msgid "Skip:" -msgstr "Kihagy:" - -#: gitk:3683 +#: gitk:3838 msgid "Limit to first parent" msgstr "Korlátozás az első szülőre" -#: gitk:3684 -msgid "Command to generate more commits to include:" -msgstr "Parancs több tartalmazó commit generálására:" +#: gitk:3839 +msgid "Simple history" +msgstr "Egyszerű history" -#: gitk:3780 -msgid "Gitk: edit view" -msgstr "Gitk: szerkesztés nézet" - -#: gitk:3793 -msgid "Name" -msgstr "Név" +#: gitk:3840 +msgid "Additional arguments to git log:" +msgstr "További argumentok a git log-hoz:" #: gitk:3841 msgid "Enter files and directories to include, one per line:" msgstr "Fájlok és könyvtárak bejegyzése amiket tartalmaz, soronként:" -#: gitk:3855 +#: gitk:3842 +msgid "Command to generate more commits to include:" +msgstr "Parancs több tartalmazó commit generálására:" + +#: gitk:3964 +msgid "Gitk: edit view" +msgstr "Gitk: szerkesztés nézet" + +#: gitk:3972 +msgid "-- criteria for selecting revisions" +msgstr "-- kritériumok a revíziók kiválasztásához" + +#: gitk:3977 +msgid "View Name" +msgstr "Nézet neve" + +#: gitk:4052 msgid "Apply (F5)" msgstr "Alkalmaz (F5)" -#: gitk:3893 +#: gitk:4090 msgid "Error in commit selection arguments:" msgstr "Hiba történt a commit argumentumok kiválasztása közben:" -#: gitk:3946 gitk:3998 gitk:4446 gitk:4460 gitk:5721 gitk:11114 gitk:11115 +#: gitk:4143 gitk:4195 gitk:4643 gitk:4657 gitk:5918 gitk:11519 gitk:11520 msgid "None" msgstr "Keine" -#: gitk:4394 gitk:6241 gitk:7993 gitk:8008 +#: gitk:4591 gitk:6438 gitk:8282 gitk:8297 msgid "Date" msgstr "Dátum" -#: gitk:4394 gitk:6241 +#: gitk:4591 gitk:6438 msgid "CDate" msgstr "Dátum" -#: gitk:4543 gitk:4548 +#: gitk:4740 gitk:4745 msgid "Descendant" msgstr "Leszármazott" -#: gitk:4544 +#: gitk:4741 msgid "Not descendant" msgstr "Nem leszármazott" -#: gitk:4551 gitk:4556 +#: gitk:4748 gitk:4753 msgid "Ancestor" msgstr "Előd" -#: gitk:4552 +#: gitk:4749 msgid "Not ancestor" msgstr "Nem előd" -#: gitk:4842 +#: gitk:5039 msgid "Local changes checked in to index but not committed" -msgstr "Lokális változtatások, melyek be vannak téve az indexbe, de még nincsenek commitolva" +msgstr "" +"Lokális változtatások, melyek be vannak téve az indexbe, de még nincsenek " +"commitolva" -#: gitk:4878 +#: gitk:5075 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokális nem commitolt változások, nincsenek betéve az indexbe" -#: gitk:6559 +#: gitk:6756 msgid "many" msgstr "sok" -#: gitk:6743 +#: gitk:6939 msgid "Tags:" msgstr "Tagek:" -#: gitk:6760 gitk:6766 gitk:7986 +#: gitk:6956 gitk:6962 gitk:8275 msgid "Parent" msgstr "Eltern" -#: gitk:6771 +#: gitk:6967 msgid "Child" msgstr "Gyerek" -#: gitk:6780 +#: gitk:6976 msgid "Branch" msgstr "Ág" -#: gitk:6783 +#: gitk:6979 msgid "Follows" msgstr "Következők" -#: gitk:6786 +#: gitk:6982 msgid "Precedes" msgstr "Megelőzők" -#: gitk:7279 +#: gitk:7519 #, tcl-format msgid "Error getting diffs: %s" msgstr "Hiba történt a diff-ek letöltése közben: %s" -#: gitk:7819 +#: gitk:8103 msgid "Goto:" msgstr "Menj:" -#: gitk:7821 +#: gitk:8105 msgid "SHA1 ID:" msgstr "SHA1 ID:" -#: gitk:7840 +#: gitk:8124 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Rövid SHA1 id %s félreérthető" -#: gitk:7852 +#: gitk:8131 +msgid "Revision %s is not known" +msgstr "A(z) %s revízió nem ismert" + +#: gitk:8141 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA1 id %s nem ismert" -#: gitk:7854 +#: gitk:8143 #, tcl-format -msgid "Tag/Head %s is not known" -msgstr "Tag/Head %s nem ismert" +msgid "Revision %s is not in the current view" +msgstr "A(z) %s revízió nincs a jelenlegi nézetben" -#: gitk:7996 +#: gitk:8285 msgid "Children" msgstr "Gyerekek" -#: gitk:8053 +#: gitk:8343 #, tcl-format msgid "Reset %s branch to here" msgstr "Állítsd vissza a %s branch-ot ide" -#: gitk:8055 +#: gitk:8345 msgid "Detached head: can't reset" msgstr "Elkülönített head: nem lehet visszaállítani" -#: gitk:8164 gitk:8170 +#: gitk:8454 gitk:8460 msgid "Skipping merge commit " msgstr "Merge commit kihagyása " -#: gitk:8179 gitk:8184 +#: gitk:8469 gitk:8474 msgid "Error getting patch ID for " msgstr "Hiba történt a patch ID megszerzése közben a következőnél " -#: gitk:8180 gitk:8185 +#: gitk:8470 gitk:8475 msgid " - stopping\n" msgstr " - abbahagyás\n" -#: gitk:8190 gitk:8193 gitk:8201 gitk:8211 gitk:8220 +#: gitk:8480 gitk:8483 gitk:8491 gitk:8505 gitk:8514 msgid "Commit " msgstr "Commit " -#: gitk:8194 +#: gitk:8484 msgid "" " is the same patch as\n" " " @@ -760,7 +850,7 @@ msgstr "" " Ugyanaz a patch mint\n" " " -#: gitk:8202 +#: gitk:8492 msgid "" " differs from\n" " " @@ -768,126 +858,139 @@ msgstr "" " különbözik innentől\n" " " -#: gitk:8204 -msgid "- stopping\n" -msgstr "- abbahagyás.\n" +#: gitk:8494 +msgid "" +"Diff of commits:\n" +"\n" +msgstr "" +"A commitok diffje:\n" +"\n" -#: gitk:8212 gitk:8221 +#: gitk:8506 gitk:8515 #, tcl-format msgid " has %s children - stopping\n" msgstr " %s gyereke van. abbahagyás\n" -#: gitk:8252 +#: gitk:8534 +msgid "Error writing commit to file: %s" +msgstr "Hiba történt a commit fájlba írása közben: %s" + +#: gitk:8540 +msgid "Error diffing commits: %s" +msgstr "Hiba történt a commitok diffelése közben: %s" + +#: gitk:8570 msgid "Top" msgstr "Teteje" -#: gitk:8253 +#: gitk:8571 msgid "From" msgstr "Innen" -#: gitk:8258 +#: gitk:8576 msgid "To" msgstr "Ide" -#: gitk:8282 +#: gitk:8600 msgid "Generate patch" msgstr "Patch generálása" -#: gitk:8284 +#: gitk:8602 msgid "From:" msgstr "Innen:" -#: gitk:8293 +#: gitk:8611 msgid "To:" msgstr "Ide:" -#: gitk:8302 +#: gitk:8620 msgid "Reverse" msgstr "Visszafele" -#: gitk:8304 gitk:8489 +#: gitk:8622 gitk:8807 msgid "Output file:" msgstr "Kimeneti fájl:" -#: gitk:8310 +#: gitk:8628 msgid "Generate" msgstr "Generálás" -#: gitk:8348 +#: gitk:8666 msgid "Error creating patch:" msgstr "Hiba törtét a patch készítése közben:" -#: gitk:8371 gitk:8477 gitk:8534 +#: gitk:8689 gitk:8795 gitk:8852 msgid "ID:" msgstr "ID:" -#: gitk:8380 +#: gitk:8698 msgid "Tag name:" msgstr "Tag név:" -#: gitk:8384 gitk:8543 +#: gitk:8702 gitk:8861 msgid "Create" msgstr "Létrehozás" -#: gitk:8401 +#: gitk:8719 msgid "No tag name specified" msgstr "A tag neve nincsen megadva" -#: gitk:8405 +#: gitk:8723 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "%s Tag már létezik" -#: gitk:8411 +#: gitk:8729 msgid "Error creating tag:" msgstr "Hiba történt a tag létrehozása közben:" -#: gitk:8486 +#: gitk:8804 msgid "Command:" msgstr "Parancs:" -#: gitk:8494 +#: gitk:8812 msgid "Write" msgstr "Írás" -#: gitk:8512 +#: gitk:8830 msgid "Error writing commit:" msgstr "Hiba történt a commit írása közben:" -#: gitk:8539 +#: gitk:8857 msgid "Name:" msgstr "Név:" -#: gitk:8562 +#: gitk:8880 msgid "Please specify a name for the new branch" msgstr "Kérem adja meg a nevét az új branchhoz" -#: gitk:8567 +#: gitk:8885 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "%s branch már létezik. Felülírja?" -#: gitk:8633 +#: gitk:8951 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "%s commit már benne van a %s branchban -- biztos hogy újra csinálja ?" "eintragen?" -#: gitk:8638 +#: gitk:8956 msgid "Cherry-picking" msgstr "Cherry-picking" -#: gitk:8647 +#: gitk:8965 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" "Please commit, reset or stash your changes and try again." msgstr "" "Cherry-pick hiba történt lokális váltotások miatt a '%s' fájlban.\n" -"Kérem commitolja, indítsa újra vagy rejtse el a változtatásait és próbálja újra." +"Kérem commitolja, indítsa újra vagy rejtse el a változtatásait és próbálja " +"újra." -#: gitk:8653 +#: gitk:8971 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -895,33 +998,32 @@ msgstr "" "Cherry-pick hiba történt merge konfliktus miatt.\n" "Kívánja futtatni a git citool-t a probléma megoldásához?" -#: gitk:8669 +#: gitk:8987 msgid "No changes committed" msgstr "Nincsen változás commitolva" -#: gitk:8695 +#: gitk:9013 msgid "Confirm reset" msgstr "Újraindítás megerősítése" -#: gitk:8697 +#: gitk:9015 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Újraindítja a %s branchot %s-ig?" -#: gitk:8701 +#: gitk:9017 msgid "Reset type:" msgstr "Újraindítás típusa:" -#: gitk:8705 +#: gitk:9020 msgid "Soft: Leave working tree and index untouched" msgstr "Soft: Hagyd a working tree-t és az indexet érintetlenül" -#: gitk:8708 +#: gitk:9023 msgid "Mixed: Leave working tree untouched, reset index" -msgstr "" -"Kevert: Hagyd a working tree-t érintetlenül, töröld az indexet" +msgstr "Kevert: Hagyd a working tree-t érintetlenül, töröld az indexet" -#: gitk:8711 +#: gitk:9026 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -929,20 +1031,19 @@ msgstr "" "Hard: Indítsd újra a working tree-t és az indexet\n" "(MINDEN lokális változás eldobása)" -#: gitk:8728 +#: gitk:9043 msgid "Resetting" msgstr "Újraindítás" -#: gitk:8785 +#: gitk:9103 msgid "Checking out" msgstr "Kivesz" -#: gitk:8838 +#: gitk:9156 msgid "Cannot delete the currently checked-out branch" -msgstr "" -"Nem lehet a jelenleg kivett branch-ot törölni" +msgstr "Nem lehet a jelenleg kivett branch-ot törölni" -#: gitk:8844 +#: gitk:9162 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -951,199 +1052,244 @@ msgstr "" "A %s branchon található commit nem található meg semelyik másik branchon.\n" "Tényleg törli a %s branchot?" -#: gitk:8875 +#: gitk:9193 #, tcl-format msgid "Tags and heads: %s" msgstr "Tagek és headek: %s" -#: gitk:8890 +#: gitk:9208 msgid "Filter" msgstr "Szűrő" -#: gitk:9185 +#: gitk:9503 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." msgstr "" -"Hiba történt a commit topológiai információ olvasása közben; branch és" -"a megelőző/következő információ nem lesz teljes." +"Hiba történt a commit topológiai információ olvasása közben; branch ésa " +"megelőző/következő információ nem lesz teljes." -#: gitk:10171 +#: gitk:10489 msgid "Tag" msgstr "Tag" -#: gitk:10171 +#: gitk:10489 msgid "Id" msgstr "Id" -#: gitk:10219 +#: gitk:10539 msgid "Gitk font chooser" msgstr "Gitk-betű kiválasztó" -#: gitk:10236 +#: gitk:10556 msgid "B" msgstr "F" -#: gitk:10239 +#: gitk:10559 msgid "I" msgstr "K" -#: gitk:10334 +#: gitk:10677 msgid "Gitk preferences" msgstr "Gitk beállítások" -#: gitk:10336 +#: gitk:10679 msgid "Commit list display options" msgstr "Commit lista kijelzési opciók" -#: gitk:10339 +#: gitk:10682 msgid "Maximum graph width (lines)" msgstr "Maximális grafikon szélesség (sorok)" -#: gitk:10343 +#: gitk:10685 #, tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximális grafikon szélesség (táble %-je)" -#: gitk:10347 +#: gitk:10688 msgid "Show local changes" msgstr "Mutasd a lokális változtatásokat" -#: gitk:10350 +#: gitk:10691 msgid "Auto-select SHA1" msgstr "SHA1 Automatikus kiválasztása" -#: gitk:10354 +#: gitk:10694 +msgid "Hide remote refs" +msgstr "A távoli refek elrejtése" + +#: gitk:10698 msgid "Diff display options" msgstr "Diff kijelző opciók" -#: gitk:10356 +#: gitk:10700 msgid "Tab spacing" msgstr "Tab sorköz" -#: gitk:10359 +#: gitk:10703 msgid "Display nearby tags" msgstr "Szomszédos tagek kijelzése" -#: gitk:10362 +#: gitk:10706 msgid "Limit diffs to listed paths" msgstr "Korlátozott diffek a kilistázott útvonalakhoz" -#: gitk:10365 +#: gitk:10709 msgid "Support per-file encodings" msgstr "Fájlonkénti kódolás támgatása" -#: gitk:10371 gitk:10436 +#: gitk:10715 gitk:10804 msgid "External diff tool" msgstr "Külső diff alkalmazás" -#: gitk:10373 +#: gitk:10716 msgid "Choose..." msgstr "Válaszd ..." -#: gitk:10378 +#: gitk:10721 +msgid "General options" +msgstr "Általános opciók" + +#: gitk:10724 +msgid "Use themed widgets" +msgstr "Témázott vezérlők használata" + +#: gitk:10726 +msgid "(change requires restart)" +msgstr "(a változás újraindítást igényel)" + +#: gitk:10728 +msgid "(currently unavailable)" +msgstr "(jelenleg nem elérhető)" + +#: gitk:10732 msgid "Colors: press to choose" msgstr "Színek: nyomja meg a kiválasztáshoz" -#: gitk:10381 +#: gitk:10735 +msgid "Interface" +msgstr "Interfész" + +#: gitk:10736 +msgid "interface" +msgstr "interfész" + +#: gitk:10739 msgid "Background" msgstr "Háttér" -#: gitk:10382 gitk:10412 +#: gitk:10740 gitk:10770 msgid "background" msgstr "háttér" -#: gitk:10385 +#: gitk:10743 msgid "Foreground" msgstr "Előtér" -#: gitk:10386 +#: gitk:10744 msgid "foreground" msgstr "előtér" -#: gitk:10389 +#: gitk:10747 msgid "Diff: old lines" msgstr "Diff: régi sorok" -#: gitk:10390 +#: gitk:10748 msgid "diff old lines" msgstr "diff régi sorok" -#: gitk:10394 +#: gitk:10752 msgid "Diff: new lines" msgstr "Diff: új sorok" -#: gitk:10395 +#: gitk:10753 msgid "diff new lines" msgstr "diff - új sorok" -#: gitk:10399 +#: gitk:10757 msgid "Diff: hunk header" msgstr "Diff: nagy headerök" -#: gitk:10401 +#: gitk:10759 msgid "diff hunk header" msgstr "diff - nagy headerök" -#: gitk:10405 +#: gitk:10763 msgid "Marked line bg" msgstr "Megjelölt sor háttér" -#: gitk:10407 +#: gitk:10765 msgid "marked line background" msgstr "megjelölt sor háttér" -#: gitk:10411 +#: gitk:10769 msgid "Select bg" msgstr "Válasszon hátteret" -#: gitk:10415 +#: gitk:10773 msgid "Fonts: press to choose" msgstr "Betű: nyomja meg a kiválasztáshoz" -#: gitk:10417 +#: gitk:10775 msgid "Main font" msgstr "Fő betű" -#: gitk:10418 +#: gitk:10776 msgid "Diff display font" msgstr "Diff kijelző betű" -#: gitk:10419 +#: gitk:10777 msgid "User interface font" msgstr "Felhasználói interfész betű" -#: gitk:10446 +#: gitk:10814 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: válasszon színt a %s-ra" -#: gitk:10893 -msgid "" -"Sorry, gitk cannot run with this version of Tcl/Tk.\n" -" Gitk requires at least Tcl/Tk 8.4." -msgstr "" -"Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n" -"Gitk futtatásához legalább Tcl/Tk 8.4 szükséges." - -#: gitk:11020 +#: gitk:11418 msgid "Cannot find a git repository here." msgstr "Nem találhatü git repository itt." -#: gitk:11024 +#: gitk:11422 #, tcl-format msgid "Cannot find the git directory \"%s\"." msgstr "Nem található a \"%s\" könyvtár." -#: gitk:11071 +#: gitk:11469 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Félreérthető argumentum '%s': revízió és fájlnév is" -#: gitk:11083 +#: gitk:11481 msgid "Bad arguments to gitk:" msgstr "Rossz gitk argumentumok:" -#: gitk:11167 +#: gitk:11572 msgid "Command line" msgstr "Parancs sor" + +#~ msgid "Use all refs" +#~ msgstr "Használd az összes referenciát" + +#~ msgid "Max count:" +#~ msgstr "Max. szám:" + +#~ msgid "Skip:" +#~ msgstr "Kihagy:" + +#~ msgid "Name" +#~ msgstr "Név" + +#~ msgid "Tag/Head %s is not known" +#~ msgstr "Tag/Head %s nem ismert" + +#~ msgid "- stopping\n" +#~ msgstr "- abbahagyás.\n" + +#~ msgid "" +#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" +#~ " Gitk requires at least Tcl/Tk 8.4." +#~ msgstr "" +#~ "Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n" +#~ "Gitk futtatásához legalább Tcl/Tk 8.4 szükséges." From dfb891e35100cf78873c5cf81ffe778dbe235ef5 Mon Sep 17 00:00:00 2001 From: Dave Dulson Date: Sun, 3 Jan 2010 14:55:52 +0000 Subject: [PATCH 04/66] gitk: Enable gitk to create tags with messages Currently, tags created using the "create tag" dialog in gitk are always lightweight tags, i.e., they don't have any annotation (message). This enables the user to specify a message; if they do, gitk will create an unsigned, annotated tag object. Signed-off-by: David Dulson Signed-off-by: Paul Mackerras --- gitk | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gitk b/gitk index 86dff0fc06..0b3e5bca73 100755 --- a/gitk +++ b/gitk @@ -8701,6 +8701,11 @@ proc mktag {} { ${NS}::label $top.tlab -text [mc "Tag name:"] ${NS}::entry $top.tag -width 60 grid $top.tlab $top.tag -sticky w + ${NS}::label $top.op -text [mc "Tag message is optional"] + grid $top.op -columnspan 2 -sticky we + ${NS}::label $top.mlab -text [mc "Tag message:"] + ${NS}::entry $top.msg -width 60 + grid $top.mlab $top.msg -sticky w ${NS}::frame $top.buts ${NS}::button $top.buts.gen -text [mc "Create"] -command mktaggo ${NS}::button $top.buts.can -text [mc "Cancel"] -command mktagcan @@ -8718,6 +8723,7 @@ proc domktag {} { set id [$mktagtop.sha1 get] set tag [$mktagtop.tag get] + set msg [$mktagtop.msg get] if {$tag == {}} { error_popup [mc "No tag name specified"] $mktagtop return 0 @@ -8727,7 +8733,11 @@ proc domktag {} { return 0 } if {[catch { - exec git tag $tag $id + if {$msg != {}} { + exec git tag -a -m $msg $tag $id + } else { + exec git tag $tag $id + } } err]} { error_popup "[mc "Error creating tag:"] $err" $mktagtop return 0 From fcacf489577e225d78b290290765775c62c56464 Mon Sep 17 00:00:00 2001 From: Dave Dulson Date: Sun, 3 Jan 2010 14:56:25 +0000 Subject: [PATCH 05/66] gitk: Fix display of newly-created tags If the user creates a tag with the "create tag" dialog in gitk and then clicks on the newly-created tag, its contents don't get displayed. The reason is that rereadrefs hasn't been called, meaning the tag doesn't exist in $tagobjid. This causes the cat-file to fail. Instead of using $tagobjid, pass the $tag directly, ensuring the tag contents are populated correctly. Signed-off-by: David Dulson Signed-off-by: Paul Mackerras --- gitk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitk b/gitk index 0b3e5bca73..de911b6e6d 100755 --- a/gitk +++ b/gitk @@ -10493,7 +10493,7 @@ proc showtag {tag isnew} { set linknum 0 if {![info exists tagcontents($tag)]} { catch { - set tagcontents($tag) [exec git cat-file tag $tagobjid($tag)] + set tagcontents($tag) [exec git cat-file tag $tag] } } if {[info exists tagcontents($tag)]} { From 1f2cecfd53137b76d39b2dcd7bcf7e918cd745b3 Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Tue, 5 Jan 2010 15:44:54 +0300 Subject: [PATCH 06/66] gitk: Display submodule diffs with appropriate encoding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, when submodule commit headings contained non-latin-1 characters, they were displayed incorrectly in gitk, because $line was not properly decoded, for example: ----------------------------- Documentation/Dokko ----------------------------- Submodule Documentation/Dokko 2ca20c7..0ea204d: > Протоколы сопряжения ИМС "Мостик-21631" (ЛИ2 и Сандал) > hardware: документация на InnoDisk SATA 10000 > hardware: документация на IEI PCISA-6770E2 v3.0 > hardware: документация на Fastwel NIB941 > hardware: документация на IEI IPX-9S > hardware: документация на Hirschmann 5TX-EEC instead of ----------------------------- Documentation/Dokko ----------------------------- Submodule Documentation/Dokko 2ca20c7..0ea204d: > Протоколы сопряжения ИМС "Мостик-21631" (ЛИ2 и Сандал) > hardware: документация на InnoDisk SATA 10000 > hardware: документация на IEI PCISA-6770E2 v3.0 > hardware: документация на Fastwel NIB941 > hardware: документация на IEI IPX-9S > hardware: документация на Hirschmann 5TX-EEC This fixes it. Signed-off-by: Kirill Smelkov Signed-off-by: Paul Mackerras --- gitk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitk b/gitk index de911b6e6d..c1e1119dbc 100755 --- a/gitk +++ b/gitk @@ -7689,8 +7689,10 @@ proc getblobdiffline {bdf ids} { makediffhdr $fname $ids $ctext insert end "\n$line\n" filesep } elseif {![string compare -length 3 " >" $line]} { + set line [encoding convertfrom $diffencoding $line] $ctext insert end "$line\n" dresult } elseif {![string compare -length 3 " <" $line]} { + set line [encoding convertfrom $diffencoding $line] $ctext insert end "$line\n" d0 } elseif {$diffinhdr} { if {![string compare -length 12 "rename from " $line]} { From 0359ba72bb3e8d717ee90849e941bbe87b7fbaff Mon Sep 17 00:00:00 2001 From: Markus Heidelberg Date: Sat, 9 Jan 2010 23:11:12 +0100 Subject: [PATCH 07/66] gitk: Adjust two equal strings which differed in whitespace There were the two strings "SHA1 ID: " and "SHA1 ID:" as description for the SHA1 search textbox. Change it to two equal strings, the space is now outside of the translated string. Furthermore the German translation wasn't unique, but "SHA1:" resp. "SHA1-Hashwert:". The former was displayed after initialisation, the latter after changes to the textbox, for example when clearing the text. But it was too long to be displayed fully, so use a shorter translation. Signed-off-by: Markus Heidelberg Signed-off-by: Paul Mackerras --- gitk | 2 +- po/de.po | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gitk b/gitk index c1e1119dbc..48cfce3a0e 100755 --- a/gitk +++ b/gitk @@ -2088,7 +2088,7 @@ proc makewindow {} { set sha1entry .tf.bar.sha1 set entries $sha1entry set sha1but .tf.bar.sha1label - button $sha1but -text [mc "SHA1 ID: "] -state disabled -relief flat \ + button $sha1but -text "[mc "SHA1 ID:"] " -state disabled -relief flat \ -command gotocommit -width 8 $sha1but conf -disabledforeground [$sha1but cget -foreground] pack .tf.bar.sha1label -side left diff --git a/po/de.po b/po/de.po index 53ef0d6359..e224595a23 100644 --- a/po/de.po +++ b/po/de.po @@ -708,7 +708,7 @@ msgstr "Gehe zu:" #: gitk:7821 msgid "SHA1 ID:" -msgstr "SHA1-Hashwert:" +msgstr "SHA1 ID:" #: gitk:7840 #, tcl-format From 125fd98434ce773de45c4a40927c222ec5c43ae1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 24 Jan 2010 00:10:20 -0800 Subject: [PATCH 08/66] Make ce_uptodate() trustworthy again The rule has always been that a cache entry that is ce_uptodate(ce) means that we already have checked the work tree entity and we know there is no change in the work tree compared to the index, and nobody should have to double check. Note that false ce_uptodate(ce) does not mean it is known to be dirty---it only means we don't know if it is clean. There are a few codepaths (refresh-index and preload-index are among them) that mark a cache entry as up-to-date based solely on the return value from ie_match_stat(); this function uses lstat() to see if the work tree entity has been touched, and for a submodule entry, if its HEAD points at the same commit as the commit recorded in the index of the superproject (a submodule that is not even cloned is considered clean). A submodule is no longer considered unmodified merely because its HEAD matches the index of the superproject these days, in order to prevent people from forgetting to commit in the submodule and updating the superproject index with the new submodule commit, before commiting the state in the superproject. However, the patch to do so didn't update the codepath that marks cache entries up-to-date based on the updated definition and instead worked it around by saying "we don't trust the return value of ce_uptodate() for submodules." This makes ce_uptodate() trustworthy again by not marking submodule entries up-to-date. The next step _could_ be to introduce a few "in-core" flag bits to cache_entry structure to record "this entry is _known_ to be dirty", call is_submodule_modified() from ie_match_stat(), and use these new bits to avoid running this rather expensive check more than once, but that can be a separate patch. Signed-off-by: Junio C Hamano --- diff-lib.c | 2 +- preload-index.c | 2 ++ read-cache.c | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/diff-lib.c b/diff-lib.c index 23e180eed1..c6c425e624 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -161,7 +161,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option) continue; } - if ((ce_uptodate(ce) && !S_ISGITLINK(ce->ce_mode)) || ce_skip_worktree(ce)) + if (ce_uptodate(ce) || ce_skip_worktree(ce)) continue; /* If CE_VALID is set, don't look at workdir for file removal */ diff --git a/preload-index.c b/preload-index.c index 92899333c2..e3d0bda31a 100644 --- a/preload-index.c +++ b/preload-index.c @@ -47,6 +47,8 @@ static void *preload_thread(void *_data) if (ce_stage(ce)) continue; + if (S_ISGITLINK(ce->ce_mode)) + continue; if (ce_uptodate(ce)) continue; if (!ce_path_match(ce, p->pathspec)) diff --git a/read-cache.c b/read-cache.c index 79938bf09a..309b77a6c9 100644 --- a/read-cache.c +++ b/read-cache.c @@ -612,7 +612,8 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st, if (alias && !ce_stage(alias) && !ie_match_stat(istate, alias, st, ce_option)) { /* Nothing changed, really */ free(ce); - ce_mark_uptodate(alias); + if (!S_ISGITLINK(alias->ce_mode)) + ce_mark_uptodate(alias); alias->ce_flags |= CE_ADDED; return 0; } @@ -1050,7 +1051,8 @@ static struct cache_entry *refresh_cache_ent(struct index_state *istate, * because CE_UPTODATE flag is in-core only; * we are not going to write this change out. */ - ce_mark_uptodate(ce); + if (!S_ISGITLINK(ce->ce_mode)) + ce_mark_uptodate(ce); return ce; } } From 4d34477f4c5dbebc55aa1362fd705440590a85f1 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Sat, 23 Jan 2010 17:37:26 +0100 Subject: [PATCH 09/66] git diff: Don't test submodule dirtiness with --ignore-submodules The diff family suppresses the output of submodule changes when requested but checks them nonetheless. But since recently submodules get examined for their dirtiness, which is rather expensive. There is no need to do that when the --ignore-submodules option is used, as the gathered information is never used anyway. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano --- diff-lib.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/diff-lib.c b/diff-lib.c index c6c425e624..899034d354 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -179,6 +179,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option) } changed = ce_match_stat(ce, &st, ce_option); if (S_ISGITLINK(ce->ce_mode) + && !DIFF_OPT_TST(&revs->diffopt, IGNORE_SUBMODULES) && (!changed || (revs->diffopt.output_format & DIFF_FORMAT_PATCH)) && is_submodule_modified(ce->name)) { changed = 1; @@ -220,7 +221,7 @@ static int get_stat_data(struct cache_entry *ce, const unsigned char **sha1p, unsigned int *modep, int cached, int match_missing, - unsigned *dirty_submodule, int output_format) + unsigned *dirty_submodule, struct diff_options *diffopt) { const unsigned char *sha1 = ce->sha1; unsigned int mode = ce->ce_mode; @@ -241,7 +242,8 @@ static int get_stat_data(struct cache_entry *ce, } changed = ce_match_stat(ce, &st, 0); if (S_ISGITLINK(ce->ce_mode) - && (!changed || (output_format & DIFF_FORMAT_PATCH)) + && !DIFF_OPT_TST(diffopt, IGNORE_SUBMODULES) + && (!changed || (diffopt->output_format & DIFF_FORMAT_PATCH)) && is_submodule_modified(ce->name)) { changed = 1; *dirty_submodule = 1; @@ -270,7 +272,7 @@ static void show_new_file(struct rev_info *revs, * the working copy. */ if (get_stat_data(new, &sha1, &mode, cached, match_missing, - &dirty_submodule, revs->diffopt.output_format) < 0) + &dirty_submodule, &revs->diffopt) < 0) return; diff_index_show_file(revs, "+", new, sha1, mode, dirty_submodule); @@ -287,7 +289,7 @@ static int show_modified(struct rev_info *revs, unsigned dirty_submodule = 0; if (get_stat_data(new, &sha1, &mode, cached, match_missing, - &dirty_submodule, revs->diffopt.output_format) < 0) { + &dirty_submodule, &revs->diffopt) < 0) { if (report_missing) diff_index_show_file(revs, "-", old, old->sha1, old->ce_mode, 0); From 721ceec1ad12625e90b395fd0be0fae9049ebc22 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Sun, 24 Jan 2010 15:09:00 +0100 Subject: [PATCH 10/66] Teach diff --submodule that modified submodule directory is dirty Since commit 8e08b4 git diff does append "-dirty" to the work tree side if the working directory of a submodule contains new or modified files. Lets do the same when the --submodule option is used. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano --- diff.c | 2 +- submodule.c | 3 ++ submodule.h | 1 + t/t4041-diff-submodule.sh | 67 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) diff --git a/diff.c b/diff.c index 160dbfd718..0190ec6d9f 100644 --- a/diff.c +++ b/diff.c @@ -1615,7 +1615,7 @@ static void builtin_diff(const char *name_a, const char *del = diff_get_color_opt(o, DIFF_FILE_OLD); const char *add = diff_get_color_opt(o, DIFF_FILE_NEW); show_submodule_summary(o->file, one ? one->path : two->path, - one->sha1, two->sha1, + one->sha1, two->sha1, two->dirty_submodule, del, add, reset); return; } diff --git a/submodule.c b/submodule.c index f657bee379..ca0527fbcb 100644 --- a/submodule.c +++ b/submodule.c @@ -36,6 +36,7 @@ static int add_submodule_odb(const char *path) void show_submodule_summary(FILE *f, const char *path, unsigned char one[20], unsigned char two[20], + unsigned dirty_submodule, const char *del, const char *add, const char *reset) { struct rev_info rev; @@ -85,6 +86,8 @@ void show_submodule_summary(FILE *f, const char *path, if (!fast_backward && !fast_forward) strbuf_addch(&sb, '.'); strbuf_addf(&sb, "%s", find_unique_abbrev(two, DEFAULT_ABBREV)); + if (dirty_submodule) + strbuf_add(&sb, "-dirty", 6); if (message) strbuf_addf(&sb, " %s\n", message); else diff --git a/submodule.h b/submodule.h index 0773121eb5..233696555e 100644 --- a/submodule.h +++ b/submodule.h @@ -3,6 +3,7 @@ void show_submodule_summary(FILE *f, const char *path, unsigned char one[20], unsigned char two[20], + unsigned dirty_submodule, const char *del, const char *add, const char *reset); int is_submodule_modified(const char *path); diff --git a/t/t4041-diff-submodule.sh b/t/t4041-diff-submodule.sh index 5bb4fed3f5..464305405a 100755 --- a/t/t4041-diff-submodule.sh +++ b/t/t4041-diff-submodule.sh @@ -191,6 +191,73 @@ EOF " commit_file sm1 && +test_expect_success 'submodule is up to date' " + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +EOF +" + +test_expect_success 'submodule contains untracked content' " + echo new > sm1/new-file && + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head6-dirty: +EOF +" + +test_expect_success 'submodule contains untracked and modifed content' " + echo new > sm1/foo6 && + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head6-dirty: +EOF +" + +test_expect_success 'submodule contains modifed content' " + rm -f sm1/new-file && + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head6-dirty: +EOF +" + +(cd sm1; git commit -mchange foo6 >/dev/null) && +head8=$(cd sm1; git rev-parse --verify HEAD | cut -c1-7) && +test_expect_success 'submodule is modified' " + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head8: + > change +EOF +" + +test_expect_success 'modified submodule contains untracked content' " + echo new > sm1/new-file && + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head8-dirty: + > change +EOF +" + +test_expect_success 'modified submodule contains untracked and modifed content' " + echo modification >> sm1/foo6 && + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head8-dirty: + > change +EOF +" + +test_expect_success 'modified submodule contains modifed content' " + rm -f sm1/new-file && + git diff-index -p --submodule=log HEAD >actual && + diff actual - <<-EOF +Submodule sm1 $head6..$head8-dirty: + > change +EOF +" + rm -rf sm1 test_expect_success 'deleted submodule' " git diff-index -p --submodule=log HEAD >actual && From 4cfb2a44bb79fd06763f740754902c31d5ea9ccc Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Mon, 25 Jan 2010 13:32:44 +0100 Subject: [PATCH 11/66] git_connect: use use_shell instead of explicit "sh", "-c" This is a followup to ac0ba18 (run-command: convert simple callsites to use_shell, 2009-12-30), for consistency. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- connect.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/connect.c b/connect.c index db965c9982..3a12562146 100644 --- a/connect.c +++ b/connect.c @@ -613,8 +613,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig, NULL }; conn->env = env; - *arg++ = "sh"; - *arg++ = "-c"; + conn->use_shell = 1; } *arg++ = cmd.buf; *arg = NULL; From 6fce51571cb9aadb0a5e048c89044124271251f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Riveira=20Fern=C3=A1ndez?= Date: Mon, 25 Jan 2010 16:56:21 +0100 Subject: [PATCH 12/66] Add test-run-command to .gitignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add test-run-command to .gitignore so it does not pollute git status output. Signed-off-by: Alejandro Riveira Fernández Signed-off-by: Junio C Hamano --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 83cf1b7532..8df8f88bea 100644 --- a/.gitignore +++ b/.gitignore @@ -166,6 +166,7 @@ /test-match-trees /test-parse-options /test-path-utils +/test-run-command /test-sha1 /test-sigchain /common-cmds.h From 0aa958d4b40159d5e72a521dda1dbe8f6e769e89 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Sun, 24 Jan 2010 23:06:31 -0800 Subject: [PATCH 13/66] rebase: replace antiquated sed invocation Use the modern form of printing a commit subject instead of piping the output of rev-list to sed. Signed-off-by: Stephen Boyd Signed-off-by: Junio C Hamano --- git-rebase.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/git-rebase.sh b/git-rebase.sh index eddc02875f..b5d9178275 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -85,10 +85,8 @@ continue_merge () { printf "Already applied: %0${prec}d " $msgnum fi fi - if test -z "$GIT_QUIET" - then - git rev-list --pretty=oneline -1 "$cmt" | sed -e 's/^[^ ]* //' - fi + test -z "$GIT_QUIET" && + git log --format=%s -1 "$cmt" prev_head=`git rev-parse HEAD^0` # save the resulting commit so we can read-tree on it later From 9567f082ddc1f3143a153d0ecf59f3727ff0f7a5 Mon Sep 17 00:00:00 2001 From: Tay Ray Chuan Date: Mon, 25 Jan 2010 15:42:23 +0800 Subject: [PATCH 14/66] t5541-http-push: make grep expression check for one line only Don't feed a multiple-line pattern to grep and expect the them to match with lines in order. Simplify the grep expressions in the non-fast-forward tests to check only for the first line of the non-fast-forward warning - having that line should be enough assurance that the full warning is printed. Signed-off-by: Tay Ray Chuan Signed-off-by: Junio C Hamano --- t/t5541-http-push.sh | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh index 83a8e14c6c..53f54a2789 100755 --- a/t/t5541-http-push.sh +++ b/t/t5541-http-push.sh @@ -105,10 +105,8 @@ test_expect_success 'non-fast-forward push show ref status' ' ' test_expect_success 'non-fast-forward push shows help message' ' - grep \ -"To prevent you from losing history, non-fast-forward updates were rejected -Merge the remote changes before pushing again. See the '"'non-fast-forward'"' -section of '"'git push --help'"' for details." output + grep "To prevent you from losing history, non-fast-forward updates were rejected" \ + output ' test_expect_success 'push fails for non-fast-forward refs unmatched by remote helper' ' @@ -126,10 +124,8 @@ test_expect_success 'push fails for non-fast-forward refs unmatched by remote he grep "^ + [a-f0-9]*\.\.\.[a-f0-9]* *master -> master (forced update)$" output && grep "^ ! \[rejected\] *master -> retsam (non-fast-forward)$" output && - grep \ -"To prevent you from losing history, non-fast-forward updates were rejected -Merge the remote changes before pushing again. See the '"'non-fast-forward'"' -section of '"'git push --help'"' for details." output + grep "To prevent you from losing history, non-fast-forward updates were rejected" \ + output ' stop_httpd From 2d7f98bac7e1d8b42c558e179ea24f5b06512622 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Sun, 24 Jan 2010 23:05:43 -0800 Subject: [PATCH 15/66] commit-tree: remove unused #define Signed-off-by: Junio C Hamano --- builtin-commit-tree.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/builtin-commit-tree.c b/builtin-commit-tree.c index ddcb7a4bbb..90dac349a3 100644 --- a/builtin-commit-tree.c +++ b/builtin-commit-tree.c @@ -9,8 +9,6 @@ #include "builtin.h" #include "utf8.h" -#define BLOCKING (1ul << 14) - /* * FIXME! Share the code with "write-tree.c" */ From c8610a2e7eca60a060f719f0aeb20f146e339de4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 25 Jan 2010 15:37:23 -0800 Subject: [PATCH 16/66] grep: expose "status-only" feature via -q Teach "git grep" a new "-q" option to report the presense of a match via its exit status without showing any output, similar to how "grep -q" works. Internally "grep" engine already knew this "status-only" mode of operation because it needed to grep inside log message to filter commits when called from the "git log" machinery, and this patch only exposes it to the command line tool. A somewhat unfair benchmark in the Linux kernel directory shows a dramatic improvement: (with patch) $ time ../git.git/git grep -q linux HEAD ; echo $? real 0m0.030s user 0m0.004s sys 0m0.004s 0 (without patch) $ time git grep linux HEAD >/dev/null; echo $? real 0m4.432s user 0m4.272s sys 0m0.076s 0 This is "somewhat unfair" because I knew a file with such a string comes very early in the tree traversal (namely, ".gitignore"). Signed-off-by: Junio C Hamano --- builtin-grep.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/builtin-grep.c b/builtin-grep.c index da854fa94f..64cdfefdd1 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -236,6 +236,8 @@ static int grep_cache(struct grep_opt *opt, const char **paths, int cached) !strcmp(ce->name, active_cache[nr]->name)); nr--; /* compensate for loop control */ } + if (hit && opt->status_only) + break; } free_grep_patterns(opt); return hit; @@ -293,6 +295,8 @@ static int grep_tree(struct grep_opt *opt, const char **paths, hit |= grep_tree(opt, paths, &sub, tree_name, down); free(data); } + if (hit && opt->status_only) + break; } strbuf_release(&pathbuf); return hit; @@ -329,8 +333,11 @@ static int grep_directory(struct grep_opt *opt, const char **paths) setup_standard_excludes(&dir); fill_directory(&dir, paths); - for (i = 0; i < dir.nr; i++) + for (i = 0; i < dir.nr; i++) { hit |= grep_file(opt, dir.entries[i]->name); + if (hit && opt->status_only) + break; + } free_grep_patterns(opt); return hit; } @@ -505,6 +512,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix) { OPTION_CALLBACK, ')', NULL, &opt, NULL, "", PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH, close_callback }, + OPT_BOOLEAN('q', "quick", &opt.status_only, + "indicate hit with exit status without output"), OPT_BOOLEAN(0, "all-match", &opt.all_match, "show only matches from files that match all patterns"), OPT_GROUP(""), @@ -628,8 +637,11 @@ int cmd_grep(int argc, const char **argv, const char *prefix) for (i = 0; i < list.nr; i++) { struct object *real_obj; real_obj = deref_tag(list.objects[i].item, NULL, 0); - if (grep_object(&opt, paths, real_obj, list.objects[i].name)) + if (grep_object(&opt, paths, real_obj, list.objects[i].name)) { hit = 1; + if (opt.status_only) + break; + } } free_grep_patterns(&opt); return !hit; From c4f3f551a61e138f8ace9523d6b16aff37b30302 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Mon, 25 Jan 2010 16:33:57 -0800 Subject: [PATCH 17/66] tests: consolidate CR removal/addition functions append_cr(), remove_cr(), q_to_nul() and q_to_cr() are defined in multiple tests. Consolidate them into test-lib.sh so we can stop redefining them. The use of remove_cr() in t0020 to test for a CR is replaced with a new function has_cr() to accurately reflect what is intended (the output of remove_cr() was being thrown away). Signed-off-by: Stephen Boyd Signed-off-by: Junio C Hamano --- t/t0020-crlf.sh | 55 +++++++++++++---------------------- t/t3400-rebase.sh | 4 --- t/t4012-diff-binary.sh | 4 --- t/t6033-merge-crlf.sh | 8 ----- t/t9401-git-cvsserver-crlf.sh | 8 ----- t/test-lib.sh | 16 ++++++++++ 6 files changed, 37 insertions(+), 58 deletions(-) diff --git a/t/t0020-crlf.sh b/t/t0020-crlf.sh index 4e72b53140..c3e7e322a8 100755 --- a/t/t0020-crlf.sh +++ b/t/t0020-crlf.sh @@ -4,21 +4,8 @@ test_description='CRLF conversion' . ./test-lib.sh -q_to_nul () { - perl -pe 'y/Q/\000/' -} - -q_to_cr () { - tr Q '\015' -} - -append_cr () { - sed -e 's/$/Q/' | tr Q '\015' -} - -remove_cr () { - tr '\015' Q <"$1" | grep Q >/dev/null && - tr '\015' Q <"$1" | sed -ne 's/Q$//p' +has_cr() { + tr '\015' Q <"$1" | grep Q >/dev/null } test_expect_success setup ' @@ -156,7 +143,7 @@ test_expect_success 'checkout with autocrlf=true' ' for f in one dir/two do - remove_cr "$f" >tmp && mv -f tmp $f && + remove_cr <"$f" >tmp && mv -f tmp $f && git update-index -- $f || { echo "Eh? $f" false @@ -180,7 +167,7 @@ test_expect_success 'checkout with autocrlf=input' ' for f in one dir/two do - if remove_cr "$f" >/dev/null + if has_cr "$f" then echo "Eh? $f" false @@ -245,7 +232,7 @@ test_expect_success 'apply patch (autocrlf=true)' ' git read-tree --reset -u HEAD && git apply patch.file && - test "$patched" = "`remove_cr one | git hash-object --stdin`" || { + test "$patched" = "`remove_cr /dev/null + if has_cr dir/two then echo "Huh?" false @@ -293,7 +280,7 @@ test_expect_success '.gitattributes says two is binary' ' : happy fi && - if remove_cr one >/dev/null + if has_cr one then : happy else @@ -301,7 +288,7 @@ test_expect_success '.gitattributes says two is binary' ' false fi && - if remove_cr three >/dev/null + if has_cr three then echo "Huh?" false @@ -316,7 +303,7 @@ test_expect_success '.gitattributes says two is input' ' echo "two crlf=input" >.gitattributes && git read-tree --reset -u HEAD && - if remove_cr dir/two >/dev/null + if has_cr dir/two then echo "Huh?" false @@ -331,7 +318,7 @@ test_expect_success '.gitattributes says two and three are text' ' echo "t* crlf" >.gitattributes && git read-tree --reset -u HEAD && - if remove_cr dir/two >/dev/null + if has_cr dir/two then : happy else @@ -339,7 +326,7 @@ test_expect_success '.gitattributes says two and three are text' ' false fi && - if remove_cr three >/dev/null + if has_cr three then : happy else @@ -357,14 +344,14 @@ test_expect_success 'in-tree .gitattributes (1)' ' rm -rf tmp one dir .gitattributes patch.file three && git read-tree --reset -u HEAD && - if remove_cr one >/dev/null + if has_cr one then echo "Eh? one should not have CRLF" false else : happy fi && - remove_cr three >/dev/null || { + has_cr three || { echo "Eh? three should still have CRLF" false } @@ -376,14 +363,14 @@ test_expect_success 'in-tree .gitattributes (2)' ' git read-tree --reset HEAD && git checkout-index -f -q -u -a && - if remove_cr one >/dev/null + if has_cr one then echo "Eh? one should not have CRLF" false else : happy fi && - remove_cr three >/dev/null || { + has_cr three || { echo "Eh? three should still have CRLF" false } @@ -396,14 +383,14 @@ test_expect_success 'in-tree .gitattributes (3)' ' git checkout-index -u .gitattributes && git checkout-index -u one dir/two three && - if remove_cr one >/dev/null + if has_cr one then echo "Eh? one should not have CRLF" false else : happy fi && - remove_cr three >/dev/null || { + has_cr three || { echo "Eh? three should still have CRLF" false } @@ -416,14 +403,14 @@ test_expect_success 'in-tree .gitattributes (4)' ' git checkout-index -u one dir/two three && git checkout-index -u .gitattributes && - if remove_cr one >/dev/null + if has_cr one then echo "Eh? one should not have CRLF" false else : happy fi && - remove_cr three >/dev/null || { + has_cr three || { echo "Eh? three should still have CRLF" false } @@ -456,7 +443,7 @@ test_expect_success 'checkout when deleting .gitattributes' ' git checkout master~1 && git checkout master && - remove_cr .file2 >/dev/null + has_cr .file2 ' diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index 4e6a44b623..4314ad2d66 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh @@ -134,10 +134,6 @@ test_expect_success 'rebase -q is quiet' ' test ! -s output.out ' -q_to_cr () { - tr Q '\015' -} - test_expect_success 'Rebase a commit that sprinkles CRs in' ' ( echo "One" diff --git a/t/t4012-diff-binary.sh b/t/t4012-diff-binary.sh index f64aa48d24..bc46563afc 100755 --- a/t/t4012-diff-binary.sh +++ b/t/t4012-diff-binary.sh @@ -77,10 +77,6 @@ test_expect_success 'apply binary patch' \ tree1=`git write-tree` && test "$tree1" = "$tree0"' -q_to_nul() { - perl -pe 'y/Q/\000/' -} - nul_to_q() { perl -pe 'y/\000/Q/' } diff --git a/t/t6033-merge-crlf.sh b/t/t6033-merge-crlf.sh index 75d9602de4..e8d65eefb5 100755 --- a/t/t6033-merge-crlf.sh +++ b/t/t6033-merge-crlf.sh @@ -1,13 +1,5 @@ #!/bin/sh -append_cr () { - sed -e 's/$/Q/' | tr Q '\015' -} - -remove_cr () { - tr '\015' Q | sed -e 's/Q$//' -} - test_description='merge conflict in crlf repo b---M diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh index 40637d6782..ed7b513f3e 100755 --- a/t/t9401-git-cvsserver-crlf.sh +++ b/t/t9401-git-cvsserver-crlf.sh @@ -11,14 +11,6 @@ repository using cvs CLI client via git-cvsserver server' . ./test-lib.sh -q_to_nul () { - perl -pe 'y/Q/\000/' -} - -q_to_cr () { - tr Q '\015' -} - marked_as () { foundEntry="$(grep "^/$2/" "$1/CVS/Entries")" if [ x"$foundEntry" = x"" ] ; then diff --git a/t/test-lib.sh b/t/test-lib.sh index baa4093073..afd3053f96 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -230,6 +230,22 @@ test_decode_color () { -e 's/.\[m//g' } +q_to_nul () { + perl -pe 'y/Q/\000/' +} + +q_to_cr () { + tr Q '\015' +} + +append_cr () { + sed -e 's/$/Q/' | tr Q '\015' +} + +remove_cr () { + tr '\015' Q | sed -e 's/Q$//' +} + test_tick () { if test -z "${test_tick+set}" then From f4e6dcc36c37a6e62c8900ed657330356f6e2d8e Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Mon, 25 Jan 2010 16:33:58 -0800 Subject: [PATCH 18/66] t0022: replace non-portable literal CR We shouldn't have literal CR's in tests as they aren't portable. Signed-off-by: Stephen Boyd Signed-off-by: Junio C Hamano --- t/t0022-crlf-rename.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/t0022-crlf-rename.sh b/t/t0022-crlf-rename.sh index f1e1d48869..7af3fbcc7b 100755 --- a/t/t0022-crlf-rename.sh +++ b/t/t0022-crlf-rename.sh @@ -12,7 +12,7 @@ test_expect_success setup ' test_tick && git commit -m Initial && - sed -e "s/\$/ /" "$TEST_DIRECTORY"/t0022-crlf-rename.sh >elpmas && + append_cr <"$TEST_DIRECTORY"/t0022-crlf-rename.sh >elpmas && git add elpmas && rm -f sample && From e3f67d30b20e49d8fc3eefe819808cba7998b060 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Mon, 25 Jan 2010 16:33:59 -0800 Subject: [PATCH 19/66] am: fix patch format detection for Thunderbird "Save As" emails The patch detection wants to inspect all the headers of a rfc2822 message and ensure that they look like header fields. The headers are always separated from the message body with a blank line. When Thunderbird saves the message the blank line separating the headers from the body includes a CR. The patch detection is failing because a CRLF doesn't match /^$/. Fix this by allowing a CR to exist on the separating line. Signed-off-by: Stephen Boyd Signed-off-by: Junio C Hamano --- git-am.sh | 3 ++- t/t4150-am.sh | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/git-am.sh b/git-am.sh index 2f46fda47b..c8b9cbb101 100755 --- a/git-am.sh +++ b/git-am.sh @@ -205,7 +205,8 @@ check_patch_format () { # discarding the indented remainder of folded lines, # and see if it looks like that they all begin with the # header field names... - sed -n -e '/^$/q' -e '/^[ ]/d' -e p "$1" | + tr -d '\015' <"$1" | + sed -n -e '/^$/q' -e '/^[ ]/d' -e p | sane_egrep -v '^[!-9;-~]+:' >/dev/null || patch_format=mbox fi diff --git a/t/t4150-am.sh b/t/t4150-am.sh index 8296605234..a0349182d6 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -83,6 +83,12 @@ test_expect_success setup ' echo "X-Fake-Field: Line Three" && git format-patch --stdout first | sed -e "1d" } > patch1.eml && + { + echo "X-Fake-Field: Line One" && + echo "X-Fake-Field: Line Two" && + echo "X-Fake-Field: Line Three" && + git format-patch --stdout first | sed -e "1d" + } | append_cr >patch1-crlf.eml && sed -n -e "3,\$p" msg >file && git add file && test_tick && @@ -123,6 +129,15 @@ test_expect_success 'am applies patch e-mail not in a mbox' ' test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)" ' +test_expect_success 'am applies patch e-mail not in a mbox with CRLF' ' + git checkout first && + git am patch1-crlf.eml && + ! test -d .git/rebase-apply && + test -z "$(git diff second)" && + test "$(git rev-parse second)" = "$(git rev-parse HEAD)" && + test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)" +' + GIT_AUTHOR_NAME="Another Thor" GIT_AUTHOR_EMAIL="a.thor@example.com" GIT_COMMITTER_NAME="Co M Miter" From 5b594f457afcf2cdddb3c79de8bcc571c775aa55 Mon Sep 17 00:00:00 2001 From: Fredrik Kuivinen Date: Mon, 25 Jan 2010 23:51:39 +0100 Subject: [PATCH 20/66] Threaded grep Make git grep use threads when it is available. The results below are best of five runs in the Linux repository (on a box with two cores). With the patch: git grep qwerty 1.58user 0.55system 0:01.16elapsed 183%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+800outputs (0major+5774minor)pagefaults 0swaps Without: git grep qwerty 1.59user 0.43system 0:02.02elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+800outputs (0major+3716minor)pagefaults 0swaps And with a pattern with quite a few matches: With the patch: $ /usr/bin/time git grep void 5.61user 0.56system 0:03.44elapsed 179%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+800outputs (0major+5587minor)pagefaults 0swaps Without: $ /usr/bin/time git grep void 5.36user 0.51system 0:05.87elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+800outputs (0major+3693minor)pagefaults 0swaps In either case we gain about 40% by the threading. Signed-off-by: Fredrik Kuivinen Signed-off-by: Junio C Hamano --- builtin-grep.c | 409 +++++++++++++++++++++++++++++++++++++++++++++---- grep.c | 106 ++++++++++--- grep.h | 6 + 3 files changed, 470 insertions(+), 51 deletions(-) diff --git a/builtin-grep.c b/builtin-grep.c index 64cdfefdd1..6cc743d7c5 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -16,11 +16,274 @@ #include "quote.h" #include "dir.h" +#ifndef NO_PTHREADS +#include "thread-utils.h" +#include +#endif + static char const * const grep_usage[] = { "git grep [options] [-e] [...] [[--] path...]", NULL }; +static int use_threads = 1; + +#ifndef NO_PTHREADS +#define THREADS 8 +static pthread_t threads[THREADS]; + +static void *load_sha1(const unsigned char *sha1, unsigned long *size, + const char *name); +static void *load_file(const char *filename, size_t *sz); + +enum work_type {WORK_SHA1, WORK_FILE}; + +/* We use one producer thread and THREADS consumer + * threads. The producer adds struct work_items to 'todo' and the + * consumers pick work items from the same array. + */ +struct work_item +{ + enum work_type type; + char *name; + + /* if type == WORK_SHA1, then 'identifier' is a SHA1, + * otherwise type == WORK_FILE, and 'identifier' is a NUL + * terminated filename. + */ + void *identifier; + char done; + struct strbuf out; +}; + +/* In the range [todo_done, todo_start) in 'todo' we have work_items + * that have been or are processed by a consumer thread. We haven't + * written the result for these to stdout yet. + * + * The work_items in [todo_start, todo_end) are waiting to be picked + * up by a consumer thread. + * + * The ranges are modulo TODO_SIZE. + */ +#define TODO_SIZE 128 +static struct work_item todo[TODO_SIZE]; +static int todo_start; +static int todo_end; +static int todo_done; + +/* Has all work items been added? */ +static int all_work_added; + +/* This lock protects all the variables above. */ +static pthread_mutex_t grep_mutex; + +/* Used to serialize calls to read_sha1_file. */ +static pthread_mutex_t read_sha1_mutex; + +#define grep_lock() pthread_mutex_lock(&grep_mutex) +#define grep_unlock() pthread_mutex_unlock(&grep_mutex) +#define read_sha1_lock() pthread_mutex_lock(&read_sha1_mutex) +#define read_sha1_unlock() pthread_mutex_unlock(&read_sha1_mutex) + +/* Signalled when a new work_item is added to todo. */ +static pthread_cond_t cond_add; + +/* Signalled when the result from one work_item is written to + * stdout. + */ +static pthread_cond_t cond_write; + +/* Signalled when we are finished with everything. */ +static pthread_cond_t cond_result; + +static void add_work(enum work_type type, char *name, void *id) +{ + grep_lock(); + + while ((todo_end+1) % ARRAY_SIZE(todo) == todo_done) { + pthread_cond_wait(&cond_write, &grep_mutex); + } + + todo[todo_end].type = type; + todo[todo_end].name = name; + todo[todo_end].identifier = id; + todo[todo_end].done = 0; + strbuf_reset(&todo[todo_end].out); + todo_end = (todo_end + 1) % ARRAY_SIZE(todo); + + pthread_cond_signal(&cond_add); + grep_unlock(); +} + +static struct work_item *get_work(void) +{ + struct work_item *ret; + + grep_lock(); + while (todo_start == todo_end && !all_work_added) { + pthread_cond_wait(&cond_add, &grep_mutex); + } + + if (todo_start == todo_end && all_work_added) { + ret = NULL; + } else { + ret = &todo[todo_start]; + todo_start = (todo_start + 1) % ARRAY_SIZE(todo); + } + grep_unlock(); + return ret; +} + +static void grep_sha1_async(struct grep_opt *opt, char *name, + const unsigned char *sha1) +{ + unsigned char *s; + s = xmalloc(20); + memcpy(s, sha1, 20); + add_work(WORK_SHA1, name, s); +} + +static void grep_file_async(struct grep_opt *opt, char *name, + const char *filename) +{ + add_work(WORK_FILE, name, xstrdup(filename)); +} + +static void work_done(struct work_item *w) +{ + int old_done; + + grep_lock(); + w->done = 1; + old_done = todo_done; + for(; todo[todo_done].done && todo_done != todo_start; + todo_done = (todo_done+1) % ARRAY_SIZE(todo)) { + w = &todo[todo_done]; + write_or_die(1, w->out.buf, w->out.len); + free(w->name); + free(w->identifier); + } + + if (old_done != todo_done) + pthread_cond_signal(&cond_write); + + if (all_work_added && todo_done == todo_end) + pthread_cond_signal(&cond_result); + + grep_unlock(); +} + +static void *run(void *arg) +{ + int hit = 0; + struct grep_opt *opt = arg; + + while (1) { + struct work_item *w = get_work(); + if (!w) + break; + + opt->output_priv = w; + if (w->type == WORK_SHA1) { + unsigned long sz; + void* data = load_sha1(w->identifier, &sz, w->name); + + if (data) { + hit |= grep_buffer(opt, w->name, data, sz); + free(data); + } + } else if (w->type == WORK_FILE) { + size_t sz; + void* data = load_file(w->identifier, &sz); + if (data) { + hit |= grep_buffer(opt, w->name, data, sz); + free(data); + } + } else { + assert(0); + } + + work_done(w); + } + + return (void*) (intptr_t) hit; +} + +static void strbuf_out(struct grep_opt *opt, const void *buf, size_t size) +{ + struct work_item *w = opt->output_priv; + strbuf_add(&w->out, buf, size); +} + +static void start_threads(struct grep_opt *opt) +{ + int i; + + pthread_mutex_init(&grep_mutex, NULL); + pthread_mutex_init(&read_sha1_mutex, NULL); + pthread_cond_init(&cond_add, NULL); + pthread_cond_init(&cond_write, NULL); + pthread_cond_init(&cond_result, NULL); + + for (i = 0; i < ARRAY_SIZE(todo); i++) { + strbuf_init(&todo[i].out, 0); + } + + for (i = 0; i < ARRAY_SIZE(threads); i++) { + int err; + struct grep_opt *o = grep_opt_dup(opt); + o->output = strbuf_out; + compile_grep_patterns(o); + err = pthread_create(&threads[i], NULL, run, o); + + if (err) + die("grep: failed to create thread: %s", + strerror(err)); + } +} + +static int wait_all(void) +{ + int hit = 0; + int i; + + grep_lock(); + all_work_added = 1; + + /* Wait until all work is done. */ + while (todo_done != todo_end) + pthread_cond_wait(&cond_result, &grep_mutex); + + /* Wake up all the consumer threads so they can see that there + * is no more work to do. + */ + pthread_cond_broadcast(&cond_add); + grep_unlock(); + + for (i = 0; i < ARRAY_SIZE(threads); i++) { + void *h; + pthread_join(threads[i], &h); + hit |= (int) (intptr_t) h; + } + + pthread_mutex_destroy(&grep_mutex); + pthread_mutex_destroy(&read_sha1_mutex); + pthread_cond_destroy(&cond_add); + pthread_cond_destroy(&cond_write); + pthread_cond_destroy(&cond_result); + + return hit; +} +#else /* !NO_PTHREADS */ +#define read_sha1_lock() +#define read_sha1_unlock() + +static int wait_all(void) +{ + return 0; +} +#endif + static int grep_config(const char *var, const char *value, void *cb) { struct grep_opt *opt = cb; @@ -144,37 +407,64 @@ static int pathspec_matches(const char **paths, const char *name, int max_depth) return 0; } -static int grep_sha1(struct grep_opt *opt, const unsigned char *sha1, const char *name, int tree_name_len) +static void *load_sha1(const unsigned char *sha1, unsigned long *size, + const char *name) { - unsigned long size; - char *data; enum object_type type; - int hit; - struct strbuf pathbuf = STRBUF_INIT; + char *data; - data = read_sha1_file(sha1, &type, &size); - if (!data) { + read_sha1_lock(); + data = read_sha1_file(sha1, &type, size); + read_sha1_unlock(); + + if (!data) error("'%s': unable to read %s", name, sha1_to_hex(sha1)); - return 0; - } - if (opt->relative && opt->prefix_length) { - quote_path_relative(name + tree_name_len, -1, &pathbuf, opt->prefix); - strbuf_insert(&pathbuf, 0, name, tree_name_len); - name = pathbuf.buf; - } - hit = grep_buffer(opt, name, data, size); - strbuf_release(&pathbuf); - free(data); - return hit; + + return data; } -static int grep_file(struct grep_opt *opt, const char *filename) +static int grep_sha1(struct grep_opt *opt, const unsigned char *sha1, + const char *filename, int tree_name_len) +{ + struct strbuf pathbuf = STRBUF_INIT; + char *name; + + if (opt->relative && opt->prefix_length) { + quote_path_relative(filename + tree_name_len, -1, &pathbuf, + opt->prefix); + strbuf_insert(&pathbuf, 0, filename, tree_name_len); + } else { + strbuf_addstr(&pathbuf, filename); + } + + name = strbuf_detach(&pathbuf, NULL); + +#ifndef NO_PTHREADS + if (use_threads) { + grep_sha1_async(opt, name, sha1); + return 0; + } else +#endif + { + int hit; + unsigned long sz; + void *data = load_sha1(sha1, &sz, name); + if (!data) + hit = 0; + else + hit = grep_buffer(opt, name, data, sz); + + free(data); + free(name); + return hit; + } +} + +static void *load_file(const char *filename, size_t *sz) { struct stat st; - int i; char *data; - size_t sz; - struct strbuf buf = STRBUF_INIT; + int i; if (lstat(filename, &st) < 0) { err_ret: @@ -184,25 +474,52 @@ static int grep_file(struct grep_opt *opt, const char *filename) } if (!S_ISREG(st.st_mode)) return 0; - sz = xsize_t(st.st_size); + *sz = xsize_t(st.st_size); i = open(filename, O_RDONLY); if (i < 0) goto err_ret; - data = xmalloc(sz + 1); - if (st.st_size != read_in_full(i, data, sz)) { + data = xmalloc(*sz + 1); + if (st.st_size != read_in_full(i, data, *sz)) { error("'%s': short read %s", filename, strerror(errno)); close(i); free(data); return 0; } close(i); - data[sz] = 0; + data[*sz] = 0; + return data; +} + +static int grep_file(struct grep_opt *opt, const char *filename) +{ + struct strbuf buf = STRBUF_INIT; + char *name; + if (opt->relative && opt->prefix_length) - filename = quote_path_relative(filename, -1, &buf, opt->prefix); - i = grep_buffer(opt, filename, data, sz); - strbuf_release(&buf); - free(data); - return i; + quote_path_relative(filename, -1, &buf, opt->prefix); + else + strbuf_addstr(&buf, filename); + name = strbuf_detach(&buf, NULL); + +#ifndef NO_PTHREADS + if (use_threads) { + grep_file_async(opt, name, filename); + return 0; + } else +#endif + { + int hit; + size_t sz; + void *data = load_file(filename, &sz); + if (!data) + hit = 0; + else + hit = grep_buffer(opt, name, data, sz); + + free(data); + free(name); + return hit; + } } static int grep_cache(struct grep_opt *opt, const char **paths, int cached) @@ -287,7 +604,10 @@ static int grep_tree(struct grep_opt *opt, const char **paths, void *data; unsigned long size; + read_sha1_lock(); data = read_sha1_file(entry.sha1, &type, &size); + read_sha1_unlock(); + if (!data) die("unable to read tree (%s)", sha1_to_hex(entry.sha1)); @@ -581,6 +901,17 @@ int cmd_grep(int argc, const char **argv, const char *prefix) opt.regflags |= REG_ICASE; if ((opt.regflags != REG_NEWLINE) && opt.fixed) die("cannot mix --fixed-strings and regexp"); + +#ifndef NO_PTHREADS + if (online_cpus() == 1 || !grep_threads_ok(&opt)) + use_threads = 0; + + if (use_threads) + start_threads(&opt); +#else + use_threads = 0; +#endif + compile_grep_patterns(&opt); /* Check revs and then paths */ @@ -618,17 +949,26 @@ int cmd_grep(int argc, const char **argv, const char *prefix) } if (!use_index) { + int hit; if (cached) die("--cached cannot be used with --no-index."); if (list.nr) die("--no-index cannot be used with revs."); - return !grep_directory(&opt, paths); + hit = grep_directory(&opt, paths); + if (use_threads) + hit |= wait_all(); + return !hit; } if (!list.nr) { + int hit; if (!cached) setup_work_tree(); - return !grep_cache(&opt, paths, cached); + + hit = grep_cache(&opt, paths, cached); + if (use_threads) + hit |= wait_all(); + return !hit; } if (cached) @@ -643,6 +983,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix) break; } } + + if (use_threads) + hit |= wait_all(); free_grep_patterns(&opt); return !hit; } diff --git a/grep.c b/grep.c index 8e1f7de771..d281a020e8 100644 --- a/grep.c +++ b/grep.c @@ -29,6 +29,28 @@ void append_grep_pattern(struct grep_opt *opt, const char *pat, p->next = NULL; } +struct grep_opt *grep_opt_dup(const struct grep_opt *opt) +{ + struct grep_pat *pat; + struct grep_opt *ret = xmalloc(sizeof(struct grep_opt)); + *ret = *opt; + + ret->pattern_list = NULL; + ret->pattern_tail = &ret->pattern_list; + + for(pat = opt->pattern_list; pat != NULL; pat = pat->next) + { + if(pat->token == GREP_PATTERN_HEAD) + append_header_grep_pattern(ret, pat->field, + pat->pattern); + else + append_grep_pattern(ret, pat->pattern, pat->origin, + pat->no, pat->token); + } + + return ret; +} + static void compile_regexp(struct grep_pat *p, struct grep_opt *opt) { int err; @@ -253,7 +275,8 @@ static int word_char(char ch) static void show_name(struct grep_opt *opt, const char *name) { - printf("%s%c", name, opt->null_following_name ? '\0' : '\n'); + opt->output(opt, name, strlen(name)); + opt->output(opt, opt->null_following_name ? "\0" : "\n", 1); } @@ -490,24 +513,32 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol, const char *name, unsigned lno, char sign) { int rest = eol - bol; + char sign_str[1]; + sign_str[0] = sign; if (opt->pre_context || opt->post_context) { if (opt->last_shown == 0) { if (opt->show_hunk_mark) - fputs("--\n", stdout); + opt->output(opt, "--\n", 3); else opt->show_hunk_mark = 1; } else if (lno > opt->last_shown + 1) - fputs("--\n", stdout); + opt->output(opt, "--\n", 3); } opt->last_shown = lno; if (opt->null_following_name) - sign = '\0'; - if (opt->pathname) - printf("%s%c", name, sign); - if (opt->linenum) - printf("%d%c", lno, sign); + sign_str[0] = '\0'; + if (opt->pathname) { + opt->output(opt, name, strlen(name)); + opt->output(opt, sign_str, 1); + } + if (opt->linenum) { + char buf[32]; + snprintf(buf, sizeof(buf), "%d", lno); + opt->output(opt, buf, strlen(buf)); + opt->output(opt, sign_str, 1); + } if (opt->color) { regmatch_t match; enum grep_context ctx = GREP_CONTEXT_BODY; @@ -518,18 +549,22 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol, while (next_match(opt, bol, eol, ctx, &match, eflags)) { if (match.rm_so == match.rm_eo) break; - printf("%.*s%s%.*s%s", - (int)match.rm_so, bol, - opt->color_match, - (int)(match.rm_eo - match.rm_so), bol + match.rm_so, - GIT_COLOR_RESET); + + opt->output(opt, bol, match.rm_so); + opt->output(opt, opt->color_match, + strlen(opt->color_match)); + opt->output(opt, bol + match.rm_so, + (int)(match.rm_eo - match.rm_so)); + opt->output(opt, GIT_COLOR_RESET, + strlen(GIT_COLOR_RESET)); bol += match.rm_eo; rest -= match.rm_eo; eflags = REG_NOTBOL; } *eol = ch; } - printf("%.*s\n", rest, bol); + opt->output(opt, bol, rest); + opt->output(opt, "\n", 1); } static int match_funcname(struct grep_opt *opt, char *bol, char *eol) @@ -667,6 +702,32 @@ static int look_ahead(struct grep_opt *opt, return 0; } +int grep_threads_ok(const struct grep_opt *opt) +{ + /* If this condition is true, then we may use the attribute + * machinery in grep_buffer_1. The attribute code is not + * thread safe, so we disable the use of threads. + */ + if (opt->funcname && !opt->unmatch_name_only && !opt->status_only && + !opt->name_only) + return 0; + + /* If we are showing hunk marks, we should not do it for the + * first match. The synchronization problem we get for this + * constraint is not yet solved, so we disable threading in + * this case. + */ + if (opt->pre_context || opt->post_context) + return 0; + + return 1; +} + +static void std_output(struct grep_opt *opt, const void *buf, size_t size) +{ + fwrite(buf, size, 1, stdout); +} + static int grep_buffer_1(struct grep_opt *opt, const char *name, char *buf, unsigned long size, int collect_hits) { @@ -682,6 +743,9 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name, opt->last_shown = 0; + if (!opt->output) + opt->output = std_output; + if (buffer_is_binary(buf, size)) { switch (opt->binary) { case GREP_BINARY_DEFAULT: @@ -754,7 +818,9 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name, if (opt->status_only) return 1; if (binary_match_only) { - printf("Binary file %s matches\n", name); + opt->output(opt, "Binary file ", 12); + opt->output(opt, name, strlen(name)); + opt->output(opt, " matches\n", 9); return 1; } if (opt->name_only) { @@ -810,9 +876,13 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name, * which feels mostly useless but sometimes useful. Maybe * make it another option? For now suppress them. */ - if (opt->count && count) - printf("%s%c%u\n", name, - opt->null_following_name ? '\0' : ':', count); + if (opt->count && count) { + char buf[32]; + opt->output(opt, name, strlen(name)); + snprintf(buf, sizeof(buf), "%c%u\n", + opt->null_following_name ? '\0' : ':', count); + opt->output(opt, buf, strlen(buf)); + } return !!last_hit; } diff --git a/grep.h b/grep.h index 0c61b00cbf..9703087996 100644 --- a/grep.h +++ b/grep.h @@ -91,6 +91,9 @@ struct grep_opt { unsigned last_shown; int show_hunk_mark; void *priv; + + void (*output)(struct grep_opt *opt, const void *data, size_t size); + void *output_priv; }; extern void append_grep_pattern(struct grep_opt *opt, const char *pat, const char *origin, int no, enum grep_pat_token t); @@ -99,4 +102,7 @@ extern void compile_grep_patterns(struct grep_opt *opt); extern void free_grep_patterns(struct grep_opt *opt); extern int grep_buffer(struct grep_opt *opt, const char *name, char *buf, unsigned long size); +extern struct grep_opt *grep_opt_dup(const struct grep_opt *opt); +extern int grep_threads_ok(const struct grep_opt *opt); + #endif From 24072c0256a520408575416fe8706667b576ff99 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 26 Jan 2010 18:48:36 +0100 Subject: [PATCH 21/66] grep: use REG_STARTEND (if available) to speed up regexec BSD and glibc have an extension to regexec which takes a buffer + length pair instead of a NUL-terminated string. Since we already have the length computed this can save us a strlen call inside regexec. Signed-off-by: Benjamin Kramer Acked-by: Linus Torvalds Signed-off-by: Junio C Hamano --- grep.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/grep.c b/grep.c index 8e1f7de771..452c2cbae4 100644 --- a/grep.c +++ b/grep.c @@ -640,8 +640,15 @@ static int look_ahead(struct grep_opt *opt, if (p->fixed) hit = !fixmatch(p->pattern, bol, p->ignore_case, &m); - else + else { +#ifdef REG_STARTEND + m.rm_so = 0; + m.rm_eo = *left_p; + hit = !regexec(&p->regexp, bol, 1, &m, REG_STARTEND); +#else hit = !regexec(&p->regexp, bol, 1, &m, 0); +#endif + } if (!hit || m.rm_so < 0 || m.rm_eo < 0) continue; if (earliest < 0 || m.rm_so < earliest) From e8dbd76d57806fd1305612d56d56a4cc7665c599 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 26 Jan 2010 20:24:41 +0200 Subject: [PATCH 22/66] Support addresses with ':' in git-daemon If host address could have ':' in it (e.g. numeric IPv6 address), then host and port could not be uniquely parsed. Fix this by parsing the "[""]": and "[""]" notations. Currently the built-in git:// client would send : or for such thing, but it doesn't matter as due to bugs, resolving address fails if contains ':'. Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- daemon.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/daemon.c b/daemon.c index 1b5ada6648..d37f36e870 100644 --- a/daemon.c +++ b/daemon.c @@ -445,6 +445,33 @@ static char *xstrdup_tolower(const char *str) return dup; } +static void parse_host_and_port(char *hostport, char **host, + char **port) +{ + if (*hostport == '[') { + char *end; + + end = strchr(hostport, ']'); + if (!end) + die("Invalid reqeuest ('[' without ']')"); + *end = '\0'; + *host = hostport + 1; + if (!end[1]) + *port = NULL; + else if (end[1] == ':') + *port = end + 2; + else + die("Garbage after end of host part"); + } else { + *host = hostport; + *port = strrchr(hostport, ':'); + if (*port) { + *port = '\0'; + ++*port; + } + } +} + /* * Read the host as supplied by the client connection. */ @@ -461,11 +488,10 @@ static void parse_host_arg(char *extra_args, int buflen) vallen = strlen(val) + 1; if (*val) { /* Split : at colon. */ - char *host = val; - char *port = strrchr(host, ':'); + char *host; + char *port; + parse_host_and_port(val, &host, &port); if (port) { - *port = 0; - port++; free(tcp_port); tcp_port = xstrdup(port); } From 9aa5053d9ffc7fade885b58a34175b4907b1a4f8 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 26 Jan 2010 20:24:42 +0200 Subject: [PATCH 23/66] Allow use of []-wrapped addresses in git:// Allow using "[""]": and "[""]" notations in git:// host addresses. This is needed to be able to connect to addresses that contain ':' (e.g. numeric IPv6 addresses). Also send the host header []-wrapped so it can actually be parsed by remote end. Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- connect.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/connect.c b/connect.c index 7945e38ac1..5145d1620c 100644 --- a/connect.c +++ b/connect.c @@ -523,12 +523,18 @@ struct child_process *git_connect(int fd[2], const char *url_orig, c = ':'; } + /* + * Don't do destructive transforms with git:// as that + * protocol code does '[]' dewrapping of its own. + */ if (host[0] == '[') { end = strchr(host + 1, ']'); if (end) { - *end = 0; + if (protocol != PROTO_GIT) { + *end = 0; + host++; + } end++; - host++; } else end = host; } else From 65807ee697a28cb30b8ad38ebb8b84cebd3f255d Mon Sep 17 00:00:00 2001 From: Johan Herland Date: Tue, 26 Jan 2010 16:02:16 +0100 Subject: [PATCH 24/66] builtin-config: Fix crash when using "-f " from non-root dir When your current directory is not at the root of the working tree, and you use the "-f" option with a relative path, the current code tries to read from a wrong file, since argv[2] is now beyond the end of the rearranged argument list. This patch replaces the incorrect argv[2] with the variable holding the given config file name. The bug was introduced by d64ec16 (git config: reorganize to use parseopt). [jc: added test] Signed-off-by: Johan Herland Signed-off-by: Junio C Hamano --- builtin-config.c | 2 +- t/t1300-repo-config.sh | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/builtin-config.c b/builtin-config.c index a81bc8bbf0..5a5d214bb8 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -339,7 +339,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix) if (!is_absolute_path(given_config_file) && prefix) config_exclusive_filename = prefix_filename(prefix, strlen(prefix), - argv[2]); + given_config_file); else config_exclusive_filename = given_config_file; } diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 43ea283242..c81ccf2e56 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -398,6 +398,17 @@ test_expect_success 'alternative GIT_CONFIG' 'cmp output expect' test_expect_success 'alternative GIT_CONFIG (--file)' \ 'git config --file other-config -l > output && cmp output expect' +test_expect_success 'refer config from subdirectory' ' + mkdir x && + ( + cd x && + echo strasse >expect + git config --get --file ../other-config ein.bahn >actual && + test_cmp expect actual + ) + +' + GIT_CONFIG=other-config git config anwohner.park ausweis cat > expect << EOF From f9acaeae880feb87ae52e719aab930bf1f3e8413 Mon Sep 17 00:00:00 2001 From: Gerrit Pape Date: Tue, 26 Jan 2010 14:47:16 +0000 Subject: [PATCH 25/66] git-cvsserver: allow regex metacharacters in CVSROOT When run in a repository with a path name containing regex metacharacters (e.g. +), git-cvsserver failed to split the client request into CVSROOT and module. Now metacharacters are disabled for the value of CVSROOT in the perl regex so that directory names containing metacharacters are handled properly. Signed-off-by: Gerrit Pape Signed-off-by: Junio C Hamano --- git-cvsserver.perl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-cvsserver.perl b/git-cvsserver.perl index 6dc45f5d45..046f5578a1 100755 --- a/git-cvsserver.perl +++ b/git-cvsserver.perl @@ -388,7 +388,7 @@ sub req_Directory $state->{localdir} = $data; $state->{repository} = $repository; $state->{path} = $repository; - $state->{path} =~ s/^$state->{CVSROOT}\///; + $state->{path} =~ s/^\Q$state->{CVSROOT}\E\///; $state->{module} = $1 if ($state->{path} =~ s/^(.*?)(\/|$)//); $state->{path} .= "/" if ( $state->{path} =~ /\S/ ); From 5bf9219d01b16444b316fe764b58d15bd9265f74 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 26 Jan 2010 20:24:12 +0200 Subject: [PATCH 26/66] Add xmallocz() Add routine for allocating NUL-terminated memory block without risking integer overflow in addition of +1 for NUL byte. [jc: with suggestion from Bill Lear] Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- git-compat-util.h | 1 + wrapper.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/git-compat-util.h b/git-compat-util.h index ef60803384..31e2ef9e9e 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -343,6 +343,7 @@ extern void release_pack_memory(size_t, int); extern char *xstrdup(const char *str); extern void *xmalloc(size_t size); +extern void *xmallocz(size_t size); extern void *xmemdupz(const void *data, size_t len); extern char *xstrndup(const char *str, size_t len); extern void *xrealloc(void *ptr, size_t size); diff --git a/wrapper.c b/wrapper.c index c9be1400c0..0e3e20a3fd 100644 --- a/wrapper.c +++ b/wrapper.c @@ -34,6 +34,16 @@ void *xmalloc(size_t size) return ret; } +void *xmallocz(size_t size) +{ + void *ret; + if (size + 1 < size) + die("Data too large to fit into virtual memory space."); + ret = xmalloc(size + 1); + ((char*)ret)[size] = 0; + return ret; +} + /* * xmemdupz() allocates (len + 1) bytes of memory, duplicates "len" bytes of * "data" to the allocated memory, zero terminates the allocated memory, @@ -42,10 +52,7 @@ void *xmalloc(size_t size) */ void *xmemdupz(const void *data, size_t len) { - char *p = xmalloc(len + 1); - memcpy(p, data, len); - p[len] = '\0'; - return p; + return memcpy(xmallocz(len), data, len); } char *xstrndup(const char *str, size_t len) From 222083a1585c058fd2bbcb76db1ea824ee3df17f Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 26 Jan 2010 20:24:13 +0200 Subject: [PATCH 27/66] Fix integer overflow in patch_delta() Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- patch-delta.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/patch-delta.c b/patch-delta.c index e02e13bd4e..d218faa02b 100644 --- a/patch-delta.c +++ b/patch-delta.c @@ -33,8 +33,7 @@ void *patch_delta(const void *src_buf, unsigned long src_size, /* now the result size */ size = get_delta_hdr_size(&data, top); - dst_buf = xmalloc(size + 1); - dst_buf[size] = 0; + dst_buf = xmallocz(size); out = dst_buf; while (data < top) { From 3aee68aa68e80856de26340b707148d8f8d5b82e Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 26 Jan 2010 20:24:14 +0200 Subject: [PATCH 28/66] Fix integer overflow in unpack_sha1_rest() [jc: later NUL termination by the caller becomes unnecessary] Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- sha1_file.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sha1_file.c b/sha1_file.c index 63981fb3fd..a903247677 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1232,7 +1232,7 @@ static int unpack_sha1_header(z_stream *stream, unsigned char *map, unsigned lon static void *unpack_sha1_rest(z_stream *stream, void *buffer, unsigned long size, const unsigned char *sha1) { int bytes = strlen(buffer) + 1; - unsigned char *buf = xmalloc(1+size); + unsigned char *buf = xmallocz(size); unsigned long n; int status = Z_OK; @@ -1260,7 +1260,6 @@ static void *unpack_sha1_rest(z_stream *stream, void *buffer, unsigned long size while (status == Z_OK) status = git_inflate(stream, Z_FINISH); } - buf[size] = 0; if (status == Z_STREAM_END && !stream->avail_in) { git_inflate_end(stream); return buf; From 4ab07e4d1076a1b94b91d58913daeb20eb1c0e2d Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 26 Jan 2010 20:24:15 +0200 Subject: [PATCH 29/66] Fix integer overflow in unpack_compressed_entry() Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- sha1_file.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sha1_file.c b/sha1_file.c index a903247677..23d347c45f 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1582,8 +1582,7 @@ static void *unpack_compressed_entry(struct packed_git *p, z_stream stream; unsigned char *buffer, *in; - buffer = xmalloc(size + 1); - buffer[size] = 0; + buffer = xmallocz(size); memset(&stream, 0, sizeof(stream)); stream.next_out = buffer; stream.avail_out = size + 1; From 105e47339794ec2c862338d7a25df77b7d72385e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 26 Jan 2010 13:48:28 -0800 Subject: [PATCH 30/66] Fix log -g this@{upstream} It showed the correct objects but walked a wrong reflog. Again, tests are from Jeff King. Signed-off-by: Junio C Hamano --- revision.c | 18 ++++++++++++++---- t/t1507-rev-parse-upstream.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/revision.c b/revision.c index f54d43ffb3..3ba6d991f6 100644 --- a/revision.c +++ b/revision.c @@ -134,10 +134,20 @@ static void add_pending_object_with_mode(struct rev_info *revs, struct object *o { if (revs->no_walk && (obj->flags & UNINTERESTING)) revs->no_walk = 0; - if (revs->reflog_info && obj->type == OBJ_COMMIT && - add_reflog_for_walk(revs->reflog_info, - (struct commit *)obj, name)) - return; + if (revs->reflog_info && obj->type == OBJ_COMMIT) { + struct strbuf buf = STRBUF_INIT; + int len = interpret_branch_name(name, &buf); + int st; + + if (0 < len && name[len] && buf.len) + strbuf_addstr(&buf, name + len); + st = add_reflog_for_walk(revs->reflog_info, + (struct commit *)obj, + buf.buf[0] ? buf.buf: name); + strbuf_release(&buf); + if (st) + return; + } add_object_array_with_mode(obj, name, &revs->pending, mode); } diff --git a/t/t1507-rev-parse-upstream.sh b/t/t1507-rev-parse-upstream.sh index 95c9b0923f..8c8dfdaf9f 100755 --- a/t/t1507-rev-parse-upstream.sh +++ b/t/t1507-rev-parse-upstream.sh @@ -107,4 +107,33 @@ test_expect_success 'checkout other@{u}' ' test_cmp expect actual ' +cat >expect <) +Reflog message: branch: Created from HEAD +Author: A U Thor +Date: Thu Apr 7 15:15:13 2005 -0700 + + 3 +EOF +test_expect_success 'log -g other@{u}' ' + git log -1 -g other@{u} >actual && + test_cmp expect actual +' + +cat >expect <) +Reflog message: branch: Created from HEAD +Author: A U Thor +Date: Thu Apr 7 15:15:13 2005 -0700 + + 3 +EOF + +test_expect_success 'log -g other@{u}@{now}' ' + git log -1 -g other@{u}@{now} >actual && + test_cmp expect actual +' + test_done From 93cfa7c7a85efbdb00daade4ad0afc11bd2fdf37 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 26 Jan 2010 11:58:00 -0800 Subject: [PATCH 31/66] approxidate_careful() reports errorneous date string For a long time, the time based reflog syntax (e.g. master@{yesterday}) didn't complain when the "human readable" timestamp was misspelled, as the underlying mechanism tried to be as lenient as possible. The funny thing was that parsing of "@{now}" even relied on the fact that anything not recognized by the machinery returned the current timestamp. Introduce approxidate_careful() that takes an optional pointer to an integer, that gets assigned 1 when the input does not make sense as a timestamp. As I am too lazy to fix all the callers that use approxidate(), most of the callers do not take advantage of the error checking, but convert the code to parse reflog to use it as a demonstration. Tests are mostly from Jeff King. Signed-off-by: Junio C Hamano --- cache.h | 3 ++- date.c | 43 ++++++++++++++++++++++++++++++++++-------- sha1_name.c | 5 ++++- t/t0101-at-syntax.sh | 45 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 10 deletions(-) create mode 100755 t/t0101-at-syntax.sh diff --git a/cache.h b/cache.h index b90f671f7c..0f163dbbe1 100644 --- a/cache.h +++ b/cache.h @@ -740,7 +740,8 @@ const char *show_date_relative(unsigned long time, int tz, size_t timebuf_size); int parse_date(const char *date, char *buf, int bufsize); void datestamp(char *buf, int bufsize); -unsigned long approxidate(const char *); +#define approxidate(s) approxidate_careful((s), NULL) +unsigned long approxidate_careful(const char *, int *); unsigned long approxidate_relative(const char *date, const struct timeval *now); enum date_mode parse_date_format(const char *format); diff --git a/date.c b/date.c index 5d05ef61cf..17385a9b62 100644 --- a/date.c +++ b/date.c @@ -696,6 +696,11 @@ static unsigned long update_tm(struct tm *tm, struct tm *now, unsigned long sec) return n; } +static void date_now(struct tm *tm, struct tm *now, int *num) +{ + update_tm(tm, now, 0); +} + static void date_yesterday(struct tm *tm, struct tm *now, int *num) { update_tm(tm, now, 24*60*60); @@ -770,6 +775,7 @@ static const struct special { { "PM", date_pm }, { "AM", date_am }, { "never", date_never }, + { "now", date_now }, { NULL } }; @@ -790,7 +796,7 @@ static const struct typelen { { NULL } }; -static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm *now, int *num) +static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm *now, int *num, int *touched) { const struct typelen *tl; const struct special *s; @@ -804,6 +810,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm int match = match_string(date, month_names[i]); if (match >= 3) { tm->tm_mon = i; + *touched = 1; return end; } } @@ -812,6 +819,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm int len = strlen(s->name); if (match_string(date, s->name) == len) { s->fn(tm, now, num); + *touched = 1; return end; } } @@ -821,11 +829,14 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm int len = strlen(number_name[i]); if (match_string(date, number_name[i]) == len) { *num = i; + *touched = 1; return end; } } - if (match_string(date, "last") == 4) + if (match_string(date, "last") == 4) { *num = 1; + *touched = 1; + } return end; } @@ -835,6 +846,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm if (match_string(date, tl->type) >= len-1) { update_tm(tm, now, tl->length * *num); *num = 0; + *touched = 1; return end; } tl++; @@ -852,6 +864,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm diff += 7*n; update_tm(tm, now, diff * 24 * 60 * 60); + *touched = 1; return end; } } @@ -866,6 +879,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm tm->tm_year--; } tm->tm_mon = n; + *touched = 1; return end; } @@ -873,6 +887,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm update_tm(tm, now, 0); /* fill in date fields if needed */ tm->tm_year -= *num; *num = 0; + *touched = 1; return end; } @@ -929,9 +944,12 @@ static void pending_number(struct tm *tm, int *num) } } -static unsigned long approxidate_str(const char *date, const struct timeval *tv) +static unsigned long approxidate_str(const char *date, + const struct timeval *tv, + int *error_ret) { int number = 0; + int touched = 0; struct tm tm, now; time_t time_sec; @@ -951,33 +969,42 @@ static unsigned long approxidate_str(const char *date, const struct timeval *tv) if (isdigit(c)) { pending_number(&tm, &number); date = approxidate_digit(date-1, &tm, &number); + touched = 1; continue; } if (isalpha(c)) - date = approxidate_alpha(date-1, &tm, &now, &number); + date = approxidate_alpha(date-1, &tm, &now, &number, &touched); } pending_number(&tm, &number); + if (!touched) + *error_ret = 1; return update_tm(&tm, &now, 0); } unsigned long approxidate_relative(const char *date, const struct timeval *tv) { char buffer[50]; + int errors = 0; if (parse_date(date, buffer, sizeof(buffer)) > 0) return strtoul(buffer, NULL, 0); - return approxidate_str(date, tv); + return approxidate_str(date, tv, &errors); } -unsigned long approxidate(const char *date) +unsigned long approxidate_careful(const char *date, int *error_ret) { struct timeval tv; char buffer[50]; + int dummy = 0; + if (!error_ret) + error_ret = &dummy; - if (parse_date(date, buffer, sizeof(buffer)) > 0) + if (parse_date(date, buffer, sizeof(buffer)) > 0) { + *error_ret = 0; return strtoul(buffer, NULL, 0); + } gettimeofday(&tv, NULL); - return approxidate_str(date, &tv); + return approxidate_str(date, &tv, error_ret); } diff --git a/sha1_name.c b/sha1_name.c index 44bb62d270..f4a74fe99f 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -395,8 +395,11 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) } else if (0 <= nth) at_time = 0; else { + int errors = 0; char *tmp = xstrndup(str + at + 2, reflog_len); - at_time = approxidate(tmp); + at_time = approxidate_careful(tmp, &errors); + if (errors) + die("Bogus timestamp '%s'", tmp); free(tmp); } if (read_ref_at(real_ref, at_time, nth, sha1, NULL, diff --git a/t/t0101-at-syntax.sh b/t/t0101-at-syntax.sh new file mode 100755 index 0000000000..ccabc37a12 --- /dev/null +++ b/t/t0101-at-syntax.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +test_description='various @{whatever} syntax tests' +. ./test-lib.sh + +test_expect_success 'setup' ' + test_commit one && + test_commit two +' + +check_at() { + echo "$2" >expect && + git log -1 --format=%s "$1" >actual && + test_cmp expect actual +} + +test_expect_success '@{0} shows current' ' + check_at @{0} two +' + +test_expect_success '@{1} shows old' ' + check_at @{1} one +' + +test_expect_success '@{now} shows current' ' + check_at @{now} two +' + +test_expect_success '@{30.years.ago} shows old' ' + check_at @{30.years.ago} one +' + +test_expect_success 'silly approxidates work' ' + check_at @{3.hot.dogs.and.30.years.ago} one +' + +test_expect_success 'notice misspelled upstream' ' + test_must_fail git log -1 --format=%s @{usptream} +' + +test_expect_success 'complain about total nonsense' ' + test_must_fail git log -1 --format=%s @{utter.bogosity} +' + +test_done From 9524cf29930b4f91d68ad1384d7f984393a54c15 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Tue, 26 Jan 2010 15:08:31 -0800 Subject: [PATCH 32/66] fix portability issues with $ in double quotes Using a dollar sign in double quotes isn't portable. Escape them with a backslash or replace the double quotes with single quotes. Signed-off-by: Stephen Boyd Signed-off-by: Junio C Hamano --- git-filter-branch.sh | 4 +-- git-instaweb.sh | 2 +- git-rebase--interactive.sh | 2 +- t/t3408-rebase-multi-line.sh | 4 +-- t/t4014-format-patch.sh | 44 ++++++++++++++++----------------- t/t4125-apply-ws-fuzz.sh | 4 +-- t/t4150-am.sh | 6 ++--- t/t4202-log.sh | 6 ++--- t/t6023-merge-file.sh | 4 +-- t/t7500-commit.sh | 2 +- t/t9001-send-email.sh | 8 +++--- t/t9400-git-cvsserver-server.sh | 18 +++++++------- 12 files changed, 52 insertions(+), 52 deletions(-) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 195b5ef48e..81fd3dba3d 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -462,11 +462,11 @@ if [ "$filter_tag_name" ]; then "$new_sha1" "$new_ref" git cat-file tag "$ref" | sed -n \ - -e "1,/^$/{ + -e '1,/^$/{ /^object /d /^type /d /^tag /d - }" \ + }' \ -e '/^-----BEGIN PGP SIGNATURE-----/q' \ -e 'p' ) | git mktag) || diff --git a/git-instaweb.sh b/git-instaweb.sh index b8e6456208..6a65f255cc 100755 --- a/git-instaweb.sh +++ b/git-instaweb.sh @@ -320,7 +320,7 @@ EOF else # plain-old CGI resolve_full_httpd - list_mods=$(echo "$full_httpd" | sed "s/-f$/-l/") + list_mods=$(echo "$full_httpd" | sed 's/-f$/-l/') $list_mods | sane_grep 'mod_cgi\.c' >/dev/null 2>&1 || \ if test -f "$module_path/mod_cgi.so" then diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 9187e9bdba..19a608c27f 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -407,7 +407,7 @@ update_squash_messages () { } peek_next_command () { - sed -n -e "/^#/d" -e "/^$/d" -e "s/ .*//p" -e "q" < "$TODO" + sed -n -e "/^#/d" -e '/^$/d' -e "s/ .*//p" -e "q" < "$TODO" } # A squash/fixup has failed. Prepare the long version of the squash diff --git a/t/t3408-rebase-multi-line.sh b/t/t3408-rebase-multi-line.sh index e12cd578e8..2062b858bb 100755 --- a/t/t3408-rebase-multi-line.sh +++ b/t/t3408-rebase-multi-line.sh @@ -32,8 +32,8 @@ test_expect_success rebase ' git checkout side && git rebase master && - git cat-file commit HEAD | sed -e "1,/^$/d" >actual && - git cat-file commit side@{1} | sed -e "1,/^$/d" >expect && + git cat-file commit HEAD | sed -e "1,/^\$/d" >actual && + git cat-file commit side@{1} | sed -e "1,/^\$/d" >expect && test_cmp expect actual ' diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 3bc1cccf88..f2a2aaa2b9 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -93,9 +93,9 @@ test_expect_success 'extra headers' ' git config --add format.headers "Cc: S. E. Cipient " && git format-patch --stdout master..side > patch2 && - sed -e "/^$/q" patch2 > hdrs2 && - grep "^To: R. E. Cipient $" hdrs2 && - grep "^Cc: S. E. Cipient $" hdrs2 + sed -e "/^\$/q" patch2 > hdrs2 && + grep "^To: R. E. Cipient \$" hdrs2 && + grep "^Cc: S. E. Cipient \$" hdrs2 ' @@ -104,9 +104,9 @@ test_expect_success 'extra headers without newlines' ' git config --replace-all format.headers "To: R. E. Cipient " && git config --add format.headers "Cc: S. E. Cipient " && git format-patch --stdout master..side >patch3 && - sed -e "/^$/q" patch3 > hdrs3 && - grep "^To: R. E. Cipient $" hdrs3 && - grep "^Cc: S. E. Cipient $" hdrs3 + sed -e "/^\$/q" patch3 > hdrs3 && + grep "^To: R. E. Cipient \$" hdrs3 && + grep "^Cc: S. E. Cipient \$" hdrs3 ' @@ -115,32 +115,32 @@ test_expect_success 'extra headers with multiple To:s' ' git config --replace-all format.headers "To: R. E. Cipient " && git config --add format.headers "To: S. E. Cipient " && git format-patch --stdout master..side > patch4 && - sed -e "/^$/q" patch4 > hdrs4 && - grep "^To: R. E. Cipient ,$" hdrs4 && - grep "^ *S. E. Cipient $" hdrs4 + sed -e "/^\$/q" patch4 > hdrs4 && + grep "^To: R. E. Cipient ,\$" hdrs4 && + grep "^ *S. E. Cipient \$" hdrs4 ' test_expect_success 'additional command line cc' ' git config --replace-all format.headers "Cc: R. E. Cipient " && - git format-patch --cc="S. E. Cipient " --stdout master..side | sed -e "/^$/q" >patch5 && - grep "^Cc: R. E. Cipient ,$" patch5 && - grep "^ *S. E. Cipient $" patch5 + git format-patch --cc="S. E. Cipient " --stdout master..side | sed -e "/^\$/q" >patch5 && + grep "^Cc: R. E. Cipient ,\$" patch5 && + grep "^ *S. E. Cipient \$" patch5 ' test_expect_success 'command line headers' ' git config --unset-all format.headers && - git format-patch --add-header="Cc: R. E. Cipient " --stdout master..side | sed -e "/^$/q" >patch6 && - grep "^Cc: R. E. Cipient $" patch6 + git format-patch --add-header="Cc: R. E. Cipient " --stdout master..side | sed -e "/^\$/q" >patch6 && + grep "^Cc: R. E. Cipient \$" patch6 ' test_expect_success 'configuration headers and command line headers' ' git config --replace-all format.headers "Cc: R. E. Cipient " && - git format-patch --add-header="Cc: S. E. Cipient " --stdout master..side | sed -e "/^$/q" >patch7 && - grep "^Cc: R. E. Cipient ,$" patch7 && - grep "^ *S. E. Cipient $" patch7 + git format-patch --add-header="Cc: S. E. Cipient " --stdout master..side | sed -e "/^\$/q" >patch7 && + grep "^Cc: R. E. Cipient ,\$" patch7 && + grep "^ *S. E. Cipient \$" patch7 ' test_expect_success 'multiple files' ' @@ -406,9 +406,9 @@ test_expect_success 'cover-letter inherits diff options' ' git mv file foo && git commit -m foo && git format-patch --cover-letter -1 && - ! grep "file => foo .* 0 *$" 0000-cover-letter.patch && + ! grep "file => foo .* 0 *\$" 0000-cover-letter.patch && git format-patch --cover-letter -1 -M && - grep "file => foo .* 0 *$" 0000-cover-letter.patch + grep "file => foo .* 0 *\$" 0000-cover-letter.patch ' @@ -425,7 +425,7 @@ EOF test_expect_success 'shortlog of cover-letter wraps overly-long onelines' ' git format-patch --cover-letter -2 && - sed -e "1,/A U Thor/d" -e "/^$/q" < 0000-cover-letter.patch > output && + sed -e "1,/A U Thor/d" -e "/^\$/q" < 0000-cover-letter.patch > output && test_cmp expect output ' @@ -450,7 +450,7 @@ EOF test_expect_success 'format-patch respects -U' ' git format-patch -U4 -2 && - sed -e "1,/^$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output && + sed -e "1,/^\$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output && test_cmp expect output ' @@ -471,7 +471,7 @@ EOF test_expect_success 'format-patch -p suppresses stat' ' git format-patch -p -2 && - sed -e "1,/^$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output && + sed -e "1,/^\$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output && test_cmp expect output ' diff --git a/t/t4125-apply-ws-fuzz.sh b/t/t4125-apply-ws-fuzz.sh index 3b471b641b..9671de7999 100755 --- a/t/t4125-apply-ws-fuzz.sh +++ b/t/t4125-apply-ws-fuzz.sh @@ -37,11 +37,11 @@ test_expect_success setup ' # patch-2 is the same as patch-1 but is based # on a version that already has whitespace fixed, # and does not introduce whitespace breakages. - sed -e "s/ $//" patch-1 >patch-2 && + sed -e "s/ \$//" patch-1 >patch-2 && # If all whitespace breakages are fixed the contents # should look like file-fixed - sed -e "s/ $//" file-1 >file-fixed + sed -e "s/ \$//" file-1 >file-fixed ' diff --git a/t/t4150-am.sh b/t/t4150-am.sh index a0349182d6..810b04b817 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -302,7 +302,7 @@ test_expect_success 'am --committer-date-is-author-date' ' git checkout first && test_tick && git am --committer-date-is-author-date patch1 && - git cat-file commit HEAD | sed -e "/^$/q" >head1 && + git cat-file commit HEAD | sed -e "/^\$/q" >head1 && at=$(sed -ne "/^author /s/.*> //p" head1) && ct=$(sed -ne "/^committer /s/.*> //p" head1) && test "$at" = "$ct" @@ -312,7 +312,7 @@ test_expect_success 'am without --committer-date-is-author-date' ' git checkout first && test_tick && git am patch1 && - git cat-file commit HEAD | sed -e "/^$/q" >head1 && + git cat-file commit HEAD | sed -e "/^\$/q" >head1 && at=$(sed -ne "/^author /s/.*> //p" head1) && ct=$(sed -ne "/^committer /s/.*> //p" head1) && test "$at" != "$ct" @@ -326,7 +326,7 @@ test_expect_success 'am --ignore-date' ' git checkout first && test_tick && git am --ignore-date patch1 && - git cat-file commit HEAD | sed -e "/^$/q" >head1 && + git cat-file commit HEAD | sed -e "/^\$/q" >head1 && at=$(sed -ne "/^author /s/.*> //p" head1) && echo "$at" | grep "+0000" ' diff --git a/t/t4202-log.sh b/t/t4202-log.sh index 779a5adf55..1dc224f6fb 100755 --- a/t/t4202-log.sh +++ b/t/t4202-log.sh @@ -255,7 +255,7 @@ EOF test_expect_success 'log --graph with merge' ' git log --graph --date-order --pretty=tformat:%s | - sed "s/ *$//" >actual && + sed "s/ *\$//" >actual && test_cmp expect actual ' @@ -315,7 +315,7 @@ EOF test_expect_success 'log --graph with full output' ' git log --graph --date-order --pretty=short | git name-rev --name-only --stdin | - sed "s/Merge:.*/Merge: A B/;s/ *$//" >actual && + sed "s/Merge:.*/Merge: A B/;s/ *\$//" >actual && test_cmp expect actual ' @@ -383,7 +383,7 @@ EOF test_expect_success 'log --graph with merge' ' git log --graph --date-order --pretty=tformat:%s | - sed "s/ *$//" >actual && + sed "s/ *\$//" >actual && test_cmp expect actual ' diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh index 7dcf391914..6291307cd0 100755 --- a/t/t6023-merge-file.sh +++ b/t/t6023-merge-file.sh @@ -146,8 +146,8 @@ test_expect_success 'binary files cannot be merged' ' grep "Cannot merge binary files" merge.err ' -sed -e "s/deerit.$/deerit;/" -e "s/me;$/me./" < new5.txt > new6.txt -sed -e "s/deerit.$/deerit,/" -e "s/me;$/me,/" < new5.txt > new7.txt +sed -e "s/deerit.\$/deerit;/" -e "s/me;\$/me./" < new5.txt > new6.txt +sed -e "s/deerit.\$/deerit,/" -e "s/me;\$/me,/" < new5.txt > new7.txt test_expect_success 'MERGE_ZEALOUS simplifies non-conflicts' ' diff --git a/t/t7500-commit.sh b/t/t7500-commit.sh index 8eec0fa9bc..9f5c3edb03 100755 --- a/t/t7500-commit.sh +++ b/t/t7500-commit.sh @@ -150,7 +150,7 @@ EOF test_expect_success '--signoff' ' echo "yet another content *narf*" >> foo && echo "zort" | git commit -s -F - foo && - git cat-file commit HEAD | sed "1,/^$/d" > output && + git cat-file commit HEAD | sed "1,/^\$/d" > output && test_cmp expect output ' diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index 752adaac85..c09f375288 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -186,8 +186,8 @@ test_expect_success 'Prompting works' ' --smtp-server="$(pwd)/fake.sendmail" \ $patches \ 2>errors && - grep "^From: Example $" msgtxt1 && - grep "^To: to@example.com$" msgtxt1 + grep "^From: Example \$" msgtxt1 && + grep "^To: to@example.com\$" msgtxt1 ' test_expect_success 'cccmd works' ' @@ -236,7 +236,7 @@ test_expect_success 'Author From: in message body' ' --to=nobody@example.com \ --smtp-server="$(pwd)/fake.sendmail" \ $patches && - sed "1,/^$/d" < msgtxt1 > msgbody1 + sed "1,/^\$/d" < msgtxt1 > msgbody1 grep "From: A " msgbody1 ' @@ -247,7 +247,7 @@ test_expect_success 'Author From: not in message body' ' --to=nobody@example.com \ --smtp-server="$(pwd)/fake.sendmail" \ $patches && - sed "1,/^$/d" < msgtxt1 > msgbody1 + sed "1,/^\$/d" < msgtxt1 > msgbody1 ! grep "From: A " msgbody1 ' diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh index c2ec3cb4bd..4327eb8baa 100755 --- a/t/t9400-git-cvsserver-server.sh +++ b/t/t9400-git-cvsserver-server.sh @@ -96,7 +96,7 @@ EOF test_expect_success 'pserver authentication' \ 'cat request-anonymous | git-cvsserver pserver >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' test_expect_success 'pserver authentication failure (non-anonymous user)' \ 'if cat request-git | git-cvsserver pserver >log 2>&1 @@ -105,11 +105,11 @@ test_expect_success 'pserver authentication failure (non-anonymous user)' \ else true fi && - sed -ne \$p log | grep "^I HATE YOU$"' + sed -ne \$p log | grep "^I HATE YOU\$"' test_expect_success 'pserver authentication (login)' \ 'cat login-anonymous | git-cvsserver pserver >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' test_expect_success 'pserver authentication failure (login/non-anonymous user)' \ 'if cat login-git | git-cvsserver pserver >log 2>&1 @@ -118,7 +118,7 @@ test_expect_success 'pserver authentication failure (login/non-anonymous user)' else true fi && - sed -ne \$p log | grep "^I HATE YOU$"' + sed -ne \$p log | grep "^I HATE YOU\$"' # misuse pserver authentication for testing of req_Root @@ -156,7 +156,7 @@ test_expect_success 'req_Root failure (conflicting roots)' \ test_expect_success 'req_Root (strict paths)' \ 'cat request-anonymous | git-cvsserver --strict-paths pserver "$SERVERDIR" >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' test_expect_success 'req_Root failure (strict-paths)' ' ! cat request-anonymous | @@ -165,7 +165,7 @@ test_expect_success 'req_Root failure (strict-paths)' ' test_expect_success 'req_Root (w/o strict-paths)' \ 'cat request-anonymous | git-cvsserver pserver "$WORKDIR/" >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' test_expect_success 'req_Root failure (w/o strict-paths)' ' ! cat request-anonymous | @@ -183,7 +183,7 @@ EOF test_expect_success 'req_Root (base-path)' \ 'cat request-base | git-cvsserver --strict-paths --base-path "$WORKDIR/" pserver "$SERVERDIR" >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' test_expect_success 'req_Root failure (base-path)' ' ! cat request-anonymous | @@ -194,14 +194,14 @@ GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled false || exit 1 test_expect_success 'req_Root (export-all)' \ 'cat request-anonymous | git-cvsserver --export-all pserver "$WORKDIR" >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' test_expect_success 'req_Root failure (export-all w/o whitelist)' \ '! (cat request-anonymous | git-cvsserver --export-all pserver >log 2>&1 || false)' test_expect_success 'req_Root (everything together)' \ 'cat request-base | git-cvsserver --export-all --strict-paths --base-path "$WORKDIR/" pserver "$SERVERDIR" >log 2>&1 && - sed -ne \$p log | grep "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU\$"' GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled true || exit 1 From 3fa7c3da379bb47a0e7a52ffc13cb366add880a2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 26 Jan 2010 16:29:30 -0800 Subject: [PATCH 33/66] work around an obnoxious bash "safety feature" on OpenBSD Bash (4.0.24) on OpenBSD 4.6 refuses to run this snippet: $ cat gomi.sh #!/bin/sh one="/var/tmp/1 1" rm -f /var/tmp/1 "/var/tmp/1 1" echo hello >$one $ sh gomi.sh; ls /var/tmp/1* /var/tmp/1 1 $ bash gomi.sh; ls /var/tmp/1* gomi.sh: line 4: $one: ambiguous redirect ls: /var/tmp/1*: No such file or directory Every competent shell programmer knows that a <$word in redirection is not subject to field splitting (POSIX.1 "2.7 Redirection" explicitly lists the kind of expansion performed: "... the word that follows the redirection operator shall be subjected to ...", and "Field Splitting" is not among them). Some clueless folks apparently decided that users need to be protected in the name of "security", however. Output from "git grep -e '> *\$' -- '*.sh'" indicates that rebase-i suffers from this bogus "safety". Work it around by surrounding the variable reference with a dq pair. Signed-off-by: Junio C Hamano --- git-rebase--interactive.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 19a608c27f..3e4fd1456f 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -378,7 +378,7 @@ update_squash_messages () { sed -e 1d -e '2,/^./{ /^$/d }' <"$SQUASH_MSG".bak - } >$SQUASH_MSG + } >"$SQUASH_MSG" else commit_message HEAD > "$FIXUP_MSG" || die "Cannot write $FIXUP_MSG" COUNT=2 @@ -387,7 +387,7 @@ update_squash_messages () { echo "# The first commit's message is:" echo cat "$FIXUP_MSG" - } >$SQUASH_MSG + } >"$SQUASH_MSG" fi case $1 in squash) @@ -403,7 +403,7 @@ update_squash_messages () { echo commit_message $2 | sed -e 's/^/# /' ;; - esac >>$SQUASH_MSG + esac >>"$SQUASH_MSG" } peek_next_command () { From a5e10acbb946305ca42f510cdb196d171020238e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 27 Jan 2010 10:53:09 -0800 Subject: [PATCH 34/66] Update @{bogus.timestamp} fix not to die() The caller will say "It is not a valid object name" if it wants to, and some callers may even try to see if it names an object and otherwise try to see if it is a path. Pointed out by Jeff King. Signed-off-by: Junio C Hamano --- sha1_name.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sha1_name.c b/sha1_name.c index f4a74fe99f..04fb3b8fed 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -398,9 +398,9 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) int errors = 0; char *tmp = xstrndup(str + at + 2, reflog_len); at_time = approxidate_careful(tmp, &errors); - if (errors) - die("Bogus timestamp '%s'", tmp); free(tmp); + if (errors) + return -1; } if (read_ref_at(real_ref, at_time, nth, sha1, NULL, &co_time, &co_tz, &co_cnt)) { From 6c647af3060b8dd20da0e0b21dcd0eb95ec70841 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 27 Jan 2010 10:54:22 -0800 Subject: [PATCH 35/66] t0101: use a fixed timestamp when searching in the reflog That will give us a better reproducibility during tests. Signed-off-by: Junio C Hamano --- t/t0101-at-syntax.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/t0101-at-syntax.sh b/t/t0101-at-syntax.sh index ccabc37a12..5e298c5102 100755 --- a/t/t0101-at-syntax.sh +++ b/t/t0101-at-syntax.sh @@ -26,8 +26,8 @@ test_expect_success '@{now} shows current' ' check_at @{now} two ' -test_expect_success '@{30.years.ago} shows old' ' - check_at @{30.years.ago} one +test_expect_success '@{2001-09-17} (before the first commit) shows old' ' + check_at @{2001-09-17} one ' test_expect_success 'silly approxidates work' ' From 4da504608ea94fbcac65eb287d8d5791bddefd88 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Wed, 27 Jan 2010 19:53:17 +0200 Subject: [PATCH 36/66] Fix remote..vcs remote..vcs causes remote->foreign_vcs to be set on entry to transport_get(). Unfortunately, the code assumed that any such entry is stale from previous round. Fix this by making VCS set by URL to be volatile w.r.t. transport_get() instead. Signed-off-by: Ilari Liusvaara Acked-by: Daniel Barkalow Signed-off-by: Junio C Hamano --- transport.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/transport.c b/transport.c index 7714fdb6c6..87581b85a1 100644 --- a/transport.c +++ b/transport.c @@ -912,20 +912,19 @@ static int external_specification_len(const char *url) struct transport *transport_get(struct remote *remote, const char *url) { + const char *helper; struct transport *ret = xcalloc(1, sizeof(*ret)); if (!remote) die("No remote provided to transport_get()"); ret->remote = remote; + helper = remote->foreign_vcs; if (!url && remote && remote->url) url = remote->url[0]; ret->url = url; - /* In case previous URL had helper forced, reset it. */ - remote->foreign_vcs = NULL; - /* maybe it is a foreign URL? */ if (url) { const char *p = url; @@ -933,11 +932,11 @@ struct transport *transport_get(struct remote *remote, const char *url) while (isalnum(*p)) p++; if (!prefixcmp(p, "::")) - remote->foreign_vcs = xstrndup(url, p - url); + helper = xstrndup(url, p - url); } - if (remote && remote->foreign_vcs) { - transport_helper_init(ret, remote->foreign_vcs); + if (helper) { + transport_helper_init(ret, helper); } else if (!prefixcmp(url, "rsync:")) { ret->get_refs_list = get_refs_via_rsync; ret->fetch = fetch_objs_via_rsync; From cb21d8f032b3784ffa7b340abbafb8c4b122d2cc Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 27 Jan 2010 12:22:37 -0800 Subject: [PATCH 37/66] transport_get(): drop unnecessary check for !remote At the beginning of the function we make sure remote is not NULL, and the remainder of the funciton already depends on it. Signed-off-by: Junio C Hamano --- transport.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transport.c b/transport.c index 87581b85a1..3846aacb47 100644 --- a/transport.c +++ b/transport.c @@ -921,7 +921,7 @@ struct transport *transport_get(struct remote *remote, const char *url) ret->remote = remote; helper = remote->foreign_vcs; - if (!url && remote && remote->url) + if (!url && remote->url) url = remote->url[0]; ret->url = url; From df3dac3758e0b3e8178aff03fd0ceaf340735527 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 28 Jan 2010 00:41:52 -0800 Subject: [PATCH 38/66] tests: update tests that used to fail "diff --cc" output t4038 tests was fixed by b810cbb (diff --cc: a lost line at the beginning of the file is shown incorrectly, 2009-07-22), which was actually the commit that introduced this test.. An error in "git merge -s resolve" t6035 tests was fixed by 730f728 (unpack-trees.c: look ahead in the index, 2009-09-20). Signed-off-by: Junio C Hamano --- t/t4038-diff-combined.sh | 2 +- t/t6035-merge-dir-to-symlink.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/t/t4038-diff-combined.sh b/t/t4038-diff-combined.sh index 2cf7e01ac2..7584efa36b 100755 --- a/t/t4038-diff-combined.sh +++ b/t/t4038-diff-combined.sh @@ -76,7 +76,7 @@ test_expect_success 'check combined output (1)' ' verify_helper sidewithone ' -test_expect_failure 'check combined output (2)' ' +test_expect_success 'check combined output (2)' ' git show sidesansone -- >sidesansone && verify_helper sidesansone ' diff --git a/t/t6035-merge-dir-to-symlink.sh b/t/t6035-merge-dir-to-symlink.sh index d1b22871c4..3202e1de6d 100755 --- a/t/t6035-merge-dir-to-symlink.sh +++ b/t/t6035-merge-dir-to-symlink.sh @@ -48,7 +48,7 @@ test_expect_success 'setup for merge test' ' git tag baseline ' -test_expect_failure 'do not lose a/b-2/c/d in merge (resolve)' ' +test_expect_success 'do not lose a/b-2/c/d in merge (resolve)' ' git reset --hard && git checkout baseline^0 && git merge -s resolve master && From 8e52dc30fc357755985306f2faae4fcfd038e0f3 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2010 03:52:18 -0500 Subject: [PATCH 39/66] t0101: use absolute date The original version used relative approxidates, which don't reproduce as reliably as absolute ones. Commit 6c647a fixed this for one case, but missed the "silly" case. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t0101-at-syntax.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/t0101-at-syntax.sh b/t/t0101-at-syntax.sh index 5e298c5102..a1998b558f 100755 --- a/t/t0101-at-syntax.sh +++ b/t/t0101-at-syntax.sh @@ -31,7 +31,7 @@ test_expect_success '@{2001-09-17} (before the first commit) shows old' ' ' test_expect_success 'silly approxidates work' ' - check_at @{3.hot.dogs.and.30.years.ago} one + check_at @{3.hot.dogs.on.2001-09-17} one ' test_expect_success 'notice misspelled upstream' ' From af86debc8620006702ef217d5b7687b300c75104 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2010 09:52:16 -0500 Subject: [PATCH 40/66] rerere: fix too-short initialization This was caused by a typo in the sizeof parameter, and meant we looked at uninitialized memory. Caught by valgrind in t2030. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- rerere.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rerere.c b/rerere.c index a86d73d9dc..d1d3e75395 100644 --- a/rerere.c +++ b/rerere.c @@ -325,7 +325,7 @@ static int handle_cache(const char *path, unsigned char *sha1, const char *outpu for (i = 0; i < 3; i++) free(mmfile[i].ptr); - memset(&io, 0, sizeof(&io)); + memset(&io, 0, sizeof(io)); io.io.getline = rerere_mem_getline; if (output) io.io.output = fopen(output, "w"); From 42cab601cfd0364c57434f90c6ba66a1ccb179ec Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2010 04:50:20 -0500 Subject: [PATCH 41/66] test combinations of @{} syntax Now that we have several different types of @{} syntax, it is a good idea to test them together, which reveals some failures. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t1508-at-combinations.sh | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 t/t1508-at-combinations.sh diff --git a/t/t1508-at-combinations.sh b/t/t1508-at-combinations.sh new file mode 100755 index 0000000000..59f04636f2 --- /dev/null +++ b/t/t1508-at-combinations.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +test_description='test various @{X} syntax combinations together' +. ./test-lib.sh + +check() { +test_expect_${3:-success} "$1 = $2" " + echo '$2' >expect && + git log -1 --format=%s '$1' >actual && + test_cmp expect actual +" +} +nonsense() { +test_expect_${2:-success} "$1 is nonsensical" " + test_must_fail git log -1 '$1' +" +} +fail() { + "$@" failure +} + +test_expect_success 'setup' ' + test_commit master-one && + test_commit master-two && + git checkout -b upstream-branch && + test_commit upstream-one && + test_commit upstream-two && + git checkout -b old-branch && + test_commit old-one && + test_commit old-two && + git checkout -b new-branch && + test_commit new-one && + test_commit new-two && + git config branch.old-branch.remote . && + git config branch.old-branch.merge refs/heads/master && + git config branch.new-branch.remote . && + git config branch.new-branch.merge refs/heads/upstream-branch +' + +check HEAD new-two +check "@{1}" new-one +check "@{-1}" old-two +check "@{-1}@{1}" old-one +check "@{u}" upstream-two +check "@{u}@{1}" upstream-one +fail check "@{-1}@{u}" master-two +fail check "@{-1}@{u}@{1}" master-one +fail nonsense "@{u}@{-1}" +nonsense "@{1}@{u}" + +test_done From d46a8301930ae83de30fbbbbce1bb02a98745204 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2010 04:52:22 -0500 Subject: [PATCH 42/66] fix parsing of @{-1}@{u} combination Previously interpret_branch_name would see @{-1} and stop parsing, leaving the @{u} as cruft that provoked an error. Instead, we should recurse if there is more to parse. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- sha1_name.c | 24 ++++++++++++++++++++++-- t/t1508-at-combinations.sh | 4 ++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/sha1_name.c b/sha1_name.c index c7f1510ef1..00fc415178 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -881,8 +881,28 @@ int interpret_branch_name(const char *name, struct strbuf *buf) if (!len) return len; /* syntax Ok, not enough switches */ - if (0 < len) - return len; /* consumed from the front */ + if (0 < len && len == namelen) + return len; /* consumed all */ + else if (0 < len) { + /* we have extra data, which might need further processing */ + struct strbuf tmp = STRBUF_INIT; + int used = buf->len; + int ret; + + strbuf_add(buf, name + len, namelen - len); + ret = interpret_branch_name(buf->buf, &tmp); + /* that data was not interpreted, remove our cruft */ + if (ret < 0) { + strbuf_setlen(buf, used); + return len; + } + strbuf_reset(buf); + strbuf_addbuf(buf, &tmp); + strbuf_release(&tmp); + /* tweak for size of {-N} versus expanded ref name */ + return ret - used + len; + } + cp = strchr(name, '@'); if (!cp) return -1; diff --git a/t/t1508-at-combinations.sh b/t/t1508-at-combinations.sh index 59f04636f2..2a46af24d6 100755 --- a/t/t1508-at-combinations.sh +++ b/t/t1508-at-combinations.sh @@ -43,8 +43,8 @@ check "@{-1}" old-two check "@{-1}@{1}" old-one check "@{u}" upstream-two check "@{u}@{1}" upstream-one -fail check "@{-1}@{u}" master-two -fail check "@{-1}@{u}@{1}" master-one +check "@{-1}@{u}" master-two +check "@{-1}@{u}@{1}" master-one fail nonsense "@{u}@{-1}" nonsense "@{1}@{u}" From 12a258c078da3481a5735a7dca00bbe75cd4713b Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2010 04:56:43 -0500 Subject: [PATCH 43/66] reject @{-1} not at beginning of object name Something like foo@{-1} is nonsensical, as the @{-N} syntax is reserved for "the Nth last branch", and is not an actual reflog selector. We should not feed such nonsense to approxidate at all. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- sha1_name.c | 4 ++++ t/t1508-at-combinations.sh | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sha1_name.c b/sha1_name.c index 00fc415178..77299257bf 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -399,6 +399,10 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) unsigned long co_time; int co_tz, co_cnt; + /* a @{-N} placed anywhere except the start is an error */ + if (str[at+2] == '-') + return -1; + /* Is it asking for N-th entry, or approxidate? */ for (i = nth = 0; 0 <= nth && i < reflog_len; i++) { char ch = str[at+2+i]; diff --git a/t/t1508-at-combinations.sh b/t/t1508-at-combinations.sh index 2a46af24d6..d5d6244178 100755 --- a/t/t1508-at-combinations.sh +++ b/t/t1508-at-combinations.sh @@ -45,7 +45,7 @@ check "@{u}" upstream-two check "@{u}@{1}" upstream-one check "@{-1}@{u}" master-two check "@{-1}@{u}@{1}" master-one -fail nonsense "@{u}@{-1}" +nonsense "@{u}@{-1}" nonsense "@{1}@{u}" test_done From 4ff61c21de519b4b3c9569b354fa5a3905b69c6a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 28 Jan 2010 12:33:42 -0800 Subject: [PATCH 44/66] grep --quiet: finishing touches Name the option "--quiet" not "--quick", document it, and add tests. Signed-off-by: Junio C Hamano --- Documentation/git-grep.txt | 7 ++++++- builtin-grep.c | 2 +- t/t7002-grep.sh | 8 ++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index abb6735a40..e019e760b4 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -16,7 +16,7 @@ SYNOPSIS [-F | --fixed-strings] [-n] [-l | --files-with-matches] [-L | --files-without-match] [-z | --null] - [-c | --count] [--all-match] + [-c | --count] [--all-match] [-q | --quiet] [--max-depth ] [--color | --no-color] [-A ] [-B ] [-C ] @@ -158,6 +158,11 @@ OPTIONS this flag is specified to limit the match to files that have lines to match all of them. +-q:: +--quiet:: + Do not output matched lines; instead, exit with status 0 when + there is a match and with non-zero status when there isn't. + `...`:: Search blobs in the trees for specified patterns. diff --git a/builtin-grep.c b/builtin-grep.c index 6cc743d7c5..9bd467c9b9 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -832,7 +832,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) { OPTION_CALLBACK, ')', NULL, &opt, NULL, "", PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH, close_callback }, - OPT_BOOLEAN('q', "quick", &opt.status_only, + OPT_BOOLEAN('q', "quiet", &opt.status_only, "indicate hit with exit status without output"), OPT_BOOLEAN(0, "all-match", &opt.all_match, "show only matches from files that match all patterns"), diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh index 7eceb086be..bf4d4dcb2b 100755 --- a/t/t7002-grep.sh +++ b/t/t7002-grep.sh @@ -291,6 +291,14 @@ y:y yy z:zzz EOF +test_expect_success 'grep -q, silently report matches' ' + >empty && + git grep -q mmap >actual && + test_cmp empty actual && + test_must_fail git grep -q qfwfq >actual && + test_cmp empty actual +' + # Create 1024 file names that sort between "y" and "z" to make sure # the two files are handled by different calls to an external grep. # This depends on MAXARGS in builtin-grep.c being 1024 or less. From 63d04a78043c61c52ae437fa6106e7029b466bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SZEDER=20G=C3=A1bor?= Date: Fri, 22 Jan 2010 11:54:51 +0100 Subject: [PATCH 45/66] bash: don't offer remote transport helpers as subcommands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since commits a2d725b7 (Use an external program to implement fetching with curl, 2009-08-05) and c9e388bb (Make the "traditionally-supported" URLs a special case, 2009-09-03) remote transport helpers like 'remote-ftp' and 'remote-curl' are offered by the completion script as available subcommands. Not good, since they are helpers, therefore should not be offered, so filter them out. Signed-off-by: SZEDER Gábor Acked-by: Shawn O. Pearce Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 1a9943c012..1a762e88e7 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -571,6 +571,7 @@ __git_list_porcelain_commands () read-tree) : plumbing;; receive-pack) : plumbing;; reflog) : plumbing;; + remote-*) : transport;; repo-config) : deprecated;; rerere) : plumbing;; rev-list) : plumbing;; From 00f09d0e4b1826ee0519ea64e919515032966450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SZEDER=20G=C3=A1bor?= Date: Thu, 28 Jan 2010 02:05:55 +0100 Subject: [PATCH 46/66] bash: support 'git notes' and its subcommands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... and it will offer refs unless after -m or -F, because these two options require a non-ref argument. Signed-off-by: SZEDER Gábor Acked-by: Shawn O. Pearce Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 9651720410..8b56c34bde 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1306,6 +1306,24 @@ _git_name_rev () __gitcomp "--tags --all --stdin" } +_git_notes () +{ + local subcommands="edit show" + if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then + __gitcomp "$subcommands" + return + fi + + case "${COMP_WORDS[COMP_CWORD-1]}" in + -m|-F) + COMPREPLY=() + ;; + *) + __gitcomp "$(__git_refs)" + ;; + esac +} + _git_pull () { __git_complete_strategy && return @@ -2218,6 +2236,7 @@ _git () merge-base) _git_merge_base ;; mv) _git_mv ;; name-rev) _git_name_rev ;; + notes) _git_notes ;; pull) _git_pull ;; push) _git_push ;; rebase) _git_rebase ;; From b495f0bad2fb0b185442a352d2de0cc3c1fde63c Mon Sep 17 00:00:00 2001 From: Peter Krefting Date: Fri, 29 Jan 2010 22:50:29 +1100 Subject: [PATCH 47/66] gitk: Update Swedish translation Signed-off-by: Peter Krefting Signed-off-by: Paul Mackerras --- po/sv.po | 685 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 368 insertions(+), 317 deletions(-) diff --git a/po/sv.po b/po/sv.po index 624eb2281e..0f5e2fd8d7 100644 --- a/po/sv.po +++ b/po/sv.po @@ -2,39 +2,39 @@ # Copyright (C) 2005-2009 Paul Mackerras # This file is distributed under the same license as the gitk package. # -# Peter Krefting , 2008-2009. +# Peter Krefting , 2008-2010. # Mikael Magnusson , 2008. msgid "" msgstr "" "Project-Id-Version: sv\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-13 13:38+0100\n" -"PO-Revision-Date: 2009-08-13 13:40+0100\n" +"POT-Creation-Date: 2010-01-28 13:16+0100\n" +"PO-Revision-Date: 2010-01-28 13:48+0100\n" "Last-Translator: Peter Krefting \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit" -#: gitk:113 +#: gitk:115 msgid "Couldn't get list of unmerged files:" msgstr "Kunde inte hämta lista över ej sammanslagna filer:" -#: gitk:269 +#: gitk:274 msgid "Error parsing revisions:" msgstr "Fel vid tolkning av revisioner:" -#: gitk:324 +#: gitk:329 msgid "Error executing --argscmd command:" msgstr "Fel vid körning av --argscmd-kommando:" -#: gitk:337 +#: gitk:342 msgid "No files selected: --merge specified but no files are unmerged." msgstr "" "Inga filer valdes: --merge angavs men det finns inga filer som inte har " "slagits samman." -#: gitk:340 +#: gitk:345 msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." @@ -42,596 +42,600 @@ msgstr "" "Inga filer valdes: --merge angavs men det finns inga filer inom " "filbegränsningen." -#: gitk:362 gitk:509 +#: gitk:367 gitk:514 msgid "Error executing git log:" msgstr "Fel vid körning av git log:" -#: gitk:380 gitk:525 +#: gitk:385 gitk:530 msgid "Reading" msgstr "Läser" -#: gitk:440 gitk:4123 +#: gitk:445 gitk:4261 msgid "Reading commits..." msgstr "Läser incheckningar..." -#: gitk:443 gitk:1561 gitk:4126 +#: gitk:448 gitk:1578 gitk:4264 msgid "No commits selected" msgstr "Inga incheckningar markerade" -#: gitk:1437 +#: gitk:1454 msgid "Can't parse git log output:" msgstr "Kan inte tolka utdata från git log:" -#: gitk:1657 +#: gitk:1674 msgid "No commit information available" msgstr "Ingen incheckningsinformation är tillgänglig" -#: gitk:1793 gitk:1817 gitk:3916 gitk:8786 gitk:10322 gitk:10498 +#: gitk:1816 +msgid "mc" +msgstr "mc" + +#: gitk:1851 gitk:4054 gitk:9044 gitk:10585 gitk:10804 msgid "OK" msgstr "OK" -#: gitk:1819 gitk:3918 gitk:8383 gitk:8457 gitk:8567 gitk:8616 gitk:8788 -#: gitk:10323 gitk:10499 +#: gitk:1853 gitk:4056 gitk:8634 gitk:8713 gitk:8828 gitk:8877 gitk:9046 +#: gitk:10586 gitk:10805 msgid "Cancel" msgstr "Avbryt" -#: gitk:1919 +#: gitk:1975 msgid "Update" msgstr "Uppdatera" -#: gitk:1920 +#: gitk:1976 msgid "Reload" msgstr "Ladda om" -#: gitk:1921 +#: gitk:1977 msgid "Reread references" msgstr "Läs om referenser" -#: gitk:1922 +#: gitk:1978 msgid "List references" msgstr "Visa referenser" -#: gitk:1924 +#: gitk:1980 msgid "Start git gui" msgstr "Starta git gui" -#: gitk:1926 +#: gitk:1982 msgid "Quit" msgstr "Avsluta" -#: gitk:1918 +#: gitk:1974 msgid "File" msgstr "Arkiv" -#: gitk:1930 +#: gitk:1986 msgid "Preferences" msgstr "Inställningar" -#: gitk:1929 +#: gitk:1985 msgid "Edit" msgstr "Redigera" -#: gitk:1934 +#: gitk:1990 msgid "New view..." msgstr "Ny vy..." -#: gitk:1935 +#: gitk:1991 msgid "Edit view..." msgstr "Ändra vy..." -#: gitk:1936 +#: gitk:1992 msgid "Delete view" msgstr "Ta bort vy" -#: gitk:1938 +#: gitk:1994 msgid "All files" msgstr "Alla filer" -#: gitk:1933 gitk:3670 +#: gitk:1989 gitk:3808 msgid "View" msgstr "Visa" -#: gitk:1943 gitk:1953 gitk:2654 +#: gitk:1999 gitk:2009 gitk:2780 msgid "About gitk" msgstr "Om gitk" -#: gitk:1944 gitk:1958 +#: gitk:2000 gitk:2014 msgid "Key bindings" msgstr "Tangentbordsbindningar" -#: gitk:1942 gitk:1957 +#: gitk:1998 gitk:2013 msgid "Help" msgstr "Hjälp" -#: gitk:2018 -msgid "SHA1 ID: " -msgstr "SHA1-id: " +#: gitk:2091 gitk:8110 +msgid "SHA1 ID:" +msgstr "SHA1-id:" -#: gitk:2049 +#: gitk:2122 msgid "Row" msgstr "Rad" -#: gitk:2080 +#: gitk:2160 msgid "Find" msgstr "Sök" -#: gitk:2081 +#: gitk:2161 msgid "next" msgstr "nästa" -#: gitk:2082 +#: gitk:2162 msgid "prev" msgstr "föreg" -#: gitk:2083 +#: gitk:2163 msgid "commit" msgstr "incheckning" -#: gitk:2086 gitk:2088 gitk:4284 gitk:4307 gitk:4331 gitk:6272 gitk:6344 -#: gitk:6428 +#: gitk:2166 gitk:2168 gitk:4422 gitk:4445 gitk:4469 gitk:6410 gitk:6482 +#: gitk:6566 msgid "containing:" msgstr "som innehåller:" -#: gitk:2089 gitk:3162 gitk:3167 gitk:4359 +#: gitk:2169 gitk:3290 gitk:3295 gitk:4497 msgid "touching paths:" msgstr "som rör sökväg:" -#: gitk:2090 gitk:4364 +#: gitk:2170 gitk:4502 msgid "adding/removing string:" msgstr "som lägger/till tar bort sträng:" -#: gitk:2099 gitk:2101 +#: gitk:2179 gitk:2181 msgid "Exact" msgstr "Exakt" -#: gitk:2101 gitk:4439 gitk:6240 +#: gitk:2181 gitk:4577 gitk:6378 msgid "IgnCase" msgstr "IgnVersaler" -#: gitk:2101 gitk:4333 gitk:4437 gitk:6236 +#: gitk:2181 gitk:4471 gitk:4575 gitk:6374 msgid "Regexp" msgstr "Reg.uttr." -#: gitk:2103 gitk:2104 gitk:4458 gitk:4488 gitk:4495 gitk:6364 gitk:6432 +#: gitk:2183 gitk:2184 gitk:4596 gitk:4626 gitk:4633 gitk:6502 gitk:6570 msgid "All fields" msgstr "Alla fält" -#: gitk:2104 gitk:4456 gitk:4488 gitk:6303 +#: gitk:2184 gitk:4594 gitk:4626 gitk:6441 msgid "Headline" msgstr "Rubrik" -#: gitk:2105 gitk:4456 gitk:6303 gitk:6432 gitk:6866 +#: gitk:2185 gitk:4594 gitk:6441 gitk:6570 gitk:7003 msgid "Comments" msgstr "Kommentarer" -#: gitk:2105 gitk:4456 gitk:4460 gitk:4495 gitk:6303 gitk:6801 gitk:8063 -#: gitk:8078 +#: gitk:2185 gitk:4594 gitk:4598 gitk:4633 gitk:6441 gitk:6938 gitk:8285 +#: gitk:8300 msgid "Author" msgstr "Författare" -#: gitk:2105 gitk:4456 gitk:6303 gitk:6803 +#: gitk:2185 gitk:4594 gitk:6441 gitk:6940 msgid "Committer" msgstr "Incheckare" -#: gitk:2134 +#: gitk:2216 msgid "Search" msgstr "Sök" -#: gitk:2141 +#: gitk:2224 msgid "Diff" msgstr "Diff" -#: gitk:2143 +#: gitk:2226 msgid "Old version" msgstr "Gammal version" -#: gitk:2145 +#: gitk:2228 msgid "New version" msgstr "Ny version" -#: gitk:2147 +#: gitk:2230 msgid "Lines of context" msgstr "Rader sammanhang" -#: gitk:2157 +#: gitk:2240 msgid "Ignore space change" msgstr "Ignorera ändringar i blanksteg" -#: gitk:2215 +#: gitk:2299 msgid "Patch" msgstr "Patch" -#: gitk:2217 +#: gitk:2301 msgid "Tree" msgstr "Träd" -#: gitk:2361 gitk:2378 +#: gitk:2456 gitk:2473 msgid "Diff this -> selected" msgstr "Diff denna -> markerad" -#: gitk:2362 gitk:2379 +#: gitk:2457 gitk:2474 msgid "Diff selected -> this" msgstr "Diff markerad -> denna" -#: gitk:2363 gitk:2380 +#: gitk:2458 gitk:2475 msgid "Make patch" msgstr "Skapa patch" -#: gitk:2364 gitk:8441 +#: gitk:2459 gitk:8692 msgid "Create tag" msgstr "Skapa tagg" -#: gitk:2365 gitk:8547 +#: gitk:2460 gitk:8808 msgid "Write commit to file" msgstr "Skriv incheckning till fil" -#: gitk:2366 gitk:8604 +#: gitk:2461 gitk:8865 msgid "Create new branch" msgstr "Skapa ny gren" -#: gitk:2367 +#: gitk:2462 msgid "Cherry-pick this commit" msgstr "Plocka denna incheckning" -#: gitk:2368 +#: gitk:2463 msgid "Reset HEAD branch to here" msgstr "Återställ HEAD-grenen hit" -#: gitk:2369 +#: gitk:2464 msgid "Mark this commit" msgstr "Markera denna incheckning" -#: gitk:2370 +#: gitk:2465 msgid "Return to mark" msgstr "Återgå till markering" -#: gitk:2371 +#: gitk:2466 msgid "Find descendant of this and mark" msgstr "Hitta efterföljare till denna och markera" -#: gitk:2372 +#: gitk:2467 msgid "Compare with marked commit" msgstr "Jämför med markerad incheckning" -#: gitk:2386 +#: gitk:2481 msgid "Check out this branch" msgstr "Checka ut denna gren" -#: gitk:2387 +#: gitk:2482 msgid "Remove this branch" msgstr "Ta bort denna gren" -#: gitk:2394 +#: gitk:2489 msgid "Highlight this too" msgstr "Markera även detta" -#: gitk:2395 +#: gitk:2490 msgid "Highlight this only" msgstr "Markera bara detta" -#: gitk:2396 +#: gitk:2491 msgid "External diff" msgstr "Extern diff" -#: gitk:2397 +#: gitk:2492 msgid "Blame parent commit" msgstr "Klandra föräldraincheckning" -#: gitk:2404 +#: gitk:2499 msgid "Show origin of this line" msgstr "Visa ursprunget för den här raden" -#: gitk:2405 +#: gitk:2500 msgid "Run git gui blame on this line" msgstr "Kör git gui blame på den här raden" -#: gitk:2656 +#: gitk:2782 msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright ©9 2005-2009 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - en incheckningsvisare för git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright © 2005-2009 Paul Mackerras\n" "\n" "Använd och vidareförmedla enligt villkoren i GNU General Public License" -#: gitk:2664 gitk:2726 gitk:8969 +#: gitk:2790 gitk:2854 gitk:9230 msgid "Close" msgstr "Stäng" -#: gitk:2683 +#: gitk:2811 msgid "Gitk key bindings" msgstr "Tangentbordsbindningar för Gitk" -#: gitk:2686 +#: gitk:2814 msgid "Gitk key bindings:" msgstr "Tangentbordsbindningar för Gitk:" -#: gitk:2688 +#: gitk:2816 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tAvsluta" -#: gitk:2689 +#: gitk:2817 msgid "\t\tMove to first commit" msgstr "\t\tGå till första incheckning" -#: gitk:2690 +#: gitk:2818 msgid "\t\tMove to last commit" msgstr "\t\tGå till sista incheckning" -#: gitk:2691 +#: gitk:2819 msgid ", p, i\tMove up one commit" msgstr ", p, i\tGå en incheckning upp" -#: gitk:2692 +#: gitk:2820 msgid ", n, k\tMove down one commit" msgstr ", n, k\tGå en incheckning ned" -#: gitk:2693 +#: gitk:2821 msgid ", z, j\tGo back in history list" msgstr ", z, j\tGå bakåt i historiken" -#: gitk:2694 +#: gitk:2822 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tGå framåt i historiken" -#: gitk:2695 +#: gitk:2823 msgid "\tMove up one page in commit list" msgstr "\tGå upp en sida i incheckningslistan" -#: gitk:2696 +#: gitk:2824 msgid "\tMove down one page in commit list" msgstr "\tGå ned en sida i incheckningslistan" -#: gitk:2697 +#: gitk:2825 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tRulla till början av incheckningslistan" -#: gitk:2698 +#: gitk:2826 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tRulla till slutet av incheckningslistan" -#: gitk:2699 +#: gitk:2827 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg" -#: gitk:2700 +#: gitk:2828 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg" -#: gitk:2701 +#: gitk:2829 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida" -#: gitk:2702 +#: gitk:2830 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida" -#: gitk:2703 +#: gitk:2831 msgid "\tFind backwards (upwards, later commits)" msgstr "\tSök bakåt (uppåt, senare incheckningar)" -#: gitk:2704 +#: gitk:2832 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tSök framåt (nedåt, tidigare incheckningar)" -#: gitk:2705 +#: gitk:2833 msgid ", b\tScroll diff view up one page" msgstr ", b\tRulla diffvisningen upp en sida" -#: gitk:2706 +#: gitk:2834 msgid "\tScroll diff view up one page" msgstr "\tRulla diffvisningen upp en sida" -#: gitk:2707 +#: gitk:2835 msgid "\t\tScroll diff view down one page" msgstr "\tRulla diffvisningen ned en sida" -#: gitk:2708 +#: gitk:2836 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tRulla diffvisningen upp 18 rader" -#: gitk:2709 +#: gitk:2837 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tRulla diffvisningen ned 18 rader" -#: gitk:2710 +#: gitk:2838 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tSök" -#: gitk:2711 +#: gitk:2839 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tGå till nästa sökträff" -#: gitk:2712 +#: gitk:2840 msgid "\tMove to next find hit" msgstr "\t\tGå till nästa sökträff" -#: gitk:2713 +#: gitk:2841 msgid "/\t\tFocus the search box" msgstr "/\t\tFokusera sökrutan" -#: gitk:2714 +#: gitk:2842 msgid "?\t\tMove to previous find hit" msgstr "?\t\tGå till föregående sökträff" -#: gitk:2715 +#: gitk:2843 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tRulla diffvisningen till nästa fil" -#: gitk:2716 +#: gitk:2844 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tGå till nästa sökträff i diffvisningen" -#: gitk:2717 +#: gitk:2845 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tGå till föregående sökträff i diffvisningen" -#: gitk:2718 +#: gitk:2846 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Num+>\tÖka teckenstorlek" -#: gitk:2719 +#: gitk:2847 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tÖka teckenstorlek" -#: gitk:2720 +#: gitk:2848 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Num->\tMinska teckenstorlek" -#: gitk:2721 +#: gitk:2849 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tMinska teckenstorlek" -#: gitk:2722 +#: gitk:2850 msgid "\t\tUpdate" msgstr "\t\tUppdatera" -#: gitk:3177 -#, tcl-format -msgid "Error getting \"%s\" from %s:" -msgstr "Fel vid hämtning av \"%s\" från %s:" - -#: gitk:3234 gitk:3243 +#: gitk:3305 gitk:3314 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Fel vid skapande av temporär katalog %s:" -#: gitk:3255 +#: gitk:3327 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Fel vid hämtning av \"%s\" från %s:" + +#: gitk:3390 msgid "command failed:" msgstr "kommando misslyckades:" -#: gitk:3401 +#: gitk:3539 msgid "No such commit" msgstr "Incheckning saknas" -#: gitk:3415 +#: gitk:3553 msgid "git gui blame: command failed:" msgstr "git gui blame: kommando misslyckades:" -#: gitk:3446 +#: gitk:3584 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Kunde inte läsa sammanslagningshuvud: %s" -#: gitk:3454 +#: gitk:3592 #, tcl-format msgid "Error reading index: %s" msgstr "Fel vid läsning av index: %s" -#: gitk:3479 +#: gitk:3617 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Kunde inte starta git blame: %s" -#: gitk:3482 gitk:6271 +#: gitk:3620 gitk:6409 msgid "Searching" msgstr "Söker" -#: gitk:3514 +#: gitk:3652 #, tcl-format msgid "Error running git blame: %s" msgstr "Fel vid körning av git blame: %s" -#: gitk:3542 +#: gitk:3680 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "Raden kommer från incheckningen %s, som inte finns i denna vy" -#: gitk:3556 +#: gitk:3694 msgid "External diff viewer failed:" msgstr "Externt diff-verktyg misslyckades:" -#: gitk:3674 +#: gitk:3812 msgid "Gitk view definition" msgstr "Definition av Gitk-vy" -#: gitk:3678 +#: gitk:3816 msgid "Remember this view" msgstr "Spara denna vy" -#: gitk:3679 +#: gitk:3817 msgid "References (space separated list):" msgstr "Referenser (blankstegsavdelad lista):" -#: gitk:3680 +#: gitk:3818 msgid "Branches & tags:" msgstr "Grenar & taggar:" -#: gitk:3681 +#: gitk:3819 msgid "All refs" msgstr "Alla referenser" -#: gitk:3682 +#: gitk:3820 msgid "All (local) branches" msgstr "Alla (lokala) grenar" -#: gitk:3683 +#: gitk:3821 msgid "All tags" msgstr "Alla taggar" -#: gitk:3684 +#: gitk:3822 msgid "All remote-tracking branches" msgstr "Alla fjärrspårande grenar" -#: gitk:3685 +#: gitk:3823 msgid "Commit Info (regular expressions):" msgstr "Incheckningsinfo (reguljära uttryck):" -#: gitk:3686 +#: gitk:3824 msgid "Author:" msgstr "Författare:" -#: gitk:3687 +#: gitk:3825 msgid "Committer:" msgstr "Incheckare:" -#: gitk:3688 +#: gitk:3826 msgid "Commit Message:" msgstr "Incheckningsmeddelande:" -#: gitk:3689 +#: gitk:3827 msgid "Matches all Commit Info criteria" msgstr "Motsvarar alla kriterier för incheckningsinfo" -#: gitk:3690 +#: gitk:3828 msgid "Changes to Files:" msgstr "Ändringar av filer:" -#: gitk:3691 +#: gitk:3829 msgid "Fixed String" msgstr "Fast sträng" -#: gitk:3692 +#: gitk:3830 msgid "Regular Expression" msgstr "Reguljärt uttryck" -#: gitk:3693 +#: gitk:3831 msgid "Search string:" msgstr "Söksträng:" -#: gitk:3694 +#: gitk:3832 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -639,205 +643,201 @@ msgstr "" "Incheckingsdatum (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -#: gitk:3695 +#: gitk:3833 msgid "Since:" msgstr "Från:" -#: gitk:3696 +#: gitk:3834 msgid "Until:" msgstr "Till:" -#: gitk:3697 +#: gitk:3835 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Begränsa och/eller hoppa över ett antal revisioner (positivt heltal):" -#: gitk:3698 +#: gitk:3836 msgid "Number to show:" msgstr "Antal att visa:" -#: gitk:3699 +#: gitk:3837 msgid "Number to skip:" msgstr "Antal att hoppa över:" -#: gitk:3700 +#: gitk:3838 msgid "Miscellaneous options:" msgstr "Diverse alternativ:" -#: gitk:3701 +#: gitk:3839 msgid "Strictly sort by date" msgstr "Strikt datumsortering" -#: gitk:3702 +#: gitk:3840 msgid "Mark branch sides" msgstr "Markera sidogrenar" -#: gitk:3703 +#: gitk:3841 msgid "Limit to first parent" msgstr "Begränsa till första förälder" -#: gitk:3704 +#: gitk:3842 msgid "Simple history" msgstr "Enkel historik" -#: gitk:3705 +#: gitk:3843 msgid "Additional arguments to git log:" msgstr "Ytterligare argument till git log:" -#: gitk:3706 +#: gitk:3844 msgid "Enter files and directories to include, one per line:" msgstr "Ange filer och kataloger att ta med, en per rad:" -#: gitk:3707 +#: gitk:3845 msgid "Command to generate more commits to include:" msgstr "Kommando för att generera fler incheckningar att ta med:" -#: gitk:3829 +#: gitk:3967 msgid "Gitk: edit view" msgstr "Gitk: redigera vy" -#: gitk:3837 +#: gitk:3975 msgid "-- criteria for selecting revisions" msgstr " - kriterier för val av revisioner" -#: gitk:3842 -msgid "View Name:" -msgstr "Namn på vy:" +#: gitk:3980 +msgid "View Name" +msgstr "Namn på vy" -#: gitk:3917 +#: gitk:4055 msgid "Apply (F5)" msgstr "Använd (F5)" -#: gitk:3955 +#: gitk:4093 msgid "Error in commit selection arguments:" msgstr "Fel i argument för val av incheckningar:" -#: gitk:4008 gitk:4060 gitk:4508 gitk:4522 gitk:5783 gitk:11196 gitk:11197 +#: gitk:4146 gitk:4198 gitk:4646 gitk:4660 gitk:5921 gitk:11534 gitk:11535 msgid "None" msgstr "Inget" -#: gitk:4456 gitk:6303 gitk:8065 gitk:8080 +#: gitk:4594 gitk:6441 gitk:8287 gitk:8302 msgid "Date" msgstr "Datum" -#: gitk:4456 gitk:6303 +#: gitk:4594 gitk:6441 msgid "CDate" msgstr "Skapat datum" -#: gitk:4605 gitk:4610 +#: gitk:4743 gitk:4748 msgid "Descendant" msgstr "Avkomling" -#: gitk:4606 +#: gitk:4744 msgid "Not descendant" msgstr "Inte avkomling" -#: gitk:4613 gitk:4618 +#: gitk:4751 gitk:4756 msgid "Ancestor" msgstr "Förfader" -#: gitk:4614 +#: gitk:4752 msgid "Not ancestor" msgstr "Inte förfader" -#: gitk:4904 +#: gitk:5042 msgid "Local changes checked in to index but not committed" msgstr "Lokala ändringar sparade i indexet men inte incheckade" -#: gitk:4940 +#: gitk:5078 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokala ändringar, ej sparade i indexet" -#: gitk:6621 +#: gitk:6759 msgid "many" msgstr "många" -#: gitk:6805 +#: gitk:6942 msgid "Tags:" msgstr "Taggar:" -#: gitk:6822 gitk:6828 gitk:8058 +#: gitk:6959 gitk:6965 gitk:8280 msgid "Parent" msgstr "Förälder" -#: gitk:6833 +#: gitk:6970 msgid "Child" msgstr "Barn" -#: gitk:6842 +#: gitk:6979 msgid "Branch" msgstr "Gren" -#: gitk:6845 +#: gitk:6982 msgid "Follows" msgstr "Följer" -#: gitk:6848 +#: gitk:6985 msgid "Precedes" msgstr "Föregår" -#: gitk:7346 +#: gitk:7522 #, tcl-format msgid "Error getting diffs: %s" msgstr "Fel vid hämtning av diff: %s" -#: gitk:7886 +#: gitk:8108 msgid "Goto:" msgstr "Gå till:" -#: gitk:7888 -msgid "SHA1 ID:" -msgstr "SHA1-id:" - -#: gitk:7907 +#: gitk:8129 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Förkortat SHA1-id %s är tvetydigt" -#: gitk:7914 +#: gitk:8136 #, tcl-format msgid "Revision %s is not known" msgstr "Revisionen %s är inte känd" -#: gitk:7924 +#: gitk:8146 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA-id:t %s är inte känt" -#: gitk:7926 +#: gitk:8148 #, tcl-format msgid "Revision %s is not in the current view" msgstr "Revisionen %s finns inte i den nuvarande vyn" -#: gitk:8068 +#: gitk:8290 msgid "Children" msgstr "Barn" -#: gitk:8125 +#: gitk:8348 #, tcl-format msgid "Reset %s branch to here" msgstr "Återställ grenen %s hit" -#: gitk:8127 +#: gitk:8350 msgid "Detached head: can't reset" msgstr "Frånkopplad head: kan inte återställa" -#: gitk:8236 gitk:8242 +#: gitk:8459 gitk:8465 msgid "Skipping merge commit " msgstr "Hoppar över sammanslagningsincheckning " -#: gitk:8251 gitk:8256 +#: gitk:8474 gitk:8479 msgid "Error getting patch ID for " msgstr "Fel vid hämtning av patch-id för " -#: gitk:8252 gitk:8257 +#: gitk:8475 gitk:8480 msgid " - stopping\n" msgstr " - stannar\n" -#: gitk:8262 gitk:8265 gitk:8273 gitk:8283 gitk:8292 +#: gitk:8485 gitk:8488 gitk:8496 gitk:8510 gitk:8519 msgid "Commit " msgstr "Incheckning " -#: gitk:8266 +#: gitk:8489 msgid "" " is the same patch as\n" " " @@ -845,7 +845,7 @@ msgstr "" " är samma patch som\n" " " -#: gitk:8274 +#: gitk:8497 msgid "" " differs from\n" " " @@ -853,117 +853,139 @@ msgstr "" " skiljer sig från\n" " " -#: gitk:8276 -msgid "- stopping\n" -msgstr "- stannar\n" +#: gitk:8499 +msgid "" +"Diff of commits:\n" +"\n" +msgstr "Skillnad mellan incheckningar:\n" +"\n" +"" -#: gitk:8284 gitk:8293 +#: gitk:8511 gitk:8520 #, tcl-format msgid " has %s children - stopping\n" msgstr " har %s barn - stannar\n" -#: gitk:8324 +#: gitk:8539 +#, tcl-format +msgid "Error writing commit to file: %s" +msgstr "Fel vid skrivning av incheckning till fil: %s" + +#: gitk:8545 +#, tcl-format +msgid "Error diffing commits: %s" +msgstr "Fel vid jämförelse av incheckningar: %s" + +#: gitk:8575 msgid "Top" msgstr "Topp" -#: gitk:8325 +#: gitk:8576 msgid "From" msgstr "Från" -#: gitk:8330 +#: gitk:8581 msgid "To" msgstr "Till" -#: gitk:8354 +#: gitk:8605 msgid "Generate patch" msgstr "Generera patch" -#: gitk:8356 +#: gitk:8607 msgid "From:" msgstr "Från:" -#: gitk:8365 +#: gitk:8616 msgid "To:" msgstr "Till:" -#: gitk:8374 +#: gitk:8625 msgid "Reverse" msgstr "Vänd" -#: gitk:8376 gitk:8561 +#: gitk:8627 gitk:8822 msgid "Output file:" msgstr "Utdatafil:" -#: gitk:8382 +#: gitk:8633 msgid "Generate" msgstr "Generera" -#: gitk:8420 +#: gitk:8671 msgid "Error creating patch:" msgstr "Fel vid generering av patch:" -#: gitk:8443 gitk:8549 gitk:8606 +#: gitk:8694 gitk:8810 gitk:8867 msgid "ID:" msgstr "Id:" -#: gitk:8452 +#: gitk:8703 msgid "Tag name:" msgstr "Taggnamn:" -#: gitk:8456 gitk:8615 +#: gitk:8706 +msgid "Tag message is optional" +msgstr "Taggmeddelandet är valfritt" + +#: gitk:8708 +msgid "Tag message:" +msgstr "Taggmeddelande:" + +#: gitk:8712 gitk:8876 msgid "Create" msgstr "Skapa" -#: gitk:8473 +#: gitk:8730 msgid "No tag name specified" msgstr "Inget taggnamn angavs" -#: gitk:8477 +#: gitk:8734 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Taggen \"%s\" finns redan" -#: gitk:8483 +#: gitk:8744 msgid "Error creating tag:" msgstr "Fel vid skapande av tagg:" -#: gitk:8558 +#: gitk:8819 msgid "Command:" msgstr "Kommando:" -#: gitk:8566 +#: gitk:8827 msgid "Write" msgstr "Skriv" -#: gitk:8584 +#: gitk:8845 msgid "Error writing commit:" msgstr "Fel vid skrivning av incheckning:" -#: gitk:8611 +#: gitk:8872 msgid "Name:" msgstr "Namn:" -#: gitk:8634 +#: gitk:8895 msgid "Please specify a name for the new branch" msgstr "Ange ett namn för den nya grenen" -#: gitk:8639 +#: gitk:8900 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Grenen \"%s\" finns redan. Skriva över?" -#: gitk:8705 +#: gitk:8966 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "Incheckningen %s finns redan på grenen %s -- skall den verkligen appliceras " "på nytt?" -#: gitk:8710 +#: gitk:8971 msgid "Cherry-picking" msgstr "Plockar" -#: gitk:8719 +#: gitk:8980 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -973,7 +995,7 @@ msgstr "" "Checka in, återställ eller spara undan (stash) dina ändringar och försök " "igen." -#: gitk:8725 +#: gitk:8986 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -981,32 +1003,32 @@ msgstr "" "Cherry-pick misslyckades på grund av en sammanslagningskonflikt.\n" "Vill du köra git citool för att lösa den?" -#: gitk:8741 +#: gitk:9002 msgid "No changes committed" msgstr "Inga ändringar incheckade" -#: gitk:8767 +#: gitk:9028 msgid "Confirm reset" msgstr "Bekräfta återställning" -#: gitk:8769 +#: gitk:9030 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Återställa grenen %s till %s?" -#: gitk:8773 +#: gitk:9032 msgid "Reset type:" msgstr "Typ av återställning:" -#: gitk:8777 +#: gitk:9035 msgid "Soft: Leave working tree and index untouched" msgstr "Mjuk: Rör inte utcheckning och index" -#: gitk:8780 +#: gitk:9038 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Blandad: Rör inte utcheckning, återställ index" -#: gitk:8783 +#: gitk:9041 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1014,19 +1036,19 @@ msgstr "" "Hård: Återställ utcheckning och index\n" "(förkastar ALLA lokala ändringar)" -#: gitk:8800 +#: gitk:9058 msgid "Resetting" msgstr "Återställer" -#: gitk:8857 +#: gitk:9118 msgid "Checking out" msgstr "Checkar ut" -#: gitk:8910 +#: gitk:9171 msgid "Cannot delete the currently checked-out branch" msgstr "Kan inte ta bort den just nu utcheckade grenen" -#: gitk:8916 +#: gitk:9177 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1035,16 +1057,16 @@ msgstr "" "Incheckningarna på grenen %s existerar inte på någon annan gren.\n" "Vill du verkligen ta bort grenen %s?" -#: gitk:8947 +#: gitk:9208 #, tcl-format msgid "Tags and heads: %s" msgstr "Taggar och huvuden: %s" -#: gitk:8962 +#: gitk:9223 msgid "Filter" msgstr "Filter" -#: gitk:9257 +#: gitk:9518 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1052,190 +1074,219 @@ msgstr "" "Fel vid läsning av information om incheckningstopologi; information om " "grenar och föregående/senare taggar kommer inte vara komplett." -#: gitk:10243 +#: gitk:10504 msgid "Tag" msgstr "Tagg" -#: gitk:10243 +#: gitk:10504 msgid "Id" msgstr "Id" -#: gitk:10291 +#: gitk:10554 msgid "Gitk font chooser" msgstr "Teckensnittsväljare för Gitk" -#: gitk:10308 +#: gitk:10571 msgid "B" msgstr "F" -#: gitk:10311 +#: gitk:10574 msgid "I" msgstr "K" -#: gitk:10407 +#: gitk:10692 msgid "Gitk preferences" msgstr "Inställningar för Gitk" -#: gitk:10409 +#: gitk:10694 msgid "Commit list display options" msgstr "Alternativ för incheckningslistvy" -#: gitk:10412 +#: gitk:10697 msgid "Maximum graph width (lines)" msgstr "Maximal grafbredd (rader)" -#: gitk:10416 +#: gitk:10700 #, tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximal grafbredd (% av ruta)" -#: gitk:10420 +#: gitk:10703 msgid "Show local changes" msgstr "Visa lokala ändringar" -#: gitk:10423 +#: gitk:10706 msgid "Auto-select SHA1" msgstr "Välj SHA1 automatiskt" -#: gitk:10427 -msgid "Diff display options" -msgstr "Alternativ för diffvy" - -#: gitk:10429 -msgid "Tab spacing" -msgstr "Blanksteg för tabulatortecken" - -#: gitk:10432 -msgid "Display nearby tags" -msgstr "Visa närliggande taggar" - -#: gitk:10435 +#: gitk:10709 msgid "Hide remote refs" msgstr "Dölj fjärr-referenser" -#: gitk:10438 +#: gitk:10713 +msgid "Diff display options" +msgstr "Alternativ för diffvy" + +#: gitk:10715 +msgid "Tab spacing" +msgstr "Blanksteg för tabulatortecken" + +#: gitk:10718 +msgid "Display nearby tags" +msgstr "Visa närliggande taggar" + +#: gitk:10721 msgid "Limit diffs to listed paths" msgstr "Begränsa diff till listade sökvägar" -#: gitk:10441 +#: gitk:10724 msgid "Support per-file encodings" msgstr "Stöd för filspecifika teckenkodningar" -#: gitk:10447 gitk:10512 +#: gitk:10730 gitk:10819 msgid "External diff tool" msgstr "Externt diff-verktyg" -#: gitk:10449 +#: gitk:10731 msgid "Choose..." msgstr "Välj..." -#: gitk:10454 +#: gitk:10736 +msgid "General options" +msgstr "Allmänna inställningar" + +#: gitk:10739 +msgid "Use themed widgets" +msgstr "Använd tema på fönsterelement" + +#: gitk:10741 +msgid "(change requires restart)" +msgstr "(ändringen kräver omstart)" + +#: gitk:10743 +msgid "(currently unavailable)" +msgstr "(för närvarande inte tillgängligt)" + +#: gitk:10747 msgid "Colors: press to choose" msgstr "Färger: tryck för att välja" -#: gitk:10457 +#: gitk:10750 +msgid "Interface" +msgstr "Gränssnitt" + +#: gitk:10751 +msgid "interface" +msgstr "gränssnitt" + +#: gitk:10754 msgid "Background" msgstr "Bakgrund" -#: gitk:10458 gitk:10488 +#: gitk:10755 gitk:10785 msgid "background" msgstr "bakgrund" -#: gitk:10461 +#: gitk:10758 msgid "Foreground" msgstr "Förgrund" -#: gitk:10462 +#: gitk:10759 msgid "foreground" msgstr "förgrund" -#: gitk:10465 +#: gitk:10762 msgid "Diff: old lines" msgstr "Diff: gamla rader" -#: gitk:10466 +#: gitk:10763 msgid "diff old lines" msgstr "diff gamla rader" -#: gitk:10470 +#: gitk:10767 msgid "Diff: new lines" msgstr "Diff: nya rader" -#: gitk:10471 +#: gitk:10768 msgid "diff new lines" msgstr "diff nya rader" -#: gitk:10475 +#: gitk:10772 msgid "Diff: hunk header" msgstr "Diff: delhuvud" -#: gitk:10477 +#: gitk:10774 msgid "diff hunk header" msgstr "diff delhuvud" -#: gitk:10481 +#: gitk:10778 msgid "Marked line bg" msgstr "Markerad rad bakgrund" -#: gitk:10483 +#: gitk:10780 msgid "marked line background" msgstr "markerad rad bakgrund" -#: gitk:10487 +#: gitk:10784 msgid "Select bg" msgstr "Markerad bakgrund" -#: gitk:10491 +#: gitk:10788 msgid "Fonts: press to choose" msgstr "Teckensnitt: tryck för att välja" -#: gitk:10493 +#: gitk:10790 msgid "Main font" msgstr "Huvudteckensnitt" -#: gitk:10494 +#: gitk:10791 msgid "Diff display font" msgstr "Teckensnitt för diffvisning" -#: gitk:10495 +#: gitk:10792 msgid "User interface font" msgstr "Teckensnitt för användargränssnitt" -#: gitk:10522 +#: gitk:10829 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: välj färg för %s" -#: gitk:10973 -msgid "" -"Sorry, gitk cannot run with this version of Tcl/Tk.\n" -" Gitk requires at least Tcl/Tk 8.4." -msgstr "" -"Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n" -" Gitk kräver åtminstone Tcl/Tk 8.4." - -#: gitk:11101 +#: gitk:11433 msgid "Cannot find a git repository here." msgstr "Hittar inget gitk-arkiv här." -#: gitk:11105 +#: gitk:11437 #, tcl-format msgid "Cannot find the git directory \"%s\"." msgstr "Hittar inte git-katalogen \"%s\"." -#: gitk:11152 +#: gitk:11484 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Tvetydigt argument \"%s\": både revision och filnamn" -#: gitk:11164 +#: gitk:11496 msgid "Bad arguments to gitk:" msgstr "Felaktiga argument till gitk:" -#: gitk:11249 +#: gitk:11587 msgid "Command line" msgstr "Kommandorad" +#~ msgid "SHA1 ID: " +#~ msgstr "SHA1-id: " + +#~ msgid "- stopping\n" +#~ msgstr "- stannar\n" + +#~ msgid "" +#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" +#~ " Gitk requires at least Tcl/Tk 8.4." +#~ msgstr "" +#~ "Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n" +#~ " Gitk kräver åtminstone Tcl/Tk 8.4." + #~ msgid "Tag/Head %s is not known" #~ msgstr "Tagg/huvud %s är okänt" From 9f0531261ed38473bb35b07fde1ae7a96fba2073 Mon Sep 17 00:00:00 2001 From: Michele Ballabio Date: Fri, 29 Jan 2010 22:51:28 +1100 Subject: [PATCH 48/66] gitk: update Italian translation Signed-off-by: Michele Ballabio Signed-off-by: Paul Mackerras --- po/it.po | 960 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 661 insertions(+), 299 deletions(-) diff --git a/po/it.po b/po/it.po index e89c95702c..4818652309 100644 --- a/po/it.po +++ b/po/it.po @@ -8,25 +8,33 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-10-18 22:03+1100\n" -"PO-Revision-Date: 2008-03-13 17:34+0100\n" +"POT-Creation-Date: 2010-01-28 18:40+0100\n" +"PO-Revision-Date: 2010-01-28 18:41+0100\n" "Last-Translator: Michele Ballabio \n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: gitk:113 +#: gitk:115 msgid "Couldn't get list of unmerged files:" msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:" -#: gitk:340 +#: gitk:274 +msgid "Error parsing revisions:" +msgstr "Errore nella lettura delle revisioni:" + +#: gitk:329 +msgid "Error executing --argscmd command:" +msgstr "Errore nell'esecuzione del comando specificato con --argscmd:" + +#: gitk:342 msgid "No files selected: --merge specified but no files are unmerged." msgstr "" "Nessun file selezionato: è stata specificata l'opzione --merge ma non ci " "sono file in attesa di fusione." -#: gitk:343 +#: gitk:345 msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." @@ -34,688 +42,994 @@ msgstr "" "Nessun file selezionato: è stata specificata l'opzione --merge ma i file " "specificati non sono in attesa di fusione." -#: gitk:365 gitk:503 +#: gitk:367 gitk:514 msgid "Error executing git log:" msgstr "Errore nell'esecuzione di git log:" -#: gitk:378 +#: gitk:385 gitk:530 msgid "Reading" msgstr "Lettura in corso" -#: gitk:438 gitk:3462 +#: gitk:445 gitk:4261 msgid "Reading commits..." msgstr "Lettura delle revisioni in corso..." -#: gitk:441 gitk:1528 gitk:3465 +#: gitk:448 gitk:1578 gitk:4264 msgid "No commits selected" msgstr "Nessuna revisione selezionata" -#: gitk:1399 +#: gitk:1454 msgid "Can't parse git log output:" msgstr "Impossibile elaborare i dati di git log:" -#: gitk:1605 +#: gitk:1674 msgid "No commit information available" msgstr "Nessuna informazione disponibile sulle revisioni" -#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466 +#: gitk:1816 +msgid "mc" +msgstr "" + +#: gitk:1851 gitk:4054 gitk:9044 gitk:10585 gitk:10804 msgid "OK" msgstr "OK" -#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766 -#: gitk:9294 gitk:9467 +#: gitk:1853 gitk:4056 gitk:8634 gitk:8713 gitk:8828 gitk:8877 gitk:9046 +#: gitk:10586 gitk:10805 msgid "Cancel" msgstr "Annulla" -#: gitk:1811 +#: gitk:1975 msgid "Update" msgstr "Aggiorna" -#: gitk:1813 +#: gitk:1976 +msgid "Reload" +msgstr "Ricarica" + +#: gitk:1977 msgid "Reread references" msgstr "Rileggi riferimenti" -#: gitk:1814 +#: gitk:1978 msgid "List references" msgstr "Elenca riferimenti" -#: gitk:1815 +#: gitk:1980 +msgid "Start git gui" +msgstr "Avvia git gui" + +#: gitk:1982 msgid "Quit" msgstr "Esci" -#: gitk:1810 +#: gitk:1974 msgid "File" msgstr "File" -#: gitk:1818 +#: gitk:1986 msgid "Preferences" msgstr "Preferenze" -#: gitk:1817 +#: gitk:1985 msgid "Edit" msgstr "Modifica" -#: gitk:1821 +#: gitk:1990 msgid "New view..." msgstr "Nuova vista..." -#: gitk:1822 +#: gitk:1991 msgid "Edit view..." msgstr "Modifica vista..." -#: gitk:1823 +#: gitk:1992 msgid "Delete view" msgstr "Elimina vista" -#: gitk:1825 +#: gitk:1994 msgid "All files" msgstr "Tutti i file" -#: gitk:1820 gitk:3196 +#: gitk:1989 gitk:3808 msgid "View" msgstr "Vista" -#: gitk:1828 gitk:2487 +#: gitk:1999 gitk:2009 gitk:2780 msgid "About gitk" msgstr "Informazioni su gitk" -#: gitk:1829 +#: gitk:2000 gitk:2014 msgid "Key bindings" msgstr "Scorciatoie da tastiera" -#: gitk:1827 +#: gitk:1998 gitk:2013 msgid "Help" msgstr "Aiuto" -#: gitk:1887 -msgid "SHA1 ID: " -msgstr "SHA1 ID: " +#: gitk:2091 gitk:8110 +msgid "SHA1 ID:" +msgstr "SHA1 ID:" -#: gitk:1918 +#: gitk:2122 msgid "Row" -msgstr "" +msgstr "Riga" -#: gitk:1949 +#: gitk:2160 msgid "Find" msgstr "Trova" -#: gitk:1950 +#: gitk:2161 msgid "next" msgstr "succ" -#: gitk:1951 +#: gitk:2162 msgid "prev" msgstr "prec" -#: gitk:1952 +#: gitk:2163 msgid "commit" msgstr "revisione" -#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621 +#: gitk:2166 gitk:2168 gitk:4422 gitk:4445 gitk:4469 gitk:6410 gitk:6482 +#: gitk:6566 msgid "containing:" msgstr "contenente:" -#: gitk:1958 gitk:2954 gitk:2959 gitk:3692 +#: gitk:2169 gitk:3290 gitk:3295 gitk:4497 msgid "touching paths:" msgstr "che riguarda i percorsi:" -#: gitk:1959 gitk:3697 +#: gitk:2170 gitk:4502 msgid "adding/removing string:" msgstr "che aggiunge/rimuove la stringa:" -#: gitk:1968 gitk:1970 +#: gitk:2179 gitk:2181 msgid "Exact" msgstr "Esatto" -#: gitk:1970 gitk:3773 gitk:5518 +#: gitk:2181 gitk:4577 gitk:6378 msgid "IgnCase" msgstr "" -#: gitk:1970 gitk:3666 gitk:3771 gitk:5514 +#: gitk:2181 gitk:4471 gitk:4575 gitk:6374 msgid "Regexp" msgstr "" -#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708 +#: gitk:2183 gitk:2184 gitk:4596 gitk:4626 gitk:4633 gitk:6502 gitk:6570 msgid "All fields" msgstr "Tutti i campi" -#: gitk:1973 gitk:3790 gitk:3822 gitk:5580 +#: gitk:2184 gitk:4594 gitk:4626 gitk:6441 msgid "Headline" msgstr "Titolo" -#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109 +#: gitk:2185 gitk:4594 gitk:6441 gitk:6570 gitk:7003 msgid "Comments" msgstr "Commenti" -#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285 -#: gitk:7300 +#: gitk:2185 gitk:4594 gitk:4598 gitk:4633 gitk:6441 gitk:6938 gitk:8285 +#: gitk:8300 msgid "Author" msgstr "Autore" -#: gitk:1974 gitk:3790 gitk:5580 gitk:6047 +#: gitk:2185 gitk:4594 gitk:6441 gitk:6940 msgid "Committer" msgstr "Revisione creata da" -#: gitk:2003 +#: gitk:2216 msgid "Search" msgstr "Cerca" -#: gitk:2010 +#: gitk:2224 msgid "Diff" msgstr "" -#: gitk:2012 +#: gitk:2226 msgid "Old version" msgstr "Vecchia versione" -#: gitk:2014 +#: gitk:2228 msgid "New version" msgstr "Nuova versione" -#: gitk:2016 +#: gitk:2230 msgid "Lines of context" msgstr "Linee di contesto" -#: gitk:2026 +#: gitk:2240 msgid "Ignore space change" msgstr "Ignora modifiche agli spazi" -#: gitk:2084 +#: gitk:2299 msgid "Patch" msgstr "Modifiche" -#: gitk:2086 +#: gitk:2301 msgid "Tree" msgstr "Directory" -#: gitk:2213 gitk:2226 +#: gitk:2456 gitk:2473 msgid "Diff this -> selected" msgstr "Diff questo -> selezionato" -#: gitk:2214 gitk:2227 +#: gitk:2457 gitk:2474 msgid "Diff selected -> this" msgstr "Diff selezionato -> questo" -#: gitk:2215 gitk:2228 +#: gitk:2458 gitk:2475 msgid "Make patch" msgstr "Crea patch" -#: gitk:2216 gitk:7494 +#: gitk:2459 gitk:8692 msgid "Create tag" msgstr "Crea etichetta" -#: gitk:2217 gitk:7593 +#: gitk:2460 gitk:8808 msgid "Write commit to file" msgstr "Scrivi revisione in un file" -#: gitk:2218 gitk:7647 +#: gitk:2461 gitk:8865 msgid "Create new branch" msgstr "Crea un nuovo ramo" -#: gitk:2219 +#: gitk:2462 msgid "Cherry-pick this commit" msgstr "Porta questa revisione in cima al ramo attuale" -#: gitk:2220 +#: gitk:2463 msgid "Reset HEAD branch to here" msgstr "Aggiorna il ramo HEAD a questa revisione" -#: gitk:2234 +#: gitk:2464 +msgid "Mark this commit" +msgstr "Segna questa revisione" + +#: gitk:2465 +msgid "Return to mark" +msgstr "Torna alla revisione segnata" + +#: gitk:2466 +msgid "Find descendant of this and mark" +msgstr "Trova il discendente di questa revisione e di quella segnata" + +#: gitk:2467 +msgid "Compare with marked commit" +msgstr "Confronta con la revisione segnata" + +#: gitk:2481 msgid "Check out this branch" msgstr "Attiva questo ramo" -#: gitk:2235 +#: gitk:2482 msgid "Remove this branch" msgstr "Elimina questo ramo" -#: gitk:2242 +#: gitk:2489 msgid "Highlight this too" msgstr "Evidenzia anche questo" -#: gitk:2243 +#: gitk:2490 msgid "Highlight this only" msgstr "Evidenzia solo questo" -#: gitk:2245 -msgid "Blame parent commit" -msgstr "" +#: gitk:2491 +msgid "External diff" +msgstr "Visualizza differenze in un altro programma" -#: gitk:2488 +#: gitk:2492 +msgid "Blame parent commit" +msgstr "Annota la revisione precedente" + +#: gitk:2499 +msgid "Show origin of this line" +msgstr "Mostra la provenienza di questa riga" + +#: gitk:2500 +msgid "Run git gui blame on this line" +msgstr "Esegui git gui blame su questa riga" + +#: gitk:2782 msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright © 2005-2009 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - un visualizzatore di revisioni per git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright © 2005-2009 Paul Mackerras\n" "\n" "Utilizzo e redistribuzione permessi sotto i termini della GNU General Public " "License" -#: gitk:2496 gitk:2557 gitk:7943 +#: gitk:2790 gitk:2854 gitk:9230 msgid "Close" msgstr "Chiudi" -#: gitk:2515 +#: gitk:2811 msgid "Gitk key bindings" msgstr "Scorciatoie da tastiera di Gitk" -#: gitk:2517 +#: gitk:2814 msgid "Gitk key bindings:" msgstr "Scorciatoie da tastiera di Gitk:" -#: gitk:2519 +#: gitk:2816 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tEsci" -#: gitk:2520 +#: gitk:2817 msgid "\t\tMove to first commit" msgstr "\t\tVai alla prima revisione" -#: gitk:2521 +#: gitk:2818 msgid "\t\tMove to last commit" msgstr "\t\tVai all'ultima revisione" -#: gitk:2522 +#: gitk:2819 msgid ", p, i\tMove up one commit" -msgstr ", p, i\tVai più in alto di una revisione" +msgstr ", p, i\tVai più in alto di una revisione" -#: gitk:2523 +#: gitk:2820 msgid ", n, k\tMove down one commit" -msgstr ", n, k\tVai più in basso di una revisione" +msgstr ", n, k\tVai più in basso di una revisione" -#: gitk:2524 +#: gitk:2821 msgid ", z, j\tGo back in history list" -msgstr ", z, j\tTorna indietro nella cronologia" +msgstr ", z, j\tTorna indietro nella cronologia" -#: gitk:2525 +#: gitk:2822 msgid ", x, l\tGo forward in history list" -msgstr ", x, l\tVai avanti nella cronologia" +msgstr ", x, l\tVai avanti nella cronologia" -#: gitk:2526 +#: gitk:2823 msgid "\tMove up one page in commit list" -msgstr "\tVai più in alto di una pagina nella lista delle revisioni" +msgstr "\tVai più in alto di una pagina nella lista delle revisioni" -#: gitk:2527 +#: gitk:2824 msgid "\tMove down one page in commit list" -msgstr "\tVai più in basso di una pagina nella lista delle revisioni" +msgstr "" +"\tVai più in basso di una pagina nella lista delle revisioni" -#: gitk:2528 +#: gitk:2825 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tScorri alla cima della lista delle revisioni" -#: gitk:2529 +#: gitk:2826 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tScorri alla fine della lista delle revisioni" -#: gitk:2530 +#: gitk:2827 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" -msgstr "<%s-Up>\tScorri la lista delle revisioni in alto di una riga" +msgstr "<%s-Su>\tScorri la lista delle revisioni in alto di una riga" -#: gitk:2531 +#: gitk:2828 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" -msgstr "<%s-Down>\tScorri la lista delle revisioni in basso di una riga" +msgstr "<%s-Giù>\tScorri la lista delle revisioni in basso di una riga" -#: gitk:2532 +#: gitk:2829 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" -msgstr "<%s-PageUp>\tScorri la lista delle revisioni in alto di una pagina" +msgstr "<%s-PaginaSu>\tScorri la lista delle revisioni in alto di una pagina" -#: gitk:2533 +#: gitk:2830 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" -msgstr "<%s-PageDown>\tScorri la lista delle revisioni in basso di una pagina" +msgstr "<%s-PaginaGiù>\tScorri la lista delle revisioni in basso di una pagina" -#: gitk:2534 +#: gitk:2831 msgid "\tFind backwards (upwards, later commits)" -msgstr "\tTrova all'indietro (verso l'alto, revisioni successive)" +msgstr "\tTrova all'indietro (verso l'alto, revisioni successive)" -#: gitk:2535 +#: gitk:2832 msgid "\tFind forwards (downwards, earlier commits)" -msgstr "\tTrova in avanti (verso il basso, revisioni precedenti)" +msgstr "\tTrova in avanti (verso il basso, revisioni precedenti)" -#: gitk:2536 +#: gitk:2833 msgid ", b\tScroll diff view up one page" msgstr ", b\tScorri la vista delle differenze in alto di una pagina" -#: gitk:2537 +#: gitk:2834 msgid "\tScroll diff view up one page" msgstr "\tScorri la vista delle differenze in alto di una pagina" -#: gitk:2538 +#: gitk:2835 msgid "\t\tScroll diff view down one page" -msgstr "\t\tScorri la vista delle differenze in basso di una pagina" +msgstr "\t\tScorri la vista delle differenze in basso di una pagina" -#: gitk:2539 +#: gitk:2836 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tScorri la vista delle differenze in alto di 18 linee" -#: gitk:2540 +#: gitk:2837 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tScorri la vista delle differenze in basso di 18 linee" -#: gitk:2541 +#: gitk:2838 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tTrova" -#: gitk:2542 +#: gitk:2839 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tTrova in avanti" -#: gitk:2543 +#: gitk:2840 msgid "\tMove to next find hit" -msgstr "\tTrova in avanti" +msgstr "\tTrova in avanti" -#: gitk:2544 -msgid "/\t\tMove to next find hit, or redo find" -msgstr "/\t\tTrova in avanti, o cerca di nuovo" +#: gitk:2841 +msgid "/\t\tFocus the search box" +msgstr "/\t\tCursore nel box di ricerca" -#: gitk:2545 +#: gitk:2842 msgid "?\t\tMove to previous find hit" msgstr "?\t\tTrova all'indietro" -#: gitk:2546 +#: gitk:2843 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tScorri la vista delle differenze al file successivo" -#: gitk:2547 +#: gitk:2844 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tCerca in avanti nella vista delle differenze" -#: gitk:2548 +#: gitk:2845 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tCerca all'indietro nella vista delle differenze" -#: gitk:2549 +#: gitk:2846 #, tcl-format msgid "<%s-KP+>\tIncrease font size" -msgstr "<%s-KP+>\tAumenta grandezza carattere" +msgstr "<%s-KP+>\tAumenta dimensione carattere" -#: gitk:2550 +#: gitk:2847 #, tcl-format msgid "<%s-plus>\tIncrease font size" -msgstr "<%s-plus>\tAumenta grandezza carattere" +msgstr "<%s-più>\tAumenta dimensione carattere" -#: gitk:2551 +#: gitk:2848 #, tcl-format msgid "<%s-KP->\tDecrease font size" -msgstr "<%s-KP->\tDiminuisci grandezza carattere" +msgstr "<%s-KP->\tDiminuisci dimensione carattere" -#: gitk:2552 +#: gitk:2849 #, tcl-format msgid "<%s-minus>\tDecrease font size" -msgstr "<%s-minus>\tDiminuisci grandezza carattere" +msgstr "<%s-meno>\tDiminuisci dimensione carattere" -#: gitk:2553 +#: gitk:2850 msgid "\t\tUpdate" msgstr "\t\tAggiorna" -#: gitk:3200 -msgid "Gitk view definition" -msgstr "Scelta vista Gitk" +#: gitk:3305 gitk:3314 +#, tcl-format +msgid "Error creating temporary directory %s:" +msgstr "Errore durante la creazione della directory temporanea %s:" -#: gitk:3225 -msgid "Name" -msgstr "Nome" +#: gitk:3327 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Errore nella lettura di \"%s\" da %s:" -#: gitk:3228 -msgid "Remember this view" -msgstr "Ricorda questa vista" +#: gitk:3390 +msgid "command failed:" +msgstr "impossibile eseguire il comando:" -#: gitk:3232 -msgid "Commits to include (arguments to git log):" -msgstr "Revisioni da includere (argomenti di git log):" +#: gitk:3539 +msgid "No such commit" +msgstr "Revisione inesistente" -#: gitk:3239 -msgid "Command to generate more commits to include:" -msgstr "Comando che genera altre revisioni da visualizzare:" +#: gitk:3553 +msgid "git gui blame: command failed:" +msgstr "git gui blame: impossibile eseguire il comando:" -#: gitk:3246 -msgid "Enter files and directories to include, one per line:" -msgstr "Inserire file e directory da includere, uno per riga:" +#: gitk:3584 +#, tcl-format +msgid "Couldn't read merge head: %s" +msgstr "Impossibile leggere merge head: %s" -#: gitk:3293 -msgid "Error in commit selection arguments:" -msgstr "Errore negli argomenti di selezione delle revisioni:" +#: gitk:3592 +#, tcl-format +msgid "Error reading index: %s" +msgstr "Errore nella lettura dell'indice: %s" -#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142 -msgid "None" -msgstr "Nessuno" +#: gitk:3617 +#, tcl-format +msgid "Couldn't start git blame: %s" +msgstr "Impossibile eseguire git blame: %s" -#: gitk:3790 gitk:5580 gitk:7287 gitk:7302 -msgid "Date" -msgstr "Data" - -#: gitk:3790 gitk:5580 -msgid "CDate" -msgstr "" - -#: gitk:3939 gitk:3944 -msgid "Descendant" -msgstr "Discendente" - -#: gitk:3940 -msgid "Not descendant" -msgstr "Non discendente" - -#: gitk:3947 gitk:3952 -msgid "Ancestor" -msgstr "Ascendente" - -#: gitk:3948 -msgid "Not ancestor" -msgstr "Non ascendente" - -#: gitk:4187 -msgid "Local changes checked in to index but not committed" -msgstr "Modifiche locali presenti nell'indice ma non nell'archivio" - -#: gitk:4220 -msgid "Local uncommitted changes, not checked in to index" -msgstr "Modifiche locali non presenti né nell'archivio né nell'indice" - -#: gitk:5549 +#: gitk:3620 gitk:6409 msgid "Searching" msgstr "Ricerca in corso" -#: gitk:6049 +#: gitk:3652 +#, tcl-format +msgid "Error running git blame: %s" +msgstr "Errore nell'esecuzione di git blame: %s" + +#: gitk:3680 +#, tcl-format +msgid "That line comes from commit %s, which is not in this view" +msgstr "Quella riga proviene dalla revisione %s, non presente in questa vista" + +#: gitk:3694 +msgid "External diff viewer failed:" +msgstr "Impossibile eseguire il visualizzatore di differenze:" + +#: gitk:3812 +msgid "Gitk view definition" +msgstr "Scelta vista Gitk" + +#: gitk:3816 +msgid "Remember this view" +msgstr "Ricorda questa vista" + +#: gitk:3817 +msgid "References (space separated list):" +msgstr "Riferimenti (lista di elementi separati da spazi)" + +#: gitk:3818 +msgid "Branches & tags:" +msgstr "Rami ed etichette" + +#: gitk:3819 +msgid "All refs" +msgstr "Tutti i riferimenti" + +#: gitk:3820 +msgid "All (local) branches" +msgstr "Tutti i rami (locali)" + +#: gitk:3821 +msgid "All tags" +msgstr "Tutte le etichette" + +#: gitk:3822 +msgid "All remote-tracking branches" +msgstr "Tutti i rami remoti" + +#: gitk:3823 +msgid "Commit Info (regular expressions):" +msgstr "Informazioni sulla revisione (espressioni regolari):" + +#: gitk:3824 +msgid "Author:" +msgstr "Autore:" + +#: gitk:3825 +msgid "Committer:" +msgstr "Revisione creata da:" + +#: gitk:3826 +msgid "Commit Message:" +msgstr "Messaggio di revisione:" + +#: gitk:3827 +msgid "Matches all Commit Info criteria" +msgstr "Risponde a tutti i criteri di ricerca sulle revisioni" + +#: gitk:3828 +msgid "Changes to Files:" +msgstr "Modifiche ai file:" + +#: gitk:3829 +msgid "Fixed String" +msgstr "Stringa fissa" + +#: gitk:3830 +msgid "Regular Expression" +msgstr "Espressione regolare" + +#: gitk:3831 +msgid "Search string:" +msgstr "Cerca stringa:" + +#: gitk:3832 +msgid "" +"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" +msgstr "" +"Date di revisione (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, " +"2009 15:27:38\"):" + +#: gitk:3833 +msgid "Since:" +msgstr "Da:" + +#: gitk:3834 +msgid "Until:" +msgstr "A:" + +#: gitk:3835 +msgid "Limit and/or skip a number of revisions (positive integer):" +msgstr "Limita e/o salta N revisioni (intero positivo):" + +#: gitk:3836 +msgid "Number to show:" +msgstr "Numero di revisioni da mostrare:" + +#: gitk:3837 +msgid "Number to skip:" +msgstr "Numero di revisioni da saltare:" + +#: gitk:3838 +msgid "Miscellaneous options:" +msgstr "Altre opzioni:" + +#: gitk:3839 +msgid "Strictly sort by date" +msgstr "Ordina solo per data" + +#: gitk:3840 +msgid "Mark branch sides" +msgstr "Segna i lati del ramo" + +#: gitk:3841 +msgid "Limit to first parent" +msgstr "Limita al primo genitore" + +#: gitk:3842 +msgid "Simple history" +msgstr "Cronologia semplificata" + +#: gitk:3843 +msgid "Additional arguments to git log:" +msgstr "Ulteriori argomenti da passare a git log:" + +#: gitk:3844 +msgid "Enter files and directories to include, one per line:" +msgstr "Inserire file e directory da includere, uno per riga:" + +#: gitk:3845 +msgid "Command to generate more commits to include:" +msgstr "Comando che genera altre revisioni da visualizzare:" + +#: gitk:3967 +msgid "Gitk: edit view" +msgstr "Gitk: modifica vista" + +#: gitk:3975 +msgid "-- criteria for selecting revisions" +msgstr "-- criteri per la scelta delle revisioni" + +#: gitk:3980 +msgid "View Name" +msgstr "Nome vista" + +#: gitk:4055 +msgid "Apply (F5)" +msgstr "Applica (F5)" + +#: gitk:4093 +msgid "Error in commit selection arguments:" +msgstr "Errore negli argomenti di selezione delle revisioni:" + +#: gitk:4146 gitk:4198 gitk:4646 gitk:4660 gitk:5921 gitk:11534 gitk:11535 +msgid "None" +msgstr "Nessuno" + +#: gitk:4594 gitk:6441 gitk:8287 gitk:8302 +msgid "Date" +msgstr "Data" + +#: gitk:4594 gitk:6441 +msgid "CDate" +msgstr "" + +#: gitk:4743 gitk:4748 +msgid "Descendant" +msgstr "Discendente" + +#: gitk:4744 +msgid "Not descendant" +msgstr "Non discendente" + +#: gitk:4751 gitk:4756 +msgid "Ancestor" +msgstr "Ascendente" + +#: gitk:4752 +msgid "Not ancestor" +msgstr "Non ascendente" + +#: gitk:5042 +msgid "Local changes checked in to index but not committed" +msgstr "Modifiche locali presenti nell'indice ma non nell'archivio" + +#: gitk:5078 +msgid "Local uncommitted changes, not checked in to index" +msgstr "Modifiche locali non presenti né nell'archivio né nell'indice" + +#: gitk:6759 +msgid "many" +msgstr "molti" + +#: gitk:6942 msgid "Tags:" msgstr "Etichette:" -#: gitk:6066 gitk:6072 gitk:7280 +#: gitk:6959 gitk:6965 gitk:8280 msgid "Parent" msgstr "Genitore" -#: gitk:6077 +#: gitk:6970 msgid "Child" msgstr "Figlio" -#: gitk:6086 +#: gitk:6979 msgid "Branch" msgstr "Ramo" -#: gitk:6089 +#: gitk:6982 msgid "Follows" msgstr "Segue" -#: gitk:6092 +#: gitk:6985 msgid "Precedes" msgstr "Precede" -#: gitk:6378 -msgid "Error getting merge diffs:" -msgstr "Errore nella lettura delle differenze di fusione:" +#: gitk:7522 +#, tcl-format +msgid "Error getting diffs: %s" +msgstr "Errore nella lettura delle differenze:" -#: gitk:7113 +#: gitk:8108 msgid "Goto:" msgstr "Vai a:" -#: gitk:7115 -msgid "SHA1 ID:" -msgstr "SHA1 ID:" - -#: gitk:7134 +#: gitk:8129 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "La SHA1 id abbreviata %s è ambigua" -#: gitk:7146 +#: gitk:8136 +#, tcl-format +msgid "Revision %s is not known" +msgstr "La revisione %s è sconosciuta" + +#: gitk:8146 #, tcl-format msgid "SHA1 id %s is not known" msgstr "La SHA1 id %s è sconosciuta" -#: gitk:7148 +#: gitk:8148 #, tcl-format -msgid "Tag/Head %s is not known" -msgstr "L'etichetta/ramo %s è sconosciuto" +msgid "Revision %s is not in the current view" +msgstr "La revisione %s non è presente nella vista attuale" -#: gitk:7290 +#: gitk:8290 msgid "Children" msgstr "Figli" -#: gitk:7347 +#: gitk:8348 #, tcl-format msgid "Reset %s branch to here" msgstr "Aggiorna il ramo %s a questa revisione" -#: gitk:7349 +#: gitk:8350 msgid "Detached head: can't reset" -msgstr "" +msgstr "Nessun ramo attivo: reset impossibile" -#: gitk:7381 +#: gitk:8459 gitk:8465 +msgid "Skipping merge commit " +msgstr "Salto la revisione di fusione " + +#: gitk:8474 gitk:8479 +msgid "Error getting patch ID for " +msgstr "Errore nella identificazione della patch per " + +#: gitk:8475 gitk:8480 +msgid " - stopping\n" +msgstr " - fine\n" + +#: gitk:8485 gitk:8488 gitk:8496 gitk:8510 gitk:8519 +msgid "Commit " +msgstr "La revisione " + +#: gitk:8489 +msgid "" +" is the same patch as\n" +" " +msgstr "" +" ha le stesse differenze di\n" +" " + +#: gitk:8497 +msgid "" +" differs from\n" +" " +msgstr "" +" è diversa da\n" +" " + +#: gitk:8499 +msgid "" +"Diff of commits:\n" +"\n" +msgstr "" +"Differenze tra le revisioni:\n" +"\n" + +#: gitk:8511 gitk:8520 +#, tcl-format +msgid " has %s children - stopping\n" +msgstr " ha %s figli - fine\n" + +#: gitk:8539 +#, tcl-format +msgid "Error writing commit to file: %s" +msgstr "Errore nella scrittura della revisione nel file: %s" + +#: gitk:8545 +#, tcl-format +msgid "Error diffing commits: %s" +msgstr "Errore nelle differenze tra le revisioni: %s" + +#: gitk:8575 msgid "Top" msgstr "Inizio" -#: gitk:7382 +#: gitk:8576 msgid "From" msgstr "Da" -#: gitk:7387 +#: gitk:8581 msgid "To" msgstr "A" -#: gitk:7410 +#: gitk:8605 msgid "Generate patch" msgstr "Genera patch" -#: gitk:7412 +#: gitk:8607 msgid "From:" msgstr "Da:" -#: gitk:7421 +#: gitk:8616 msgid "To:" msgstr "A:" -#: gitk:7430 +#: gitk:8625 msgid "Reverse" msgstr "Inverti" -#: gitk:7432 gitk:7607 +#: gitk:8627 gitk:8822 msgid "Output file:" msgstr "Scrivi sul file:" -#: gitk:7438 +#: gitk:8633 msgid "Generate" msgstr "Genera" -#: gitk:7474 +#: gitk:8671 msgid "Error creating patch:" msgstr "Errore nella creazione della patch:" -#: gitk:7496 gitk:7595 gitk:7649 +#: gitk:8694 gitk:8810 gitk:8867 msgid "ID:" msgstr "ID:" -#: gitk:7505 +#: gitk:8703 msgid "Tag name:" msgstr "Nome etichetta:" -#: gitk:7509 gitk:7659 +#: gitk:8706 +msgid "Tag message is optional" +msgstr "Il messaggio dell'etichetta è opzionale" + +#: gitk:8708 +msgid "Tag message:" +msgstr "Messaggio dell'etichetta:" + +#: gitk:8712 gitk:8876 msgid "Create" msgstr "Crea" -#: gitk:7524 +#: gitk:8730 msgid "No tag name specified" msgstr "Nessuna etichetta specificata" -#: gitk:7528 +#: gitk:8734 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "L'etichetta \"%s\" esiste già" -#: gitk:7534 +#: gitk:8744 msgid "Error creating tag:" msgstr "Errore nella creazione dell'etichetta:" -#: gitk:7604 +#: gitk:8819 msgid "Command:" msgstr "Comando:" -#: gitk:7612 +#: gitk:8827 msgid "Write" msgstr "Scrivi" -#: gitk:7628 +#: gitk:8845 msgid "Error writing commit:" msgstr "Errore nella scrittura della revisione:" -#: gitk:7654 +#: gitk:8872 msgid "Name:" msgstr "Nome:" -#: gitk:7674 +#: gitk:8895 msgid "Please specify a name for the new branch" msgstr "Specificare un nome per il nuovo ramo" -#: gitk:7703 +#: gitk:8900 +#, tcl-format +msgid "Branch '%s' already exists. Overwrite?" +msgstr "Il ramo '%s' esiste già. Sovrascrivere?" + +#: gitk:8966 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "La revisione %s è già inclusa nel ramo %s -- applicarla di nuovo?" -#: gitk:7708 +#: gitk:8971 msgid "Cherry-picking" msgstr "" -#: gitk:7720 +#: gitk:8980 +#, tcl-format +msgid "" +"Cherry-pick failed because of local changes to file '%s'.\n" +"Please commit, reset or stash your changes and try again." +msgstr "" +"Impossibile eseguire cherry-pick perché il file '%s' è stato modificato " +"nella directory di lavoro.\n" +"Prima di riprovare, bisogna creare una nuova revisione, annullare le " +"modifiche o usare 'git stash'." + +#: gitk:8986 +msgid "" +"Cherry-pick failed because of merge conflict.\n" +"Do you wish to run git citool to resolve it?" +msgstr "" +"Impossibile eseguire cherry-pick a causa di un conflitto nella fusione.\n" +"Vuoi avviare git citool per risolverlo?" + +#: gitk:9002 msgid "No changes committed" msgstr "Nessuna modifica archiviata" -#: gitk:7745 +#: gitk:9028 msgid "Confirm reset" msgstr "Conferma git reset" -#: gitk:7747 +#: gitk:9030 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Aggiornare il ramo %s a %s?" -#: gitk:7751 +#: gitk:9032 msgid "Reset type:" msgstr "Tipo di aggiornamento:" -#: gitk:7755 +#: gitk:9035 msgid "Soft: Leave working tree and index untouched" msgstr "Soft: Lascia la direcory di lavoro e l'indice come sono" -#: gitk:7758 +#: gitk:9038 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Mixed: Lascia la directory di lavoro come è, aggiorna l'indice" -#: gitk:7761 +#: gitk:9041 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -723,19 +1037,19 @@ msgstr "" "Hard: Aggiorna la directory di lavoro e l'indice\n" "(abbandona TUTTE le modifiche locali)" -#: gitk:7777 +#: gitk:9058 msgid "Resetting" msgstr "git reset in corso" -#: gitk:7834 +#: gitk:9118 msgid "Checking out" msgstr "Attivazione in corso" -#: gitk:7885 +#: gitk:9171 msgid "Cannot delete the currently checked-out branch" msgstr "Impossibile cancellare il ramo attualmente attivo" -#: gitk:7891 +#: gitk:9177 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -744,16 +1058,16 @@ msgstr "" "Le revisioni nel ramo %s non sono presenti su altri rami.\n" "Cancellare il ramo %s?" -#: gitk:7922 +#: gitk:9208 #, tcl-format msgid "Tags and heads: %s" msgstr "Etichette e rami: %s" -#: gitk:7936 +#: gitk:9223 msgid "Filter" msgstr "Filtro" -#: gitk:8230 +#: gitk:9518 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -761,154 +1075,202 @@ msgstr "" "Errore nella lettura della topologia delle revisioni: le informazioni sul " "ramo e le etichette precedenti e seguenti saranno incomplete." -#: gitk:9216 +#: gitk:10504 msgid "Tag" msgstr "Etichetta" -#: gitk:9216 +#: gitk:10504 msgid "Id" msgstr "Id" -#: gitk:9262 +#: gitk:10554 msgid "Gitk font chooser" msgstr "Scelta caratteri gitk" -#: gitk:9279 +#: gitk:10571 msgid "B" msgstr "B" -#: gitk:9282 +#: gitk:10574 msgid "I" msgstr "I" -#: gitk:9375 +#: gitk:10692 msgid "Gitk preferences" msgstr "Preferenze gitk" -#: gitk:9376 +#: gitk:10694 msgid "Commit list display options" msgstr "Opzioni visualizzazione dell'elenco revisioni" -#: gitk:9379 +#: gitk:10697 msgid "Maximum graph width (lines)" msgstr "Larghezza massima del grafico (in linee)" -#: gitk:9383 +#: gitk:10700 #, tcl-format msgid "Maximum graph width (% of pane)" msgstr "Larghezza massima del grafico (% del pannello)" -#: gitk:9388 +#: gitk:10703 msgid "Show local changes" msgstr "Mostra modifiche locali" -#: gitk:9393 +#: gitk:10706 msgid "Auto-select SHA1" msgstr "Seleziona automaticamente SHA1 hash" -#: gitk:9398 +#: gitk:10709 +msgid "Hide remote refs" +msgstr "Nascondi i riferimenti remoti" + +#: gitk:10713 msgid "Diff display options" msgstr "Opzioni di visualizzazione delle differenze" -#: gitk:9400 +#: gitk:10715 msgid "Tab spacing" msgstr "Spaziatura tabulazioni" -#: gitk:9404 +#: gitk:10718 msgid "Display nearby tags" msgstr "Mostra etichette vicine" -#: gitk:9409 +#: gitk:10721 msgid "Limit diffs to listed paths" msgstr "Limita le differenze ai percorsi elencati" -#: gitk:9414 +#: gitk:10724 msgid "Support per-file encodings" -msgstr "" +msgstr "Attiva codifica file per file" -#: gitk:9421 +#: gitk:10730 gitk:10819 msgid "External diff tool" -msgstr "" +msgstr "Visualizzatore di differenze" -#: gitk:9423 +#: gitk:10731 msgid "Choose..." -msgstr "" +msgstr "Scegli..." -#: gitk:9428 +#: gitk:10736 +msgid "General options" +msgstr "Opzioni generali" + +#: gitk:10739 +msgid "Use themed widgets" +msgstr "Utilizza interfaccia a tema" + +#: gitk:10741 +msgid "(change requires restart)" +msgstr "(una modifica richiede il riavvio)" + +#: gitk:10743 +msgid "(currently unavailable)" +msgstr "(momentaneamente non disponibile)" + +#: gitk:10747 msgid "Colors: press to choose" msgstr "Colori: premere per scegliere" -#: gitk:9431 +#: gitk:10750 +msgid "Interface" +msgstr "Interfaccia" + +#: gitk:10751 +msgid "interface" +msgstr "interfaccia" + +#: gitk:10754 msgid "Background" msgstr "Sfondo" -#: gitk:9435 +#: gitk:10755 gitk:10785 +msgid "background" +msgstr "sfondo" + +#: gitk:10758 msgid "Foreground" msgstr "Primo piano" -#: gitk:9439 +#: gitk:10759 +msgid "foreground" +msgstr "primo piano" + +#: gitk:10762 msgid "Diff: old lines" msgstr "Diff: vecchie linee" -#: gitk:9444 +#: gitk:10763 +msgid "diff old lines" +msgstr "vecchie linee" + +#: gitk:10767 msgid "Diff: new lines" msgstr "Diff: nuove linee" -#: gitk:9449 +#: gitk:10768 +msgid "diff new lines" +msgstr "nuove linee" + +#: gitk:10772 msgid "Diff: hunk header" msgstr "Diff: intestazione della sezione" -#: gitk:9455 -msgid "Select bg" -msgstr "Sfondo selezione" +#: gitk:10774 +msgid "diff hunk header" +msgstr "intestazione della sezione" -#: gitk:9459 +#: gitk:10778 +msgid "Marked line bg" +msgstr "Sfondo riga selezionata" + +#: gitk:10780 +msgid "marked line background" +msgstr "sfondo riga selezionata" + +#: gitk:10784 +msgid "Select bg" +msgstr "Sfondo" + +#: gitk:10788 msgid "Fonts: press to choose" msgstr "Carattere: premere per scegliere" -#: gitk:9461 +#: gitk:10790 msgid "Main font" msgstr "Carattere principale" -#: gitk:9462 +#: gitk:10791 msgid "Diff display font" msgstr "Carattere per differenze" -#: gitk:9463 +#: gitk:10792 msgid "User interface font" msgstr "Carattere per interfaccia utente" -#: gitk:9488 +#: gitk:10829 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: scegliere un colore per %s" -#: gitk:9934 -msgid "" -"Sorry, gitk cannot run with this version of Tcl/Tk.\n" -" Gitk requires at least Tcl/Tk 8.4." -msgstr "" -"Questa versione di Tcl/Tk non può avviare gitk.\n" -" Gitk richiede Tcl/Tk versione 8.4 o superiore." - -#: gitk:10047 +#: gitk:11433 msgid "Cannot find a git repository here." msgstr "Archivio git non trovato." -#: gitk:10051 +#: gitk:11437 #, tcl-format msgid "Cannot find the git directory \"%s\"." msgstr "Directory git \"%s\" non trovata." -#: gitk:10098 +#: gitk:11484 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Argomento ambiguo: '%s' è sia revisione che nome di file" -#: gitk:10110 +#: gitk:11496 msgid "Bad arguments to gitk:" msgstr "Gitk: argomenti errati:" -#: gitk:10170 +#: gitk:11587 msgid "Command line" msgstr "Linea di comando" From 5cc0f821e46f7201cf997820de352444083c1768 Mon Sep 17 00:00:00 2001 From: Emmanuel Trillaud Date: Tue, 12 Jan 2010 14:02:50 +0100 Subject: [PATCH 49/66] gitk: Add French translation Signed-off-by: Emmanuel Trillaud Signed-off-by: Thomas Moulard Signed-off-by: Guy Brand Signed-off-by: Nicolas Sebrecht Signed-off-by: Paul Mackerras --- po/fr.po | 1254 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1254 insertions(+) create mode 100644 po/fr.po diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000000..cb0e1edc63 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,1254 @@ +# French translation of the gitk package +# Copyright (C) 2005-2008 Paul Mackerras. All rights reserved. +# This file is distributed under the same license as the gitk package. +# Translators: +# Emmanuel Trillaud +# +msgid "" +msgstr "" +"Project-Id-Version: gitk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-10-05 15:16+0200\n" +"PO-Revision-Date: 2009-11-19 22:13+0100\n" +"Last-Translator: Emmanuel Trillaud \n" +"Language-Team: git@vger.kernel.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: French\n" +"X-Poedit-Country: FRANCE\n" + +#: gitk:113 +msgid "Couldn't get list of unmerged files:" +msgstr "Impossible de récupérer la liste des fichiers non fusionnés :" + +#: gitk:269 +msgid "Error parsing revisions:" +msgstr "Erreur lors du parcours des révisions :" + +#: gitk:324 +msgid "Error executing --argscmd command:" +msgstr "Erreur à l'exécution de la commande --argscmd :" + +#: gitk:337 +msgid "No files selected: --merge specified but no files are unmerged." +msgstr "" +"Aucun fichier sélectionné : --merge précisé, mais tous les fichiers sont " +"fusionnés." + +# FIXME : améliorer la traduction de 'file limite' +#: gitk:340 +#, fuzzy +msgid "" +"No files selected: --merge specified but no unmerged files are within file " +"limit." +msgstr "" +"Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné " +"n'est dans la limite des fichiers." + +#: gitk:362 gitk:509 +msgid "Error executing git log:" +msgstr "Erreur à l'exécution de git log :" + +#: gitk:380 gitk:525 +msgid "Reading" +msgstr "Lecture en cours" + +#: gitk:440 gitk:4123 +msgid "Reading commits..." +msgstr "Lecture des commits..." + +#: gitk:443 gitk:1561 gitk:4126 +msgid "No commits selected" +msgstr "Aucun commit sélectionné" + +#: gitk:1437 +msgid "Can't parse git log output:" +msgstr "Impossible de lire la sortie de git log :" + +#: gitk:1657 +msgid "No commit information available" +msgstr "Aucune information disponible sur le commit" + +#: gitk:1793 gitk:1817 gitk:3916 gitk:8786 gitk:10322 gitk:10498 +msgid "OK" +msgstr "OK" + +#: gitk:1819 gitk:3918 gitk:8383 gitk:8457 gitk:8567 gitk:8616 gitk:8788 +#: gitk:10323 gitk:10499 +msgid "Cancel" +msgstr "Annuler" + +#: gitk:1919 +msgid "Update" +msgstr "Mise à jour" + +#: gitk:1920 +msgid "Reload" +msgstr "Recharger" + +#: gitk:1921 +msgid "Reread references" +msgstr "Relire les références" + +#: gitk:1922 +msgid "List references" +msgstr "Lister les références" + +#: gitk:1924 +msgid "Start git gui" +msgstr "Démarrer git gui" + +#: gitk:1926 +msgid "Quit" +msgstr "Quitter" + +#: gitk:1918 +msgid "File" +msgstr "Fichier" + +#: gitk:1930 +msgid "Preferences" +msgstr "Préférences" + +#: gitk:1929 +msgid "Edit" +msgstr "Éditer" + +#: gitk:1934 +msgid "New view..." +msgstr "Nouvelle vue..." + +#: gitk:1935 +msgid "Edit view..." +msgstr "Éditer la vue..." + +#: gitk:1936 +msgid "Delete view" +msgstr "Supprimer la vue" + +#: gitk:1938 +msgid "All files" +msgstr "Tous les fichiers" + +#: gitk:1933 gitk:3670 +msgid "View" +msgstr "Vue" + +#: gitk:1943 gitk:1953 gitk:2654 +msgid "About gitk" +msgstr "À propos de gitk" + +#: gitk:1944 gitk:1958 +msgid "Key bindings" +msgstr "Raccourcis clavier" + +#: gitk:1942 gitk:1957 +msgid "Help" +msgstr "Aide" + +#: gitk:2018 +msgid "SHA1 ID: " +msgstr "ID SHA1 :" + +#: gitk:2049 +msgid "Row" +msgstr "Colonne" + +#: gitk:2080 +msgid "Find" +msgstr "Recherche" + +#: gitk:2081 +msgid "next" +msgstr "suivant" + +#: gitk:2082 +msgid "prev" +msgstr "précédent" + +#: gitk:2083 +msgid "commit" +msgstr "commit" + +#: gitk:2086 gitk:2088 gitk:4284 gitk:4307 gitk:4331 gitk:6272 gitk:6344 +#: gitk:6428 +msgid "containing:" +msgstr "contient :" + +#: gitk:2089 gitk:3162 gitk:3167 gitk:4359 +msgid "touching paths:" +msgstr "chemins modifiés :" + +#: gitk:2090 gitk:4364 +msgid "adding/removing string:" +msgstr "ajoute/supprime la chaîne :" + +#: gitk:2099 gitk:2101 +msgid "Exact" +msgstr "Exact" + +#: gitk:2101 gitk:4439 gitk:6240 +msgid "IgnCase" +msgstr "Ignorer la casse" + +#: gitk:2101 gitk:4333 gitk:4437 gitk:6236 +msgid "Regexp" +msgstr "Expression régulière" + +#: gitk:2103 gitk:2104 gitk:4458 gitk:4488 gitk:4495 gitk:6364 gitk:6432 +msgid "All fields" +msgstr "Tous les champs" + +#: gitk:2104 gitk:4456 gitk:4488 gitk:6303 +msgid "Headline" +msgstr "Surligner" + +#: gitk:2105 gitk:4456 gitk:6303 gitk:6432 gitk:6866 +msgid "Comments" +msgstr "Commentaires" + +#: gitk:2105 gitk:4456 gitk:4460 gitk:4495 gitk:6303 gitk:6801 gitk:8063 +#: gitk:8078 +msgid "Author" +msgstr "Auteur" + +#: gitk:2105 gitk:4456 gitk:6303 gitk:6803 +msgid "Committer" +msgstr "Auteur du commit" + +#: gitk:2134 +msgid "Search" +msgstr "Rechercher" + +#: gitk:2141 +msgid "Diff" +msgstr "Diff" + +#: gitk:2143 +msgid "Old version" +msgstr "Ancienne version" + +#: gitk:2145 +msgid "New version" +msgstr "Nouvelle version" + +#: gitk:2147 +msgid "Lines of context" +msgstr "Lignes de contexte" + +#: gitk:2157 +msgid "Ignore space change" +msgstr "Ignorer les modifications d'espace" + +#: gitk:2215 +msgid "Patch" +msgstr "Patch" + +#: gitk:2217 +msgid "Tree" +msgstr "Arbre" + +#: gitk:2361 gitk:2378 +msgid "Diff this -> selected" +msgstr "Diff entre ceci et la sélection" + +#: gitk:2362 gitk:2379 +msgid "Diff selected -> this" +msgstr "Diff entre sélection et ceci" + +#: gitk:2363 gitk:2380 +msgid "Make patch" +msgstr "Créer patch" + +#: gitk:2364 gitk:8441 +msgid "Create tag" +msgstr "Créer tag" + +#: gitk:2365 gitk:8547 +msgid "Write commit to file" +msgstr "Écrire le commit dans un fichier" + +#: gitk:2366 gitk:8604 +msgid "Create new branch" +msgstr "Créer une nouvelle branche" + +#: gitk:2367 +msgid "Cherry-pick this commit" +msgstr "Cueillir (cherry-pick) ce commit" + +#: gitk:2368 +msgid "Reset HEAD branch to here" +msgstr "Réinitialiser la branche HEAD vers cet état" + +#: gitk:2369 +msgid "Mark this commit" +msgstr "Marquer ce commit" + +#: gitk:2370 +msgid "Return to mark" +msgstr "Retourner à la marque" + +#: gitk:2371 +msgid "Find descendant of this and mark" +msgstr "Chercher le descendant de ceci et le marquer" + +#: gitk:2372 +msgid "Compare with marked commit" +msgstr "Comparer avec le commit marqué" + +#: gitk:2386 +msgid "Check out this branch" +msgstr "Récupérer cette branche" + +#: gitk:2387 +msgid "Remove this branch" +msgstr "Supprimer cette branche" + +#: gitk:2394 +msgid "Highlight this too" +msgstr "Surligner également ceci" + +#: gitk:2395 +msgid "Highlight this only" +msgstr "Surligner seulement ceci" + +#: gitk:2396 +msgid "External diff" +msgstr "Diff externe" + +#: gitk:2397 +msgid "Blame parent commit" +msgstr "Blâmer le commit parent" + +#: gitk:2404 +msgid "Show origin of this line" +msgstr "Montrer l'origine de cette ligne" + +#: gitk:2405 +msgid "Run git gui blame on this line" +msgstr "Exécuter git gui blame sur cette ligne" + +#: gitk:2656 +msgid "" +"\n" +"Gitk - a commit viewer for git\n" +"\n" +"Copyright © 2005-2008 Paul Mackerras\n" +"\n" +"Use and redistribute under the terms of the GNU General Public License" +msgstr "" +"\n" +"Gitk - visualisateur de commit pour git\n" +"\n" +"Copyright © 2005-2008 Paul Mackerras\n" +"\n" +"Utilisation et redistribution soumises aux termes de la GNU General Public " +"License" + +#: gitk:2664 gitk:2726 gitk:8969 +msgid "Close" +msgstr "Fermer" + +#: gitk:2683 +msgid "Gitk key bindings" +msgstr "Raccourcis clavier de Gitk" + +#: gitk:2686 +msgid "Gitk key bindings:" +msgstr "Raccourcis clavier de Gitk :" + +#: gitk:2688 +#, tcl-format +msgid "<%s-Q>\t\tQuit" +msgstr "<%s-Q>\t\tQuitter" + +#: gitk:2689 +msgid "\t\tMove to first commit" +msgstr "\t\tAller au premier commit" + +#: gitk:2690 +msgid "\t\tMove to last commit" +msgstr "\t\tAller au dernier commit" + +#: gitk:2691 +msgid ", p, i\tMove up one commit" +msgstr ", p, i\t Aller au commit suivant" + +#: gitk:2692 +msgid ", n, k\tMove down one commit" +msgstr ", n, k\t Aller au commit précédent" + +#: gitk:2693 +msgid ", z, j\tGo back in history list" +msgstr ", z, j\tReculer dans l'historique" + +#: gitk:2694 +msgid ", x, l\tGo forward in history list" +msgstr ", x, l\tAvancer dans l'historique" + +#: gitk:2695 +msgid "\tMove up one page in commit list" +msgstr "\tMonter d'une page dans la liste des commits" + +#: gitk:2696 +msgid "\tMove down one page in commit list" +msgstr "\tDescendre d'une page dans la liste des commits" + +#: gitk:2697 +#, tcl-format +msgid "<%s-Home>\tScroll to top of commit list" +msgstr "<%s-Début>\tAller en haut de la liste des commits" + +#: gitk:2698 +#, tcl-format +msgid "<%s-End>\tScroll to bottom of commit list" +msgstr "<%s-End>\tAller en bas de la liste des commits" + +#: gitk:2699 +#, tcl-format +msgid "<%s-Up>\tScroll commit list up one line" +msgstr "<%s-Up>\tMonter d'une ligne dans la liste des commits" + +#: gitk:2700 +#, tcl-format +msgid "<%s-Down>\tScroll commit list down one line" +msgstr "<%s-Down>\tDescendre d'une ligne dans la liste des commits" + +#: gitk:2701 +#, tcl-format +msgid "<%s-PageUp>\tScroll commit list up one page" +msgstr "<%s-PageUp>\tMonter d'une page dans la liste des commits" + +#: gitk:2702 +#, tcl-format +msgid "<%s-PageDown>\tScroll commit list down one page" +msgstr "<%s-PageDown>\tDescendre d'une page dans la liste des commits" + +#: gitk:2703 +msgid "\tFind backwards (upwards, later commits)" +msgstr "" +"\tRecherche en arrière (vers l'avant, commits les plus anciens)" + +#: gitk:2704 +msgid "\tFind forwards (downwards, earlier commits)" +msgstr "" +"\tRecherche en avant (vers l'arrière, commit les plus récents)" + +#: gitk:2705 +msgid ", b\tScroll diff view up one page" +msgstr ", b\tMonter d'une page dans la vue des diff" + +#: gitk:2706 +msgid "\tScroll diff view up one page" +msgstr "\tMonter d'une page dans la vue des diff" + +#: gitk:2707 +msgid "\t\tScroll diff view down one page" +msgstr "\t\tDescendre d'une page dans la vue des diff" + +#: gitk:2708 +msgid "u\t\tScroll diff view up 18 lines" +msgstr "u\t\tMonter de 18 lignes dans la vue des diff" + +#: gitk:2709 +msgid "d\t\tScroll diff view down 18 lines" +msgstr "d\t\tDescendre de 18 lignes dans la vue des diff" + +#: gitk:2710 +#, tcl-format +msgid "<%s-F>\t\tFind" +msgstr "<%s-F>\t\tRechercher" + +#: gitk:2711 +#, tcl-format +msgid "<%s-G>\t\tMove to next find hit" +msgstr "<%s-G>\t\tAller au résultat de recherche suivant" + +#: gitk:2712 +msgid "\tMove to next find hit" +msgstr "\t\tAller au résultat de recherche suivant" + +#: gitk:2713 +msgid "/\t\tFocus the search box" +msgstr "/\t\tFocus sur la zone de recherche" + +#: gitk:2714 +msgid "?\t\tMove to previous find hit" +msgstr "?\t\tAller au résultat de recherche précédent" + +#: gitk:2715 +msgid "f\t\tScroll diff view to next file" +msgstr "f\t\tAller au prochain fichier dans la vue des diff" + +#: gitk:2716 +#, tcl-format +msgid "<%s-S>\t\tSearch for next hit in diff view" +msgstr "<%s-S>\t\tAller au résultat suivant dans la vue des diff" + +#: gitk:2717 +#, tcl-format +msgid "<%s-R>\t\tSearch for previous hit in diff view" +msgstr "<%s-R>\t\tAller au résultat précédent dans la vue des diff" + +#: gitk:2718 +#, tcl-format +msgid "<%s-KP+>\tIncrease font size" +msgstr "<%s-KP+>\tAugmenter la taille de la police" + +#: gitk:2719 +#, tcl-format +msgid "<%s-plus>\tIncrease font size" +msgstr "<%s-plus>\tAugmenter la taille de la police" + +#: gitk:2720 +#, tcl-format +msgid "<%s-KP->\tDecrease font size" +msgstr "<%s-KP->\tDiminuer la taille de la police" + +#: gitk:2721 +#, tcl-format +msgid "<%s-minus>\tDecrease font size" +msgstr "<%s-minus>\tDiminuer la taille de la police" + +#: gitk:2722 +msgid "\t\tUpdate" +msgstr "\t\tMise à jour" + +#: gitk:3177 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Erreur en obtenant \"%s\" de %s:" + +#: gitk:3234 gitk:3243 +#, tcl-format +msgid "Error creating temporary directory %s:" +msgstr "Erreur lors de la création du répertoire temporaire %s :" + +#: gitk:3255 +msgid "command failed:" +msgstr "échec de la commande :" + +#: gitk:3401 +msgid "No such commit" +msgstr "Commit inexistant" + +#: gitk:3415 +msgid "git gui blame: command failed:" +msgstr "git gui blame : échec de la commande :" + +#: gitk:3446 +#, tcl-format +msgid "Couldn't read merge head: %s" +msgstr "Impossible de lire le head de la fusion : %s" + +#: gitk:3454 +#, tcl-format +msgid "Error reading index: %s" +msgstr "Erreur à la lecture de l'index : %s" + +#: gitk:3479 +#, tcl-format +msgid "Couldn't start git blame: %s" +msgstr "Impossible de démarrer git blame : %s" + +#: gitk:3482 gitk:6271 +msgid "Searching" +msgstr "Recherche en cours" + +#: gitk:3514 +#, tcl-format +msgid "Error running git blame: %s" +msgstr "Erreur à l'exécution de git blame : %s" + +#: gitk:3542 +#, tcl-format +msgid "That line comes from commit %s, which is not in this view" +msgstr "Cette ligne est issue du commit %s, qui n'est pas dans cette vue" + +#: gitk:3556 +msgid "External diff viewer failed:" +msgstr "Échec de l'outil externe de visualisation des diff" + +#: gitk:3674 +msgid "Gitk view definition" +msgstr "Définition des vues de Gitk" + +#: gitk:3678 +msgid "Remember this view" +msgstr "Se souvenir de cette vue" + +#: gitk:3679 +msgid "References (space separated list):" +msgstr "Références (liste d'éléments séparés par des espaces) :" + +#: gitk:3680 +msgid "Branches & tags:" +msgstr "Branches & tags :" + +#: gitk:3681 +msgid "All refs" +msgstr "Toutes les références" + +#: gitk:3682 +msgid "All (local) branches" +msgstr "Toutes les branches (locales)" + +#: gitk:3683 +msgid "All tags" +msgstr "Tous les tags" + +#: gitk:3684 +msgid "All remote-tracking branches" +msgstr "Toutes les branches de suivi à distance" + +#: gitk:3685 +msgid "Commit Info (regular expressions):" +msgstr "Info sur les commits (expressions régulières) :" + +#: gitk:3686 +msgid "Author:" +msgstr "Auteur :" + +#: gitk:3687 +msgid "Committer:" +msgstr "Commiteur :" + +#: gitk:3688 +msgid "Commit Message:" +msgstr "Message de commit :" + +#: gitk:3689 +msgid "Matches all Commit Info criteria" +msgstr "Correspond à tous les critères d'Info sur les commits" + +#: gitk:3690 +msgid "Changes to Files:" +msgstr "Changements des fichiers :" + +#: gitk:3691 +msgid "Fixed String" +msgstr "Chaîne Figée" + +#: gitk:3692 +msgid "Regular Expression" +msgstr "Expression Régulière" + +#: gitk:3693 +msgid "Search string:" +msgstr "Recherche de la chaîne :" + +#: gitk:3694 +msgid "" +"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" +msgstr "" +"Dates des commits (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, " +"2009 15:27:38\") :" + +#: gitk:3695 +msgid "Since:" +msgstr "De :" + +#: gitk:3696 +msgid "Until:" +msgstr "Jusqu'au :" + +#: gitk:3697 +msgid "Limit and/or skip a number of revisions (positive integer):" +msgstr "Limiter et/ou sauter un certain nombre (entier positif) de révisions :" + +#: gitk:3698 +msgid "Number to show:" +msgstr "Nombre à afficher :" + +#: gitk:3699 +msgid "Number to skip:" +msgstr "Nombre à sauter :" + +#: gitk:3700 +msgid "Miscellaneous options:" +msgstr "Options diverses :" + +#: gitk:3701 +msgid "Strictly sort by date" +msgstr "Trier par date" + +# FIXME : traduction de "branch sides" +#: gitk:3702 +#, fuzzy +msgid "Mark branch sides" +msgstr "Marquer les extrémités des branches" + +#: gitk:3703 +msgid "Limit to first parent" +msgstr "Limiter au premier ancêtre" + +#: gitk:3704 +msgid "Simple history" +msgstr "Historique simple" + +#: gitk:3705 +msgid "Additional arguments to git log:" +msgstr "Arguments supplémentaires de git log :" + +#: gitk:3706 +msgid "Enter files and directories to include, one per line:" +msgstr "Saisir les fichiers et répertoires à inclure, un par ligne :" + +#: gitk:3707 +msgid "Command to generate more commits to include:" +msgstr "Commande pour générer plus de commits à inclure :" + +#: gitk:3829 +msgid "Gitk: edit view" +msgstr "Gitk : éditer la vue" + +#: gitk:3837 +msgid "-- criteria for selecting revisions" +msgstr "-- critère pour la sélection des révisions" + +#: gitk:3842 +msgid "View Name:" +msgstr "Nom de la vue :" + +#: gitk:3917 +msgid "Apply (F5)" +msgstr "Appliquer (F5)" + +#: gitk:3955 +msgid "Error in commit selection arguments:" +msgstr "Erreur dans les arguments de sélection des commits :" + +#: gitk:4008 gitk:4060 gitk:4508 gitk:4522 gitk:5783 gitk:11196 gitk:11197 +msgid "None" +msgstr "Aucun" + +#: gitk:4456 gitk:6303 gitk:8065 gitk:8080 +msgid "Date" +msgstr "Date" + +#: gitk:4456 gitk:6303 +msgid "CDate" +msgstr "CDate" + +#: gitk:4605 gitk:4610 +msgid "Descendant" +msgstr "Descendant" + +#: gitk:4606 +msgid "Not descendant" +msgstr "Pas un descendant" + +#: gitk:4613 gitk:4618 +msgid "Ancestor" +msgstr "Ancêtre" + +#: gitk:4614 +msgid "Not ancestor" +msgstr "Pas un ancêtre" + +#: gitk:4904 +msgid "Local changes checked in to index but not committed" +msgstr "Modifications locales enregistrées dans l'index mais non commitées" + +#: gitk:4940 +msgid "Local uncommitted changes, not checked in to index" +msgstr "Modifications locales non enregistrées dans l'index et non commitées" + +#: gitk:6621 +msgid "many" +msgstr "nombreux" + +#: gitk:6805 +msgid "Tags:" +msgstr "Tags :" + +#: gitk:6822 gitk:6828 gitk:8058 +msgid "Parent" +msgstr "Parent" + +#: gitk:6833 +msgid "Child" +msgstr "Enfant" + +#: gitk:6842 +msgid "Branch" +msgstr "Branche" + +#: gitk:6845 +msgid "Follows" +msgstr "Suit" + +#: gitk:6848 +msgid "Precedes" +msgstr "Précède" + +#: gitk:7346 +#, tcl-format +msgid "Error getting diffs: %s" +msgstr "Erreur lors de la récupération des diff : %s" + +#: gitk:7886 +msgid "Goto:" +msgstr "Aller à :" + +#: gitk:7888 +msgid "SHA1 ID:" +msgstr "Id SHA1 :" + +#: gitk:7907 +#, tcl-format +msgid "Short SHA1 id %s is ambiguous" +msgstr "Id SHA1 court %s est ambigu" + +#: gitk:7914 +#, tcl-format +msgid "Revision %s is not known" +msgstr "Id SHA1 %s est inconnu" + +#: gitk:7924 +#, tcl-format +msgid "SHA1 id %s is not known" +msgstr "Id SHA1 %s est inconnu" + +#: gitk:7926 +#, tcl-format +msgid "Revision %s is not in the current view" +msgstr "La révision %s n'est pas dans la vue courante" + +#: gitk:8068 +msgid "Children" +msgstr "Enfants" + +#: gitk:8125 +#, tcl-format +msgid "Reset %s branch to here" +msgstr "Réinitialiser la branche %s vers cet état" + +#: gitk:8127 +msgid "Detached head: can't reset" +msgstr "Head détaché : impossible de réinitialiser" + +#: gitk:8236 gitk:8242 +msgid "Skipping merge commit " +msgstr "Éviter le commit de la fusion " + +#: gitk:8251 gitk:8256 +msgid "Error getting patch ID for " +msgstr "Erreur à l'obtention de l'ID du patch pour " + +#: gitk:8252 gitk:8257 +msgid " - stopping\n" +msgstr " - arrêt en cours\n" + +#: gitk:8262 gitk:8265 gitk:8273 gitk:8283 gitk:8292 +msgid "Commit " +msgstr "Commit " + +#: gitk:8266 +msgid "" +" is the same patch as\n" +" " +msgstr "" +"est le même patch que \n" +" " + +#: gitk:8274 +msgid "" +" differs from\n" +" " +msgstr "" +" diffère de\n" +" " + +#: gitk:8276 +msgid "- stopping\n" +msgstr "- arrêt en cours\n" + +#: gitk:8284 gitk:8293 +#, tcl-format +msgid " has %s children - stopping\n" +msgstr "a %s enfants - arrêt en cours\n" + +#: gitk:8324 +msgid "Top" +msgstr "Haut" + +#: gitk:8325 +msgid "From" +msgstr "De" + +#: gitk:8330 +msgid "To" +msgstr "À" + +#: gitk:8354 +msgid "Generate patch" +msgstr "Générer le patch" + +#: gitk:8356 +msgid "From:" +msgstr "De :" + +#: gitk:8365 +msgid "To:" +msgstr "À :" + +#: gitk:8374 +msgid "Reverse" +msgstr "Inverser" + +#: gitk:8376 gitk:8561 +msgid "Output file:" +msgstr "Fichier de sortie :" + +#: gitk:8382 +msgid "Generate" +msgstr "Générer" + +#: gitk:8420 +msgid "Error creating patch:" +msgstr "Erreur à la création du patch :" + +#: gitk:8443 gitk:8549 gitk:8606 +msgid "ID:" +msgstr "ID :" + +#: gitk:8452 +msgid "Tag name:" +msgstr "Nom du Tag :" + +#: gitk:8456 gitk:8615 +msgid "Create" +msgstr "Créer" + +#: gitk:8473 +msgid "No tag name specified" +msgstr "Aucun nom de tag spécifié" + +#: gitk:8477 +#, tcl-format +msgid "Tag \"%s\" already exists" +msgstr "Le tag \"%s\" existe déjà" + +#: gitk:8483 +msgid "Error creating tag:" +msgstr "Erreur à la création du tag :" + +#: gitk:8558 +msgid "Command:" +msgstr "Commande :" + +#: gitk:8566 +msgid "Write" +msgstr "Écrire" + +#: gitk:8584 +msgid "Error writing commit:" +msgstr "Erreur à l'ecriture du commit :" + +#: gitk:8611 +msgid "Name:" +msgstr "Nom :" + +#: gitk:8634 +msgid "Please specify a name for the new branch" +msgstr "Veuillez spécifier un nom pour la nouvelle branche" + +#: gitk:8639 +#, tcl-format +msgid "Branch '%s' already exists. Overwrite?" +msgstr "La branche '%s' existe déjà. Écraser?" + +#: gitk:8705 +#, tcl-format +msgid "Commit %s is already included in branch %s -- really re-apply it?" +msgstr "" +"Le Commit %s est déjà inclus dans la branche %s -- le ré-appliquer malgré " +"tout?" + +#: gitk:8710 +msgid "Cherry-picking" +msgstr "Cueillir (Cherry-picking)" + +#: gitk:8719 +#, tcl-format +msgid "" +"Cherry-pick failed because of local changes to file '%s'.\n" +"Please commit, reset or stash your changes and try again." +msgstr "" +"La cueillette (cherry-pick) a échouée à cause de modifications locales du " +"fichier '%s'.\n" +"Veuillez commiter, réinitialiser ou stasher vos changements et essayer de " +"nouveau." + +#: gitk:8725 +msgid "" +"Cherry-pick failed because of merge conflict.\n" +"Do you wish to run git citool to resolve it?" +msgstr "" +"La cueillette (cherry-pick) a échouée à cause d'un conflit lors d'une " +"fusion.\n" +"Souhaitez-vous exécuter git citool pour le résoudre ?" + +#: gitk:8741 +msgid "No changes committed" +msgstr "Aucun changement commité" + +#: gitk:8767 +msgid "Confirm reset" +msgstr "Confirmer la réinitialisation" + +#: gitk:8769 +#, tcl-format +msgid "Reset branch %s to %s?" +msgstr "Réinitialiser la branche %s à %s?" + +#: gitk:8773 +msgid "Reset type:" +msgstr "Type de réinitialisation :" + +#: gitk:8777 +msgid "Soft: Leave working tree and index untouched" +msgstr "Douce : Laisse le répertoire de travail et l'index intacts" + +#: gitk:8780 +msgid "Mixed: Leave working tree untouched, reset index" +msgstr "" +"Hybride : Laisse le répertoire de travail dans son état courant, " +"réinitialise l'index" + +#: gitk:8783 +msgid "" +"Hard: Reset working tree and index\n" +"(discard ALL local changes)" +msgstr "" +"Dure : Réinitialise le répertoire de travail et l'index\n" +"(abandonne TOUS les changements locaux)" + +#: gitk:8800 +msgid "Resetting" +msgstr "Réinitialisation" + +# Fixme: Récupération est-il vraiment une mauvaise traduction? +#: gitk:8857 +#, fuzzy +msgid "Checking out" +msgstr "Récupération" + +#: gitk:8910 +msgid "Cannot delete the currently checked-out branch" +msgstr "Impossible de supprimer la branche en cours" + +#: gitk:8916 +#, tcl-format +msgid "" +"The commits on branch %s aren't on any other branch.\n" +"Really delete branch %s?" +msgstr "" +"Les commits de la branche %s ne sont dans aucune autre branche.\n" +"Voulez-vous vraiment supprimer cette branche %s ?" + +#: gitk:8947 +#, tcl-format +msgid "Tags and heads: %s" +msgstr "Tags et heads : %s" + +#: gitk:8962 +msgid "Filter" +msgstr "Filtrer" + +#: gitk:9257 +msgid "" +"Error reading commit topology information; branch and preceding/following " +"tag information will be incomplete." +msgstr "" +"Erreur à la lecture des informations sur la topologie des commits, les " +"informations sur les branches et les tags précédents/suivants seront " +"incomplètes." + +#: gitk:10243 +msgid "Tag" +msgstr "Tag" + +#: gitk:10243 +msgid "Id" +msgstr "Id" + +#: gitk:10291 +msgid "Gitk font chooser" +msgstr "Sélecteur de police de Gitk" + +#: gitk:10308 +msgid "B" +msgstr "B" + +#: gitk:10311 +msgid "I" +msgstr "I" + +#: gitk:10407 +msgid "Gitk preferences" +msgstr "Préférences de Gitk" + +#: gitk:10409 +msgid "Commit list display options" +msgstr "Options d'affichage de la liste des commits" + +#: gitk:10412 +msgid "Maximum graph width (lines)" +msgstr "Longueur maximum du graphe (lignes)" + +# FIXME : Traduction standard de "pane"? +#: gitk:10416 +#, fuzzy, tcl-format +msgid "Maximum graph width (% of pane)" +msgstr "Longueur maximum du graphe (% du panneau)" + +#: gitk:10420 +msgid "Show local changes" +msgstr "Montrer les changements locaux" + +#: gitk:10423 +msgid "Auto-select SHA1" +msgstr "Sélection auto. du SHA1" + +#: gitk:10427 +msgid "Diff display options" +msgstr "Options d'affichage des diff" + +#: gitk:10429 +msgid "Tab spacing" +msgstr "Taille des tabulations" + +#: gitk:10432 +msgid "Display nearby tags" +msgstr "Afficher les tags les plus proches" + +#: gitk:10435 +msgid "Hide remote refs" +msgstr "Cacher les refs distantes" + +#: gitk:10438 +msgid "Limit diffs to listed paths" +msgstr "Limiter les différences aux chemins listés" + +#: gitk:10441 +msgid "Support per-file encodings" +msgstr "Support pour un encodage des caractères par fichier" + +#: gitk:10447 gitk:10512 +msgid "External diff tool" +msgstr "Outil diff externe" + +#: gitk:10449 +msgid "Choose..." +msgstr "Choisir..." + +#: gitk:10454 +msgid "Colors: press to choose" +msgstr "Couleurs : cliquer pour choisir" + +#: gitk:10457 +msgid "Background" +msgstr "Arrière-plan" + +#: gitk:10458 gitk:10488 +msgid "background" +msgstr "arrière-plan" + +#: gitk:10461 +msgid "Foreground" +msgstr "Premier plan" + +#: gitk:10462 +msgid "foreground" +msgstr "premier plan" + +#: gitk:10465 +msgid "Diff: old lines" +msgstr "Diff : anciennes lignes" + +#: gitk:10466 +msgid "diff old lines" +msgstr "diff anciennes lignes" + +#: gitk:10470 +msgid "Diff: new lines" +msgstr "Diff : nouvelles lignes" + +#: gitk:10471 +msgid "diff new lines" +msgstr "diff nouvelles lignes" + +#: gitk:10475 +msgid "Diff: hunk header" +msgstr "Diff : entête du hunk" + +#: gitk:10477 +msgid "diff hunk header" +msgstr "diff : entête du hunk" + +#: gitk:10481 +msgid "Marked line bg" +msgstr "Arrière-plan de la ligne marquée" + +#: gitk:10483 +msgid "marked line background" +msgstr "Arrière-plan de la ligne marquée" + +#: gitk:10487 +msgid "Select bg" +msgstr "Sélectionner l'arrière-plan" + +#: gitk:10491 +msgid "Fonts: press to choose" +msgstr "Polices : cliquer pour choisir" + +#: gitk:10493 +msgid "Main font" +msgstr "Police principale" + +#: gitk:10494 +msgid "Diff display font" +msgstr "Police d'affichage des diff" + +#: gitk:10495 +msgid "User interface font" +msgstr "Police de l'interface utilisateur" + +#: gitk:10522 +#, tcl-format +msgid "Gitk: choose color for %s" +msgstr "Gitk : choisir la couleur de %s" + +#: gitk:10973 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"Désolé, gitk ne peut être exécuté avec cette version de Tcl/Tk.\n" +" Gitk requiert Tcl/Tk version 8.4 ou supérieur." + +#: gitk:11101 +msgid "Cannot find a git repository here." +msgstr "Impossible de trouver un dépôt git ici." + +#: gitk:11105 +#, tcl-format +msgid "Cannot find the git directory \"%s\"." +msgstr "Impossible de trouver le répertoire git \"%s\"." + +#: gitk:11152 +#, tcl-format +msgid "Ambiguous argument '%s': both revision and filename" +msgstr "Argument '%s' ambigu : à la fois une révision et un nom de fichier" + +#: gitk:11164 +msgid "Bad arguments to gitk:" +msgstr "Arguments invalides pour gitk :" + +#: gitk:11249 +msgid "Command line" +msgstr "Ligne de commande" From d70bb6233272c46b53a697bf620ec8dcd2550de3 Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Fri, 29 Jan 2010 22:55:14 +1100 Subject: [PATCH 50/66] gitk: Update German translation Signed-off-by: Christian Stimming Signed-off-by: Paul Mackerras --- po/de.po | 749 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 436 insertions(+), 313 deletions(-) diff --git a/po/de.po b/po/de.po index e224595a23..c79aa9cbc8 100644 --- a/po/de.po +++ b/po/de.po @@ -8,33 +8,33 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-12 21:55+0200\n" -"PO-Revision-Date: 2009-05-12 22:18+0200\n" +"POT-Creation-Date: 2010-01-27 20:21+0100\n" +"PO-Revision-Date: 2010-01-27 20:27+0100\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" -#: gitk:113 +#: gitk:115 msgid "Couldn't get list of unmerged files:" msgstr "Liste der nicht zusammengeführten Dateien nicht gefunden:" -#: gitk:268 +#: gitk:274 msgid "Error parsing revisions:" msgstr "Fehler beim Laden der Versionen:" -#: gitk:323 +#: gitk:329 msgid "Error executing --argscmd command:" msgstr "Fehler beim Ausführen des --argscmd-Kommandos:" -#: gitk:336 +#: gitk:342 msgid "No files selected: --merge specified but no files are unmerged." msgstr "" "Keine Dateien ausgewählt: Es wurde --merge angegeben, aber es existieren " "keine nicht zusammengeführten Dateien." -#: gitk:339 +#: gitk:345 msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." @@ -42,719 +42,801 @@ msgstr "" "Keine Dateien ausgewählt: Es wurde --merge angegeben, aber es sind keine " "nicht zusammengeführten Dateien in der Dateiauswahl." -#: gitk:361 gitk:508 +#: gitk:367 gitk:514 msgid "Error executing git log:" msgstr "Fehler beim Ausführen von »git log«:" -#: gitk:379 gitk:524 +#: gitk:385 gitk:530 msgid "Reading" msgstr "Lesen" -#: gitk:439 gitk:4061 +#: gitk:445 gitk:4261 msgid "Reading commits..." msgstr "Versionen werden gelesen ..." -#: gitk:442 gitk:1560 gitk:4064 +#: gitk:448 gitk:1578 gitk:4264 msgid "No commits selected" msgstr "Keine Versionen ausgewählt" -#: gitk:1436 +#: gitk:1454 msgid "Can't parse git log output:" msgstr "Ausgabe von »git log« kann nicht erkannt werden:" -#: gitk:1656 +#: gitk:1674 msgid "No commit information available" msgstr "Keine Versionsinformation verfügbar" -#: gitk:1791 gitk:1815 gitk:3854 gitk:8714 gitk:10250 gitk:10422 +#: gitk:1816 +msgid "mc" +msgstr "mc" + +#: gitk:1851 gitk:4054 gitk:9044 gitk:10585 gitk:10804 msgid "OK" msgstr "Ok" -#: gitk:1817 gitk:3856 gitk:8311 gitk:8385 gitk:8495 gitk:8544 gitk:8716 -#: gitk:10251 gitk:10423 +#: gitk:1853 gitk:4056 gitk:8634 gitk:8713 gitk:8828 gitk:8877 gitk:9046 +#: gitk:10586 gitk:10805 msgid "Cancel" msgstr "Abbrechen" -#: gitk:1917 +#: gitk:1975 msgid "Update" msgstr "Aktualisieren" -#: gitk:1918 +#: gitk:1976 msgid "Reload" msgstr "Neu laden" -#: gitk:1919 +#: gitk:1977 msgid "Reread references" msgstr "Zweige neu laden" -#: gitk:1920 +#: gitk:1978 msgid "List references" msgstr "Zweige/Markierungen auflisten" -#: gitk:1922 +#: gitk:1980 msgid "Start git gui" msgstr "»git gui« starten" -#: gitk:1924 +#: gitk:1982 msgid "Quit" msgstr "Beenden" -#: gitk:1916 +#: gitk:1974 msgid "File" msgstr "Datei" -#: gitk:1928 +#: gitk:1986 msgid "Preferences" msgstr "Einstellungen" -#: gitk:1927 +#: gitk:1985 msgid "Edit" msgstr "Bearbeiten" -#: gitk:1932 +#: gitk:1990 msgid "New view..." msgstr "Neue Ansicht ..." -#: gitk:1933 +#: gitk:1991 msgid "Edit view..." msgstr "Ansicht bearbeiten ..." -#: gitk:1934 +#: gitk:1992 msgid "Delete view" msgstr "Ansicht entfernen" -#: gitk:1936 +#: gitk:1994 msgid "All files" msgstr "Alle Dateien" -#: gitk:1931 gitk:3666 +#: gitk:1989 gitk:3808 msgid "View" msgstr "Ansicht" -#: gitk:1941 gitk:1951 gitk:2650 +#: gitk:1999 gitk:2009 gitk:2780 msgid "About gitk" msgstr "Über gitk" -#: gitk:1942 gitk:1956 +#: gitk:2000 gitk:2014 msgid "Key bindings" msgstr "Tastenkürzel" -#: gitk:1940 gitk:1955 +#: gitk:1998 gitk:2013 msgid "Help" msgstr "Hilfe" -#: gitk:2016 -msgid "SHA1 ID: " -msgstr "SHA1:" +#: gitk:2091 gitk:8110 +msgid "SHA1 ID:" +msgstr "SHA1 ID:" -#: gitk:2047 +#: gitk:2122 msgid "Row" msgstr "Zeile" -#: gitk:2078 +#: gitk:2160 msgid "Find" msgstr "Suche" -#: gitk:2079 +#: gitk:2161 msgid "next" msgstr "nächste" -#: gitk:2080 +#: gitk:2162 msgid "prev" msgstr "vorige" -#: gitk:2081 +#: gitk:2163 msgid "commit" msgstr "Version nach" -#: gitk:2084 gitk:2086 gitk:4222 gitk:4245 gitk:4269 gitk:6210 gitk:6282 -#: gitk:6366 +#: gitk:2166 gitk:2168 gitk:4422 gitk:4445 gitk:4469 gitk:6410 gitk:6482 +#: gitk:6566 msgid "containing:" msgstr "Beschreibung:" -#: gitk:2087 gitk:3158 gitk:3163 gitk:4297 +#: gitk:2169 gitk:3290 gitk:3295 gitk:4497 msgid "touching paths:" msgstr "Dateien:" -#: gitk:2088 gitk:4302 +#: gitk:2170 gitk:4502 msgid "adding/removing string:" msgstr "Änderungen:" -#: gitk:2097 gitk:2099 +#: gitk:2179 gitk:2181 msgid "Exact" msgstr "Exakt" -#: gitk:2099 gitk:4377 gitk:6178 +#: gitk:2181 gitk:4577 gitk:6378 msgid "IgnCase" msgstr "Kein Groß/Klein" -#: gitk:2099 gitk:4271 gitk:4375 gitk:6174 +#: gitk:2181 gitk:4471 gitk:4575 gitk:6374 msgid "Regexp" msgstr "Regexp" -#: gitk:2101 gitk:2102 gitk:4396 gitk:4426 gitk:4433 gitk:6302 gitk:6370 +#: gitk:2183 gitk:2184 gitk:4596 gitk:4626 gitk:4633 gitk:6502 gitk:6570 msgid "All fields" msgstr "Alle Felder" -#: gitk:2102 gitk:4394 gitk:4426 gitk:6241 +#: gitk:2184 gitk:4594 gitk:4626 gitk:6441 msgid "Headline" msgstr "Überschrift" -#: gitk:2103 gitk:4394 gitk:6241 gitk:6370 gitk:6804 +#: gitk:2185 gitk:4594 gitk:6441 gitk:6570 gitk:7003 msgid "Comments" msgstr "Beschreibung" -#: gitk:2103 gitk:4394 gitk:4398 gitk:4433 gitk:6241 gitk:6739 gitk:7991 -#: gitk:8006 +#: gitk:2185 gitk:4594 gitk:4598 gitk:4633 gitk:6441 gitk:6938 gitk:8285 +#: gitk:8300 msgid "Author" msgstr "Autor" -#: gitk:2103 gitk:4394 gitk:6241 gitk:6741 +#: gitk:2185 gitk:4594 gitk:6441 gitk:6940 msgid "Committer" msgstr "Eintragender" -#: gitk:2132 +#: gitk:2216 msgid "Search" msgstr "Suchen" -#: gitk:2139 +#: gitk:2224 msgid "Diff" msgstr "Vergleich" -#: gitk:2141 +#: gitk:2226 msgid "Old version" msgstr "Alte Version" -#: gitk:2143 +#: gitk:2228 msgid "New version" msgstr "Neue Version" -#: gitk:2145 +#: gitk:2230 msgid "Lines of context" msgstr "Kontextzeilen" -#: gitk:2155 +#: gitk:2240 msgid "Ignore space change" msgstr "Leerzeichenänderungen ignorieren" -#: gitk:2213 +#: gitk:2299 msgid "Patch" msgstr "Patch" -#: gitk:2215 +#: gitk:2301 msgid "Tree" msgstr "Baum" -#: gitk:2359 gitk:2376 +#: gitk:2456 gitk:2473 msgid "Diff this -> selected" msgstr "Vergleich: diese -> gewählte" -#: gitk:2360 gitk:2377 +#: gitk:2457 gitk:2474 msgid "Diff selected -> this" msgstr "Vergleich: gewählte -> diese" -#: gitk:2361 gitk:2378 +#: gitk:2458 gitk:2475 msgid "Make patch" msgstr "Patch erstellen" -#: gitk:2362 gitk:8369 +#: gitk:2459 gitk:8692 msgid "Create tag" msgstr "Markierung erstellen" -#: gitk:2363 gitk:8475 +#: gitk:2460 gitk:8808 msgid "Write commit to file" msgstr "Version in Datei schreiben" -#: gitk:2364 gitk:8532 +#: gitk:2461 gitk:8865 msgid "Create new branch" msgstr "Neuen Zweig erstellen" -#: gitk:2365 +#: gitk:2462 msgid "Cherry-pick this commit" msgstr "Diese Version pflücken" -#: gitk:2366 +#: gitk:2463 msgid "Reset HEAD branch to here" msgstr "HEAD-Zweig auf diese Version zurücksetzen" -#: gitk:2367 +#: gitk:2464 msgid "Mark this commit" msgstr "Lesezeichen setzen" -#: gitk:2368 +#: gitk:2465 msgid "Return to mark" msgstr "Zum Lesezeichen" -#: gitk:2369 +#: gitk:2466 msgid "Find descendant of this and mark" msgstr "Abkömmling von Lesezeichen und dieser Version finden" -#: gitk:2370 +#: gitk:2467 msgid "Compare with marked commit" msgstr "Mit Lesezeichen vergleichen" -#: gitk:2384 +#: gitk:2481 msgid "Check out this branch" msgstr "Auf diesen Zweig umstellen" -#: gitk:2385 +#: gitk:2482 msgid "Remove this branch" msgstr "Zweig löschen" -#: gitk:2392 +#: gitk:2489 msgid "Highlight this too" msgstr "Diesen auch hervorheben" -#: gitk:2393 +#: gitk:2490 msgid "Highlight this only" msgstr "Nur diesen hervorheben" -#: gitk:2394 +#: gitk:2491 msgid "External diff" msgstr "Externes Diff-Programm" -#: gitk:2395 +#: gitk:2492 msgid "Blame parent commit" msgstr "Annotieren der Elternversion" -#: gitk:2402 +#: gitk:2499 msgid "Show origin of this line" msgstr "Herkunft dieser Zeile anzeigen" -#: gitk:2403 +#: gitk:2500 msgid "Run git gui blame on this line" msgstr "Diese Zeile annotieren (»git gui blame«)" -#: gitk:2652 +#: gitk:2782 msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright ©9 2005-2009 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - eine Visualisierung der Git-Historie\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright © 2005-2009 Paul Mackerras\n" "\n" -"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public " -"License" +"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public License" -#: gitk:2660 gitk:2722 gitk:8897 +#: gitk:2790 gitk:2854 gitk:9230 msgid "Close" msgstr "Schließen" -#: gitk:2679 +#: gitk:2811 msgid "Gitk key bindings" msgstr "Gitk-Tastaturbelegung" -#: gitk:2682 +#: gitk:2814 msgid "Gitk key bindings:" msgstr "Gitk-Tastaturbelegung:" -#: gitk:2684 +#: gitk:2816 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tBeenden" -#: gitk:2685 +#: gitk:2817 msgid "\t\tMove to first commit" msgstr "\t\tZur neuesten Version springen" -#: gitk:2686 +#: gitk:2818 msgid "\t\tMove to last commit" msgstr "\t\tZur ältesten Version springen" -#: gitk:2687 +#: gitk:2819 msgid ", p, i\tMove up one commit" msgstr ", p, i\tNächste neuere Version" -#: gitk:2688 +#: gitk:2820 msgid ", n, k\tMove down one commit" msgstr ", n, k\tNächste ältere Version" -#: gitk:2689 +#: gitk:2821 msgid ", z, j\tGo back in history list" msgstr ", z, j\tEine Version zurückgehen" -#: gitk:2690 +#: gitk:2822 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tEine Version weitergehen" -#: gitk:2691 +#: gitk:2823 msgid "\tMove up one page in commit list" msgstr "\tEine Seite nach oben blättern" -#: gitk:2692 +#: gitk:2824 msgid "\tMove down one page in commit list" msgstr "\tEine Seite nach unten blättern" -#: gitk:2693 +#: gitk:2825 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Pos1>\tZum oberen Ende der Versionsliste blättern" -#: gitk:2694 +#: gitk:2826 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-Ende>\tZum unteren Ende der Versionsliste blättern" -#: gitk:2695 +#: gitk:2827 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Hoch>\tVersionsliste eine Zeile nach oben blättern" -#: gitk:2696 +#: gitk:2828 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Runter>\tVersionsliste eine Zeile nach unten blättern" -#: gitk:2697 +#: gitk:2829 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-BildHoch>\tVersionsliste eine Seite nach oben blättern" -#: gitk:2698 +#: gitk:2830 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-BildRunter>\tVersionsliste eine Seite nach unten blättern" -#: gitk:2699 +#: gitk:2831 msgid "\tFind backwards (upwards, later commits)" msgstr "\tRückwärts suchen (nach oben; neuere Versionen)" -#: gitk:2700 +#: gitk:2832 msgid "\tFind forwards (downwards, earlier commits)" msgstr " Suchen (nach unten; ältere Versionen)" -#: gitk:2701 +#: gitk:2833 msgid ", b\tScroll diff view up one page" msgstr ", b\t\tVergleich eine Seite nach oben blättern" -#: gitk:2702 +#: gitk:2834 msgid "\tScroll diff view up one page" msgstr "\tVergleich eine Seite nach oben blättern" -#: gitk:2703 +#: gitk:2835 msgid "\t\tScroll diff view down one page" msgstr "\tVergleich eine Seite nach unten blättern" -#: gitk:2704 +#: gitk:2836 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tVergleich um 18 Zeilen nach oben blättern" -#: gitk:2705 +#: gitk:2837 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tVergleich um 18 Zeilen nach unten blättern" -#: gitk:2706 +#: gitk:2838 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tSuchen" -#: gitk:2707 +#: gitk:2839 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tWeitersuchen" -#: gitk:2708 +#: gitk:2840 msgid "\tMove to next find hit" msgstr "\tWeitersuchen" -#: gitk:2709 +#: gitk:2841 msgid "/\t\tFocus the search box" msgstr "/\t\tTastaturfokus ins Suchfeld" -#: gitk:2710 +#: gitk:2842 msgid "?\t\tMove to previous find hit" msgstr "?\t\tRückwärts weitersuchen" -#: gitk:2711 +#: gitk:2843 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tVergleich zur nächsten Datei blättern" -#: gitk:2712 +#: gitk:2844 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tWeitersuchen im Vergleich" -#: gitk:2713 +#: gitk:2845 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tRückwärts weitersuchen im Vergleich" -#: gitk:2714 +#: gitk:2846 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Nummerblock-Plus>\tSchrift vergrößern" -#: gitk:2715 +#: gitk:2847 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-Plus>\tSchrift vergrößern" -#: gitk:2716 +#: gitk:2848 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Nummernblock-Minus> Schrift verkleinern" -#: gitk:2717 +#: gitk:2849 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-Minus>\tSchrift verkleinern" -#: gitk:2718 +#: gitk:2850 msgid "\t\tUpdate" msgstr "\t\tAktualisieren" -#: gitk:3173 -#, tcl-format -msgid "Error getting \"%s\" from %s:" -msgstr "Fehler beim Holen von »%s« von »%s«:" - -#: gitk:3230 gitk:3239 +#: gitk:3305 gitk:3314 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Fehler beim Erzeugen des temporären Verzeichnisses »%s«:" -#: gitk:3251 +#: gitk:3327 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Fehler beim Holen von »%s« von »%s«:" + +#: gitk:3390 msgid "command failed:" msgstr "Kommando fehlgeschlagen:" -#: gitk:3397 +#: gitk:3539 msgid "No such commit" msgstr "Version nicht gefunden" -#: gitk:3411 +#: gitk:3553 msgid "git gui blame: command failed:" msgstr "git gui blame: Kommando fehlgeschlagen:" -#: gitk:3442 +#: gitk:3584 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Zusammenführungs-Spitze konnte nicht gelesen werden: %s" -#: gitk:3450 +#: gitk:3592 #, tcl-format msgid "Error reading index: %s" msgstr "Fehler beim Lesen der Bereitstellung (»index«): %s" -#: gitk:3475 +#: gitk:3617 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "»git blame« konnte nicht gestartet werden: %s" -#: gitk:3478 gitk:6209 +#: gitk:3620 gitk:6409 msgid "Searching" msgstr "Suchen" -#: gitk:3510 +#: gitk:3652 #, tcl-format msgid "Error running git blame: %s" msgstr "Fehler beim Ausführen von »git blame«: %s" -#: gitk:3538 +#: gitk:3680 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" "Diese Zeile stammt aus Version %s, die nicht in dieser Ansicht gezeigt wird" -#: gitk:3552 +#: gitk:3694 msgid "External diff viewer failed:" msgstr "Externes Diff-Programm fehlgeschlagen:" -#: gitk:3670 +#: gitk:3812 msgid "Gitk view definition" msgstr "Gitk-Ansichten" -#: gitk:3674 +#: gitk:3816 msgid "Remember this view" msgstr "Diese Ansicht speichern" -#: gitk:3675 -msgid "Commits to include (arguments to git log):" -msgstr "Versionen anzeigen (Argumente von git log):" +#: gitk:3817 +msgid "References (space separated list):" +msgstr "Zweige/Markierungen (durch Leerzeichen getrennte Liste):" -#: gitk:3676 -msgid "Use all refs" -msgstr "Alle Zweige verwenden" +#: gitk:3818 +msgid "Branches & tags:" +msgstr "Zweige/Markierungen:" -#: gitk:3677 +#: gitk:3819 +msgid "All refs" +msgstr "Alle Markierungen und Zweige" + +#: gitk:3820 +msgid "All (local) branches" +msgstr "Alle (lokalen) Zweige" + +#: gitk:3821 +msgid "All tags" +msgstr "Alle Markierungen" + +#: gitk:3822 +msgid "All remote-tracking branches" +msgstr "Alle Übernahmezweige" + +#: gitk:3823 +msgid "Commit Info (regular expressions):" +msgstr "Versionsinformationen (reguläre Ausdrücke):" + +#: gitk:3824 +msgid "Author:" +msgstr "Autor:" + +#: gitk:3825 +msgid "Committer:" +msgstr "Eintragender:" + +#: gitk:3826 +msgid "Commit Message:" +msgstr "Versionsbeschreibung:" + +#: gitk:3827 +msgid "Matches all Commit Info criteria" +msgstr "Alle Versionsinformationen-Kriterien erfüllen" + +#: gitk:3828 +msgid "Changes to Files:" +msgstr "Dateien:" + +#: gitk:3829 +msgid "Fixed String" +msgstr "Zeichenkette" + +#: gitk:3830 +msgid "Regular Expression" +msgstr "Regulärer Ausdruck" + +#: gitk:3831 +msgid "Search string:" +msgstr "Suchausdruck:" + +#: gitk:3832 +msgid "" +"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" +msgstr "Datum (»2 weeks ago«, »2009-03-17 15:27:38«, »March 17, 2009 15:27:38«)" + +#: gitk:3833 +msgid "Since:" +msgstr "Von:" + +#: gitk:3834 +msgid "Until:" +msgstr "Bis:" + +#: gitk:3835 +msgid "Limit and/or skip a number of revisions (positive integer):" +msgstr "Versionsanzahl begrenzen oder einige überspringen (ganzzahliger Wert):" + +#: gitk:3836 +msgid "Number to show:" +msgstr "Anzeigen:" + +#: gitk:3837 +msgid "Number to skip:" +msgstr "Überspringen:" + +#: gitk:3838 +msgid "Miscellaneous options:" +msgstr "Sonstiges:" + +#: gitk:3839 msgid "Strictly sort by date" msgstr "Streng nach Datum sortieren" -#: gitk:3678 +#: gitk:3840 msgid "Mark branch sides" msgstr "Zweig-Seiten markieren" -#: gitk:3679 -msgid "Since date:" -msgstr "Von Datum:" - -#: gitk:3680 -msgid "Until date:" -msgstr "Bis Datum:" - -#: gitk:3681 -msgid "Max count:" -msgstr "Max. Anzahl:" - -#: gitk:3682 -msgid "Skip:" -msgstr "Überspringen:" - -#: gitk:3683 +#: gitk:3841 msgid "Limit to first parent" msgstr "Auf erste Elternversion beschränken" -#: gitk:3684 -msgid "Command to generate more commits to include:" -msgstr "Versionsliste durch folgendes Kommando erzeugen lassen:" +#: gitk:3842 +msgid "Simple history" +msgstr "Einfache Historie" -#: gitk:3780 -msgid "Gitk: edit view" -msgstr "Gitk: Ansicht bearbeiten" +#: gitk:3843 +msgid "Additional arguments to git log:" +msgstr "Zusätzliche Argumente für »git log«:" -#: gitk:3793 -msgid "Name" -msgstr "Name" - -#: gitk:3841 +#: gitk:3844 msgid "Enter files and directories to include, one per line:" msgstr "Folgende Dateien und Verzeichnisse anzeigen (eine pro Zeile):" -#: gitk:3855 +#: gitk:3845 +msgid "Command to generate more commits to include:" +msgstr "Versionsliste durch folgendes Kommando erzeugen lassen:" + +#: gitk:3967 +msgid "Gitk: edit view" +msgstr "Gitk: Ansicht bearbeiten" + +#: gitk:3975 +msgid "-- criteria for selecting revisions" +msgstr "-- Auswahl der angezeigten Versionen" + +#: gitk:3980 +msgid "View Name" +msgstr "Ansichtsname" + +#: gitk:4055 msgid "Apply (F5)" msgstr "Anwenden (F5)" -#: gitk:3893 +#: gitk:4093 msgid "Error in commit selection arguments:" msgstr "Fehler in den ausgewählten Versionen:" -#: gitk:3946 gitk:3998 gitk:4446 gitk:4460 gitk:5721 gitk:11114 gitk:11115 +#: gitk:4146 gitk:4198 gitk:4646 gitk:4660 gitk:5921 gitk:11534 gitk:11535 msgid "None" msgstr "Keine" -#: gitk:4394 gitk:6241 gitk:7993 gitk:8008 +#: gitk:4594 gitk:6441 gitk:8287 gitk:8302 msgid "Date" msgstr "Datum" -#: gitk:4394 gitk:6241 +#: gitk:4594 gitk:6441 msgid "CDate" msgstr "Eintragedatum" -#: gitk:4543 gitk:4548 +#: gitk:4743 gitk:4748 msgid "Descendant" msgstr "Abkömmling" -#: gitk:4544 +#: gitk:4744 msgid "Not descendant" msgstr "Kein Abkömmling" -#: gitk:4551 gitk:4556 +#: gitk:4751 gitk:4756 msgid "Ancestor" msgstr "Vorgänger" -#: gitk:4552 +#: gitk:4752 msgid "Not ancestor" msgstr "Kein Vorgänger" -#: gitk:4842 +#: gitk:5042 msgid "Local changes checked in to index but not committed" msgstr "Lokale Änderungen bereitgestellt, aber nicht eingetragen" -#: gitk:4878 +#: gitk:5078 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokale Änderungen, nicht bereitgestellt" -#: gitk:6559 +#: gitk:6759 msgid "many" msgstr "viele" -#: gitk:6743 +#: gitk:6942 msgid "Tags:" msgstr "Markierungen:" -#: gitk:6760 gitk:6766 gitk:7986 +#: gitk:6959 gitk:6965 gitk:8280 msgid "Parent" msgstr "Eltern" -#: gitk:6771 +#: gitk:6970 msgid "Child" msgstr "Kind" -#: gitk:6780 +#: gitk:6979 msgid "Branch" msgstr "Zweig" -#: gitk:6783 +#: gitk:6982 msgid "Follows" msgstr "Folgt auf" -#: gitk:6786 +#: gitk:6985 msgid "Precedes" msgstr "Vorgänger von" -#: gitk:7279 +#: gitk:7522 #, tcl-format msgid "Error getting diffs: %s" msgstr "Fehler beim Laden des Vergleichs: %s" -#: gitk:7819 +#: gitk:8108 msgid "Goto:" msgstr "Gehe zu:" -#: gitk:7821 -msgid "SHA1 ID:" -msgstr "SHA1 ID:" - -#: gitk:7840 +#: gitk:8129 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Kurzer SHA1-Hashwert »%s« ist mehrdeutig" -#: gitk:7852 +#: gitk:8136 +#, tcl-format +msgid "Revision %s is not known" +msgstr "Version »%s« ist unbekannt" + +#: gitk:8146 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA1-Hashwert »%s« ist unbekannt" -#: gitk:7854 +#: gitk:8148 #, tcl-format -msgid "Tag/Head %s is not known" -msgstr "Markierung/Zweig »%s« ist unbekannt" +msgid "Revision %s is not in the current view" +msgstr "Version »%s« wird in der aktuellen Ansicht nicht angezeigt" -#: gitk:7996 +#: gitk:8290 msgid "Children" msgstr "Kinder" -#: gitk:8053 +#: gitk:8348 #, tcl-format msgid "Reset %s branch to here" msgstr "Zweig »%s« hierher zurücksetzen" -#: gitk:8055 +#: gitk:8350 msgid "Detached head: can't reset" msgstr "Zweigspitze ist abgetrennt: Zurücksetzen nicht möglich" -#: gitk:8164 gitk:8170 +#: gitk:8459 gitk:8465 msgid "Skipping merge commit " msgstr "Überspringe Zusammenführungs-Version " -#: gitk:8179 gitk:8184 +#: gitk:8474 gitk:8479 msgid "Error getting patch ID for " msgstr "Fehler beim Holen der Patch-ID für " -#: gitk:8180 gitk:8185 +#: gitk:8475 gitk:8480 msgid " - stopping\n" msgstr " - Abbruch.\n" -#: gitk:8190 gitk:8193 gitk:8201 gitk:8211 gitk:8220 +#: gitk:8485 gitk:8488 gitk:8496 gitk:8510 gitk:8519 msgid "Commit " msgstr "Version " -#: gitk:8194 +#: gitk:8489 msgid "" " is the same patch as\n" " " @@ -762,7 +844,7 @@ msgstr "" " ist das gleiche Patch wie\n" " " -#: gitk:8202 +#: gitk:8497 msgid "" " differs from\n" " " @@ -770,117 +852,138 @@ msgstr "" " ist unterschiedlich von\n" " " -#: gitk:8204 -msgid "- stopping\n" -msgstr "- Abbruch.\n" +#: gitk:8499 +msgid "" +"Diff of commits:\n" +"\n" +msgstr "" +"Vergleich der Versionen:\n" +"\n" -#: gitk:8212 gitk:8221 +#: gitk:8511 gitk:8520 #, tcl-format msgid " has %s children - stopping\n" msgstr " hat %s Kinder. Abbruch\n" -#: gitk:8252 +#: gitk:8539 +#, tcl-format +msgid "Error writing commit to file: %s" +msgstr "Fehler beim Schreiben der Version in Datei: %s" + +#: gitk:8545 +#, tcl-format +msgid "Error diffing commits: %s" +msgstr "Fehler beim Vergleichen der Versionen: %s" + +#: gitk:8575 msgid "Top" msgstr "Oben" -#: gitk:8253 +#: gitk:8576 msgid "From" msgstr "Von" -#: gitk:8258 +#: gitk:8581 msgid "To" msgstr "bis" -#: gitk:8282 +#: gitk:8605 msgid "Generate patch" msgstr "Patch erstellen" -#: gitk:8284 +#: gitk:8607 msgid "From:" msgstr "Von:" -#: gitk:8293 +#: gitk:8616 msgid "To:" msgstr "bis:" -#: gitk:8302 +#: gitk:8625 msgid "Reverse" msgstr "Umgekehrt" -#: gitk:8304 gitk:8489 +#: gitk:8627 gitk:8822 msgid "Output file:" msgstr "Ausgabedatei:" -#: gitk:8310 +#: gitk:8633 msgid "Generate" msgstr "Erzeugen" -#: gitk:8348 +#: gitk:8671 msgid "Error creating patch:" msgstr "Fehler beim Erzeugen des Patches:" -#: gitk:8371 gitk:8477 gitk:8534 +#: gitk:8694 gitk:8810 gitk:8867 msgid "ID:" msgstr "ID:" -#: gitk:8380 +#: gitk:8703 msgid "Tag name:" msgstr "Markierungsname:" -#: gitk:8384 gitk:8543 +#: gitk:8706 +msgid "Tag message is optional" +msgstr "Eine Markierungsbeschreibung ist optional" + +#: gitk:8708 +msgid "Tag message:" +msgstr "Markierungsbeschreibung:" + +#: gitk:8712 gitk:8876 msgid "Create" msgstr "Erstellen" -#: gitk:8401 +#: gitk:8730 msgid "No tag name specified" msgstr "Kein Markierungsname angegeben" -#: gitk:8405 +#: gitk:8734 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Markierung »%s« existiert bereits." -#: gitk:8411 +#: gitk:8744 msgid "Error creating tag:" msgstr "Fehler beim Erstellen der Markierung:" -#: gitk:8486 +#: gitk:8819 msgid "Command:" msgstr "Kommando:" -#: gitk:8494 +#: gitk:8827 msgid "Write" msgstr "Schreiben" -#: gitk:8512 +#: gitk:8845 msgid "Error writing commit:" msgstr "Fehler beim Schreiben der Version:" -#: gitk:8539 +#: gitk:8872 msgid "Name:" msgstr "Name:" -#: gitk:8562 +#: gitk:8895 msgid "Please specify a name for the new branch" msgstr "Bitte geben Sie einen Namen für den neuen Zweig an." -#: gitk:8567 +#: gitk:8900 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Zweig »%s« existiert bereits. Soll er überschrieben werden?" -#: gitk:8633 +#: gitk:8966 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" -"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut " -"eintragen?" +"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut eintragen?" -#: gitk:8638 +#: gitk:8971 msgid "Cherry-picking" msgstr "Version pflücken" -#: gitk:8647 +#: gitk:8980 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -890,7 +993,7 @@ msgstr "" "vorliegen. Bitte diese Änderungen eintragen, zurücksetzen oder\n" "zwischenspeichern (»git stash«) und dann erneut versuchen." -#: gitk:8653 +#: gitk:8986 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -899,34 +1002,34 @@ msgstr "" "ist. Soll das Zusammenführungs-Werkzeug (»git citool«) aufgerufen\n" "werden, um diesen Konflikt aufzulösen?" -#: gitk:8669 +#: gitk:9002 msgid "No changes committed" msgstr "Keine Änderungen eingetragen" -#: gitk:8695 +#: gitk:9028 msgid "Confirm reset" msgstr "Zurücksetzen bestätigen" -#: gitk:8697 +#: gitk:9030 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Zweig »%s« auf »%s« zurücksetzen?" -#: gitk:8701 +#: gitk:9032 msgid "Reset type:" msgstr "Art des Zurücksetzens:" -#: gitk:8705 +#: gitk:9035 msgid "Soft: Leave working tree and index untouched" msgstr "Harmlos: Arbeitskopie und Bereitstellung unverändert" -#: gitk:8708 +#: gitk:9038 msgid "Mixed: Leave working tree untouched, reset index" msgstr "" "Gemischt: Arbeitskopie unverändert,\n" "Bereitstellung zurückgesetzt" -#: gitk:8711 +#: gitk:9041 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -934,21 +1037,21 @@ msgstr "" "Hart: Arbeitskopie und Bereitstellung\n" "(Alle lokalen Änderungen werden gelöscht)" -#: gitk:8728 +#: gitk:9058 msgid "Resetting" msgstr "Zurücksetzen" -#: gitk:8785 +#: gitk:9118 msgid "Checking out" msgstr "Umstellen" -#: gitk:8838 +#: gitk:9171 msgid "Cannot delete the currently checked-out branch" msgstr "" "Der Zweig, auf den die Arbeitskopie momentan umgestellt ist, kann nicht " "gelöscht werden." -#: gitk:8844 +#: gitk:9177 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -957,16 +1060,16 @@ msgstr "" "Die Versionen auf Zweig »%s« existieren auf keinem anderen Zweig.\n" "Zweig »%s« trotzdem löschen?" -#: gitk:8875 +#: gitk:9208 #, tcl-format msgid "Tags and heads: %s" msgstr "Markierungen und Zweige: %s" -#: gitk:8890 +#: gitk:9223 msgid "Filter" msgstr "Filtern" -#: gitk:9185 +#: gitk:9518 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -974,182 +1077,202 @@ msgstr "" "Fehler beim Lesen der Strukturinformationen; Zweige und Informationen zu " "Vorgänger/Nachfolger werden unvollständig sein." -#: gitk:10171 +#: gitk:10504 msgid "Tag" msgstr "Markierung" -#: gitk:10171 +#: gitk:10504 msgid "Id" msgstr "Id" -#: gitk:10219 +#: gitk:10554 msgid "Gitk font chooser" msgstr "Gitk-Schriften wählen" -#: gitk:10236 +#: gitk:10571 msgid "B" msgstr "F" -#: gitk:10239 +#: gitk:10574 msgid "I" msgstr "K" -#: gitk:10334 +#: gitk:10692 msgid "Gitk preferences" msgstr "Gitk-Einstellungen" -#: gitk:10336 +#: gitk:10694 msgid "Commit list display options" msgstr "Anzeige der Versionsliste" -#: gitk:10339 +#: gitk:10697 msgid "Maximum graph width (lines)" msgstr "Maximale Graphenbreite (Zeilen)" -#: gitk:10343 +#: gitk:10700 #, tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximale Graphenbreite (% des Fensters)" -#: gitk:10347 +#: gitk:10703 msgid "Show local changes" msgstr "Lokale Änderungen anzeigen" -#: gitk:10350 +#: gitk:10706 msgid "Auto-select SHA1" msgstr "SHA1-Hashwert automatisch auswählen" -#: gitk:10354 +#: gitk:10709 +msgid "Hide remote refs" +msgstr "Entfernte Zweige/Markierungen ausblenden" + +#: gitk:10713 msgid "Diff display options" msgstr "Anzeige des Vergleichs" -#: gitk:10356 +#: gitk:10715 msgid "Tab spacing" msgstr "Tabulatorbreite" -#: gitk:10359 +#: gitk:10718 msgid "Display nearby tags" msgstr "Naheliegende Markierungen anzeigen" -#: gitk:10362 +#: gitk:10721 msgid "Limit diffs to listed paths" msgstr "Vergleich nur für angezeigte Pfade" -#: gitk:10365 +#: gitk:10724 msgid "Support per-file encodings" msgstr "Zeichenkodierung pro Datei ermitteln" -#: gitk:10371 gitk:10436 +#: gitk:10730 gitk:10819 msgid "External diff tool" msgstr "Externes Diff-Programm" -#: gitk:10373 +#: gitk:10731 msgid "Choose..." msgstr "Wählen ..." -#: gitk:10378 +#: gitk:10736 +msgid "General options" +msgstr "Allgemeine Optionen" + +#: gitk:10739 +msgid "Use themed widgets" +msgstr "Aussehen der Benutzeroberfläche durch Thema bestimmen" + +#: gitk:10741 +msgid "(change requires restart)" +msgstr "(Änderungen werden erst nach Neustart wirksam)" + +#: gitk:10743 +msgid "(currently unavailable)" +msgstr "(Momentan nicht verfügbar)" + +#: gitk:10747 msgid "Colors: press to choose" msgstr "Farben: Klicken zum Wählen" -#: gitk:10381 +#: gitk:10750 +msgid "Interface" +msgstr "Benutzeroberfläche" + +#: gitk:10751 +msgid "interface" +msgstr "Benutzeroberfläche" + +#: gitk:10754 msgid "Background" msgstr "Hintergrund" -#: gitk:10382 gitk:10412 +#: gitk:10755 gitk:10785 msgid "background" msgstr "Hintergrund" -#: gitk:10385 +#: gitk:10758 msgid "Foreground" msgstr "Vordergrund" -#: gitk:10386 +#: gitk:10759 msgid "foreground" msgstr "Vordergrund" -#: gitk:10389 +#: gitk:10762 msgid "Diff: old lines" msgstr "Vergleich: Alte Zeilen" -#: gitk:10390 +#: gitk:10763 msgid "diff old lines" msgstr "Vergleich - Alte Zeilen" -#: gitk:10394 +#: gitk:10767 msgid "Diff: new lines" msgstr "Vergleich: Neue Zeilen" -#: gitk:10395 +#: gitk:10768 msgid "diff new lines" msgstr "Vergleich - Neue Zeilen" -#: gitk:10399 +#: gitk:10772 msgid "Diff: hunk header" msgstr "Vergleich: Änderungstitel" -#: gitk:10401 +#: gitk:10774 msgid "diff hunk header" msgstr "Vergleich - Änderungstitel" -#: gitk:10405 +#: gitk:10778 msgid "Marked line bg" msgstr "Hintergrund für markierte Zeile" -#: gitk:10407 +#: gitk:10780 msgid "marked line background" msgstr "Hintergrund für markierte Zeile" -#: gitk:10411 +#: gitk:10784 msgid "Select bg" msgstr "Hintergrundfarbe auswählen" -#: gitk:10415 +#: gitk:10788 msgid "Fonts: press to choose" msgstr "Schriftart: Klicken zum Wählen" -#: gitk:10417 +#: gitk:10790 msgid "Main font" msgstr "Programmschriftart" -#: gitk:10418 +#: gitk:10791 msgid "Diff display font" msgstr "Schriftart für Vergleich" -#: gitk:10419 +#: gitk:10792 msgid "User interface font" msgstr "Beschriftungen" -#: gitk:10446 +#: gitk:10829 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: Farbe wählen für %s" -#: gitk:10893 -msgid "" -"Sorry, gitk cannot run with this version of Tcl/Tk.\n" -" Gitk requires at least Tcl/Tk 8.4." -msgstr "" -"Gitk läuft nicht mit dieser Version von Tcl/Tk.\n" -"Gitk benötigt mindestens Tcl/Tk 8.4." - -#: gitk:11020 +#: gitk:11433 msgid "Cannot find a git repository here." msgstr "Kein Git-Projektarchiv gefunden." -#: gitk:11024 +#: gitk:11437 #, tcl-format msgid "Cannot find the git directory \"%s\"." msgstr "Git-Verzeichnis »%s« wurde nicht gefunden." -#: gitk:11071 +#: gitk:11484 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Mehrdeutige Angabe »%s«: Sowohl Version als auch Dateiname existiert." -#: gitk:11083 +#: gitk:11496 msgid "Bad arguments to gitk:" msgstr "Falsche Kommandozeilen-Parameter für gitk:" -#: gitk:11167 +#: gitk:11587 msgid "Command line" msgstr "Kommandozeile" From 65d41d48a4e4e795d64dd7842a44d693b741bf31 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 29 Jan 2010 05:28:44 -0500 Subject: [PATCH 51/66] fix memcpy of overlapping area Caught by valgrind in t5500, but it is pretty obvious from reading the code that this is shifting elements of an array to the left, which needs memmove. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- commit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commit.c b/commit.c index 6393e1b362..a51d2cd1be 100644 --- a/commit.c +++ b/commit.c @@ -225,7 +225,7 @@ int unregister_shallow(const unsigned char *sha1) if (pos < 0) return -1; if (pos + 1 < commit_graft_nr) - memcpy(commit_graft + pos, commit_graft + pos + 1, + memmove(commit_graft + pos, commit_graft + pos + 1, sizeof(struct commit_graft *) * (commit_graft_nr - pos - 1)); commit_graft_nr--; From 7b48c170931f35c07c3ce78023519846073152a1 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 29 Jan 2010 05:31:30 -0500 Subject: [PATCH 52/66] fix off-by-one allocation error Caught by valgrind in t5516. Reading the code shows we malloc enough for our string, but not trailing NUL. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- builtin-push.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin-push.c b/builtin-push.c index 5df66081a6..5633f0ade4 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -52,7 +52,7 @@ static void set_refspecs(const char **refs, int nr) } else if (deleterefs && !strchr(ref, ':')) { char *delref; int len = strlen(ref)+1; - delref = xmalloc(len); + delref = xmalloc(len+1); strcpy(delref, ":"); strcat(delref, ref); ref = delref; From 02e51243559334e821e85b05dbb358e52b7ba4e5 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 29 Jan 2010 05:37:23 -0500 Subject: [PATCH 53/66] add shebang line to git-mergetool--lib.sh Even though this script is expected to be sourced instead of executed on its own, the #!/bin/sh line provides simple documentation about what format the file is in. In particular, the lack of such a line was confusing the valgrind support of our test scripts, which assumed that any executable without a #!-line should be intercepted and run through valgrind. So during valgrind-enabled tests, any script sourcing this file actually sourced the valgrind interception script instead. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- git-mergetool--lib.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index 5b6278572a..51dd0d67ba 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -1,3 +1,4 @@ +#!/bin/sh # git-mergetool--lib is a library for common merge tool functions diff_mode() { test "$TOOL_MODE" = diff From a004fb923d74c1d5500d493506b1462eb04cf017 Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Sat, 23 Jan 2010 15:20:28 +0100 Subject: [PATCH 54/66] If deriving SVN_SSH from GIT_SSH on msys, also add quotes In contrast to GIT_SSH, SVN_SSH requires quotes for paths that contain spaces. As GIT_SSH will not work if it contains quotes, it is safe to assume it never contains quotes. Also, adding quotes to SVN_SSH for paths that do not contain spaces does no harm. So we always add quotes when deriving SVN_SSH from GIT_SSH on msys. This fixes msysGit issue 385, see http://code.google.com/p/msysgit/issues/detail?id=385 Signed-off-by: Sebastian Schuberth Signed-off-by: Junio C Hamano --- git-svn.perl | 1 + 1 file changed, 1 insertion(+) diff --git a/git-svn.perl b/git-svn.perl index b321c968af..4f7dc2b73b 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -26,6 +26,7 @@ if (! exists $ENV{SVN_SSH}) { $ENV{SVN_SSH} = $ENV{GIT_SSH}; if ($^O eq 'msys') { $ENV{SVN_SSH} =~ s/\\/\\\\/g; + $ENV{SVN_SSH} =~ s/(.*)/"$1"/; } } } From 947c3464e49522c55296a8191aed7946bd0f4308 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Sat, 30 Jan 2010 00:54:05 +0100 Subject: [PATCH 55/66] Implement pthread_cond_broadcast on Windows See http://www.cse.wustl.edu/~schmidt/win32-cv-1.html, section "The SignalObjectAndWait solution". But note that this implementation does not use SignalObjectAndWait (which is needed to achieve fairness, but we do not need fairness). Note that our implementations of pthread_cond_broadcast and pthread_cond_signal require that they are invoked with the mutex held that is used in the pthread_cond_wait calls. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- compat/win32/pthread.c | 98 +++++++++++++++++++++++++++++++++++++----- compat/win32/pthread.h | 9 ++-- 2 files changed, 93 insertions(+), 14 deletions(-) diff --git a/compat/win32/pthread.c b/compat/win32/pthread.c index 631c0a46ea..5fc1670bee 100644 --- a/compat/win32/pthread.c +++ b/compat/win32/pthread.c @@ -52,24 +52,38 @@ int win32_pthread_join(pthread_t *thread, void **value_ptr) int pthread_cond_init(pthread_cond_t *cond, const void *unused) { cond->waiters = 0; + cond->was_broadcast = 0; + InitializeCriticalSection(&cond->waiters_lock); cond->sema = CreateSemaphore(NULL, 0, LONG_MAX, NULL); if (!cond->sema) die("CreateSemaphore() failed"); + + cond->continue_broadcast = CreateEvent(NULL, /* security */ + FALSE, /* auto-reset */ + FALSE, /* not signaled */ + NULL); /* name */ + if (!cond->continue_broadcast) + die("CreateEvent() failed"); + return 0; } int pthread_cond_destroy(pthread_cond_t *cond) { CloseHandle(cond->sema); - cond->sema = NULL; - + CloseHandle(cond->continue_broadcast); + DeleteCriticalSection(&cond->waiters_lock); return 0; } int pthread_cond_wait(pthread_cond_t *cond, CRITICAL_SECTION *mutex) { - InterlockedIncrement(&cond->waiters); + int last_waiter; + + EnterCriticalSection(&cond->waiters_lock); + cond->waiters++; + LeaveCriticalSection(&cond->waiters_lock); /* * Unlock external mutex and wait for signal. @@ -82,22 +96,52 @@ int pthread_cond_wait(pthread_cond_t *cond, CRITICAL_SECTION *mutex) /* let's wait - ignore return value */ WaitForSingleObject(cond->sema, INFINITE); - /* we're done waiting, so make sure we decrease waiters count */ - InterlockedDecrement(&cond->waiters); + /* + * Decrease waiters count. If we are the last waiter, then we must + * notify the broadcasting thread that it can continue. + * But if we continued due to cond_signal, we do not have to do that + * because the signaling thread knows that only one waiter continued. + */ + EnterCriticalSection(&cond->waiters_lock); + cond->waiters--; + last_waiter = cond->was_broadcast && cond->waiters == 0; + LeaveCriticalSection(&cond->waiters_lock); + if (last_waiter) { + /* + * cond_broadcast was issued while mutex was held. This means + * that all other waiters have continued, but are contending + * for the mutex at the end of this function because the + * broadcasting thread did not leave cond_broadcast, yet. + * (This is so that it can be sure that each waiter has + * consumed exactly one slice of the semaphor.) + * The last waiter must tell the broadcasting thread that it + * can go on. + */ + SetEvent(cond->continue_broadcast); + /* + * Now we go on to contend with all other waiters for + * the mutex. Auf in den Kampf! + */ + } /* lock external mutex again */ EnterCriticalSection(mutex); return 0; } +/* + * IMPORTANT: This implementation requires that pthread_cond_signal + * is called while the mutex is held that is used in the corresponding + * pthread_cond_wait calls! + */ int pthread_cond_signal(pthread_cond_t *cond) { - /* - * Access to waiters count is atomic; see "Interlocked Variable Access" - * http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx - */ - int have_waiters = cond->waiters > 0; + int have_waiters; + + EnterCriticalSection(&cond->waiters_lock); + have_waiters = cond->waiters > 0; + LeaveCriticalSection(&cond->waiters_lock); /* * Signal only when there are waiters @@ -108,3 +152,37 @@ int pthread_cond_signal(pthread_cond_t *cond) else return 0; } + +/* + * DOUBLY IMPORTANT: This implementation requires that pthread_cond_broadcast + * is called while the mutex is held that is used in the corresponding + * pthread_cond_wait calls! + */ +int pthread_cond_broadcast(pthread_cond_t *cond) +{ + EnterCriticalSection(&cond->waiters_lock); + + if ((cond->was_broadcast = cond->waiters > 0)) { + /* wake up all waiters */ + ReleaseSemaphore(cond->sema, cond->waiters, NULL); + LeaveCriticalSection(&cond->waiters_lock); + /* + * At this point all waiters continue. Each one takes its + * slice of the semaphor. Now it's our turn to wait: Since + * the external mutex is held, no thread can leave cond_wait, + * yet. For this reason, we can be sure that no thread gets + * a chance to eat *more* than one slice. OTOH, it means + * that the last waiter must send us a wake-up. + */ + WaitForSingleObject(cond->continue_broadcast, INFINITE); + /* + * Since the external mutex is held, no thread can enter + * cond_wait, and, hence, it is safe to reset this flag + * without cond->waiters_lock held. + */ + cond->was_broadcast = 0; + } else { + LeaveCriticalSection(&cond->waiters_lock); + } + return 0; +} diff --git a/compat/win32/pthread.h b/compat/win32/pthread.h index b8e1bcb046..c72f100f40 100644 --- a/compat/win32/pthread.h +++ b/compat/win32/pthread.h @@ -32,17 +32,18 @@ * See also: http://www.cse.wustl.edu/~schmidt/win32-cv-1.html */ typedef struct { - volatile LONG waiters; + LONG waiters; + int was_broadcast; + CRITICAL_SECTION waiters_lock; HANDLE sema; + HANDLE continue_broadcast; } pthread_cond_t; extern int pthread_cond_init(pthread_cond_t *cond, const void *unused); - extern int pthread_cond_destroy(pthread_cond_t *cond); - extern int pthread_cond_wait(pthread_cond_t *cond, CRITICAL_SECTION *mutex); - extern int pthread_cond_signal(pthread_cond_t *cond); +extern int pthread_cond_broadcast(pthread_cond_t *cond); /* * Simple thread creation implementation using pthread API From 3a985c27fe8bb9ed2fa9580a27c4b4dd7c7192ea Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 29 Jan 2010 23:38:31 -0800 Subject: [PATCH 56/66] Update draft release notes to 1.7.0 Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.0.txt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Documentation/RelNotes-1.7.0.txt b/Documentation/RelNotes-1.7.0.txt index 098e38bc94..997b026a73 100644 --- a/Documentation/RelNotes-1.7.0.txt +++ b/Documentation/RelNotes-1.7.0.txt @@ -48,6 +48,10 @@ Updates since v1.6.6 mismatch between fast-import and the frontends that produce the input stream. + * "git svn" support of subversion "merge tickets" and miscellaneous fixes. + + * "gitk" updates. + (portability) * Some more MSVC portability patches for msysgit port. @@ -113,11 +117,14 @@ Updates since v1.6.6 * "git fetch --all" can now be used in place of "git remote update". - * "git grep" does not rely on external grep anymore. + * "git grep" does not rely on external grep anymore. It can use more than + one threads to accelerate the operation. * "git grep" learned "--no-index" option, to search inside contents that are not managed by git. + * "git grep" learned "--quiet" option. + * "git log" and friends learned "--glob=heads/*" syntax that is a more flexible way to complement "--branches/--tags/--remotes". @@ -178,6 +185,11 @@ release, unless otherwise noted. the branch is fully merged to its upstream branch if it is not merged to the current branch. It now deletes it in such a case. + * "git config -f " run from a subdirectory misbehaved. + 65807ee (builtin-config: Fix crash when using "-f " + from non-root dir, 2010-01-26) may be merged to older maintenance + branches. + * When "git diff" is asked to compare the work tree with something, it used to consider that a checked-out submodule with uncommitted changes is not modified; this could cause people to forget committing @@ -186,6 +198,7 @@ release, unless otherwise noted. -- exec >/var/tmp/1 -O=v1.6.6.1-434-g3521c1b +O=v1.7.0-rc0-48-gdace5dd +O=v1.7.0-rc0-67-gb10b918 echo O=$(git describe master) git shortlog --no-merges $O..master ^maint From 31d87385c4fbd7fc4ab295f2848531b5c1021828 Mon Sep 17 00:00:00 2001 From: Markus Heidelberg Date: Sat, 30 Jan 2010 17:23:37 +0100 Subject: [PATCH 57/66] rebase: don't invoke the pager for each commit summary This regression was introduced by commit 0aa958d (rebase: replace antiquated sed invocation, 2010-01-24), which changed the invocation of "git rev-list | sed" to "git log". It can be reproduced by something like this: $ git rebase -s recursive origin/master Signed-off-by: Markus Heidelberg Signed-off-by: Junio C Hamano --- git-rebase.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-rebase.sh b/git-rebase.sh index b5d9178275..fb4fef7b1d 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -86,7 +86,7 @@ continue_merge () { fi fi test -z "$GIT_QUIET" && - git log --format=%s -1 "$cmt" + GIT_PAGER='' git log --format=%s -1 "$cmt" prev_head=`git rev-parse HEAD^0` # save the resulting commit so we can read-tree on it later From bfac23d9534ea88ed2b033cf0cb17b22ec0e4cdb Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 30 Jan 2010 09:42:58 -0600 Subject: [PATCH 58/66] grep: Fix two memory leaks We duplicate the grep_opt structure when using grep threads, but didn't later free either the patterns attached to this new structure or the structure itself. Signed-off-by: Dan McGee Signed-off-by: Junio C Hamano --- builtin-grep.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/builtin-grep.c b/builtin-grep.c index 9bd467c9b9..0ef849cb84 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -205,6 +205,8 @@ static void *run(void *arg) work_done(w); } + free_grep_patterns(arg); + free(arg); return (void*) (intptr_t) hit; } From a9c7c4364a6c1e0d95790cf2c8697b5b6ff30b1b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 30 Jan 2010 09:45:11 -0800 Subject: [PATCH 59/66] RPM packaging: don't include foreign-scm-helper bits yet The files in /usr/lib/python* are only the support infrastructure for foreign scm interface yet to be written and/or shipped with git. Don't include them in the binary package (this will also free us from Python dependency). When we ship with foreign scm interface, we will need to package these files with it in a separate subpackage, but we are not there yet. Signed-off-by: Junio C Hamano --- git.spec.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/git.spec.in b/git.spec.in index ab224f7eae..0a031088da 100644 --- a/git.spec.in +++ b/git.spec.in @@ -98,6 +98,7 @@ BuildRequires: perl(Error) Perl interface to Git %define path_settings ETC_GITCONFIG=/etc/gitconfig prefix=%{_prefix} mandir=%{_mandir} htmldir=%{_docdir}/%{name}-%{version} +%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %prep %setup -q @@ -112,6 +113,7 @@ rm -rf $RPM_BUILD_ROOT make %{_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" DESTDIR=$RPM_BUILD_ROOT \ %{path_settings} \ INSTALLDIRS=vendor install %{!?_without_docs: install-doc} +test ! -d $RPM_BUILD_ROOT%{python_sitelib} || rm -fr $RPM_BUILD_ROOT%{python_sitelib} find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';' find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';' find $RPM_BUILD_ROOT -type f -name perllocal.pod -exec rm -f {} ';' @@ -190,6 +192,9 @@ rm -rf $RPM_BUILD_ROOT # No files for you! %changelog +* Sat Jan 30 2010 Junio C Hamano +- We don't ship Python bits until a real foreign scm interface comes. + * Mon Feb 04 2009 David J. Mellor - fixed broken git help -w after renaming the git-core package to git. From b0883aa6c77111e88496bd0afe073caf68ab9f99 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 30 Jan 2010 12:08:26 -0800 Subject: [PATCH 60/66] is_submodule_modified(): fix breakage with external GIT_INDEX_FILE Even when the environment was given for the top-level process, checking in the submodule work tree should use the index file associated with the work tree of the submodule. Do not export it to the environment. Signed-off-by: Junio C Hamano --- submodule.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/submodule.c b/submodule.c index ca0527fbcb..6f7c21090b 100644 --- a/submodule.c +++ b/submodule.c @@ -126,7 +126,7 @@ int is_submodule_modified(const char *path) "--porcelain", NULL, }; - char *env[3]; + char *env[4]; struct strbuf buf = STRBUF_INIT; strbuf_addf(&buf, "%s/.git/", path); @@ -142,7 +142,9 @@ int is_submodule_modified(const char *path) env[0] = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "GIT_DIR=%s/.git", path); env[1] = strbuf_detach(&buf, NULL); - env[2] = NULL; + strbuf_addf(&buf, "GIT_INDEX_FILE"); + env[2] = strbuf_detach(&buf, NULL); + env[3] = NULL; memset(&cp, 0, sizeof(cp)); cp.argv = argv; @@ -161,6 +163,7 @@ int is_submodule_modified(const char *path) free(env[0]); free(env[1]); + free(env[2]); strbuf_release(&buf); return len != 0; } From 6a5d0b0a90789ed92cb87f1b69cfeef2a1db3566 Mon Sep 17 00:00:00 2001 From: Ralf Wildenhues Date: Sun, 31 Jan 2010 14:24:39 +0100 Subject: [PATCH 61/66] Fix typos in technical documentation. Signed-off-by: Ralf Wildenhues Signed-off-by: Junio C Hamano --- Documentation/diff-format.txt | 2 +- Documentation/git-bisect-lk2009.txt | 2 +- Documentation/git-fast-export.txt | 2 +- Documentation/git-fast-import.txt | 8 ++++---- Documentation/git-http-backend.txt | 2 +- Documentation/git-remote-helpers.txt | 2 +- Documentation/git-rev-parse.txt | 2 +- Documentation/git-submodule.txt | 2 +- Documentation/rev-list-options.txt | 8 ++++---- Documentation/technical/api-run-command.txt | 2 +- Documentation/technical/pack-protocol.txt | 10 +++++----- Documentation/technical/protocol-capabilities.txt | 4 ++-- Documentation/user-manual.txt | 2 +- 13 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt index b71712473e..15c7e794f4 100644 --- a/Documentation/diff-format.txt +++ b/Documentation/diff-format.txt @@ -19,7 +19,7 @@ git-diff-tree [-r] [...]:: git-diff-files [...]:: compares the index and the files on the filesystem. -The "git-diff-tree" command begins its ouput by printing the hash of +The "git-diff-tree" command begins its output by printing the hash of what is being compared. After that, all the commands print one output line per changed file. diff --git a/Documentation/git-bisect-lk2009.txt b/Documentation/git-bisect-lk2009.txt index 6b7b2e5497..86b3015c13 100644 --- a/Documentation/git-bisect-lk2009.txt +++ b/Documentation/git-bisect-lk2009.txt @@ -799,7 +799,7 @@ fixed in the "main" branch by commit "F"? The result of such a bisection would be that we would find that H is the first bad commit, when in fact it's B. So that would be wrong! -And yes it's can happen in practice that people working on one branch +And yes it can happen in practice that people working on one branch are not aware that people working on another branch fixed a bug! It could also happen that F fixed more than one bug or that it is a revert of some big development effort that was not ready to be diff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt index c24e14b870..98ec6b5871 100644 --- a/Documentation/git-fast-export.txt +++ b/Documentation/git-fast-export.txt @@ -37,7 +37,7 @@ unsigned, with 'verbatim', they will be silently exported and with 'warn', they will be exported, but you will see a warning. --tag-of-filtered-object=(abort|drop|rewrite):: - Specify how to handle tags whose tagged objectis filtered out. + Specify how to handle tags whose tagged object is filtered out. Since revisions and files to export can be limited by path, tagged objects may be filtered completely. + diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt index ff4022c15f..fa7d2fe142 100644 --- a/Documentation/git-fast-import.txt +++ b/Documentation/git-fast-import.txt @@ -152,7 +152,7 @@ fast-forward update, fast-import will skip updating that ref and instead prints a warning message. fast-import will always attempt to update all branch refs, and does not stop on the first failure. -Branch updates can be forced with \--force, but its recommended that +Branch updates can be forced with \--force, but it's recommended that this only be used on an otherwise quiet repository. Using \--force is not necessary for an initial import into an empty repository. @@ -267,7 +267,7 @@ is always copied into the identity string at the time it is being created by fast-import. There is no way to specify a different time or timezone. + -This particular format is supplied as its short to implement and +This particular format is supplied as it's short to implement and may be useful to a process that wants to create a new commit right now, without needing to use a working directory or 'git update-index'. @@ -420,7 +420,7 @@ quoting or escaping syntax is supported within ``. Here `` is any of the following: * The name of an existing branch already in fast-import's internal branch - table. If fast-import doesn't know the name, its treated as a SHA-1 + table. If fast-import doesn't know the name, it's treated as a SHA-1 expression. * A mark reference, `:`, where `` is the mark number. @@ -759,7 +759,7 @@ assigned mark. The mark command is optional here as some frontends have chosen to generate the Git SHA-1 for the blob on their own, and feed that -directly to `commit`. This is typically more work than its worth +directly to `commit`. This is typically more work than it's worth however, as marks are inexpensive to store and easy to use. `data` diff --git a/Documentation/git-http-backend.txt b/Documentation/git-http-backend.txt index 07931c6874..5238820657 100644 --- a/Documentation/git-http-backend.txt +++ b/Documentation/git-http-backend.txt @@ -14,7 +14,7 @@ DESCRIPTION ----------- A simple CGI program to serve the contents of a Git repository to Git clients accessing the repository over http:// and https:// protocols. -The program supports clients fetching using both the smart HTTP protcol +The program supports clients fetching using both the smart HTTP protocol and the backwards-compatible dumb HTTP protocol, as well as clients pushing using the smart HTTP protocol. diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt index 4685a898f1..1b5f61aa0b 100644 --- a/Documentation/git-remote-helpers.txt +++ b/Documentation/git-remote-helpers.txt @@ -25,7 +25,7 @@ Commands are given by the caller on the helper's standard input, one per line. 'capabilities':: Lists the capabilities of the helper, one per line, ending - with a blank line. Each capability may be preceeded with '*'. + with a blank line. Each capability may be preceded with '*'. This marks them mandatory for git version using the remote helper to understand (unknown mandatory capability is fatal error). diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt index e7845d4055..fc731525da 100644 --- a/Documentation/git-rev-parse.txt +++ b/Documentation/git-rev-parse.txt @@ -33,7 +33,7 @@ OPTIONS --stop-at-non-option:: Only meaningful in `--parseopt` mode. Lets the option parser stop at the first non-option argument. This can be used to parse sub-commands - that take options themself. + that take options themselves. --sq-quote:: Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 63aa694968..2502531a3d 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -218,7 +218,7 @@ OPTIONS This option is only valid for the update command. Rebase the current branch onto the commit recorded in the superproject. If this option is given, the submodule's HEAD will not - be detached. If a a merge failure prevents this process, you will have + be detached. If a merge failure prevents this process, you will have to resolve these failures with linkgit:git-rebase[1]. If the key `submodule.$name.update` is set to `rebase`, this option is implicit. diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index 3ef71179d9..6e9baf8b38 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -233,27 +233,27 @@ endif::git-rev-list[] Pretend as if all the refs in `$GIT_DIR/refs/heads` are listed on the command line as ''. If `pattern` is given, limit branches to ones matching given shell glob. If pattern lacks '?', - '*', or '[', '/*' at the end is impiled. + '*', or '[', '/*' at the end is implied. --tags[=pattern]:: Pretend as if all the refs in `$GIT_DIR/refs/tags` are listed on the command line as ''. If `pattern` is given, limit tags to ones matching given shell glob. If pattern lacks '?', '*', - or '[', '/*' at the end is impiled. + or '[', '/*' at the end is implied. --remotes[=pattern]:: Pretend as if all the refs in `$GIT_DIR/refs/remotes` are listed on the command line as ''. If `pattern`is given, limit remote tracking branches to ones matching given shell glob. - If pattern lacks '?', '*', or '[', '/*' at the end is impiled. + If pattern lacks '?', '*', or '[', '/*' at the end is implied. --glob=glob-pattern:: Pretend as if all the refs matching shell glob `glob-pattern` are listed on the command line as ''. Leading 'refs/', is automatically prepended if missing. If pattern lacks '?', '*', - or '[', '/*' at the end is impiled. + or '[', '/*' at the end is implied. ifndef::git-rev-list[] diff --git a/Documentation/technical/api-run-command.txt b/Documentation/technical/api-run-command.txt index b26c28133c..68bf4cad8b 100644 --- a/Documentation/technical/api-run-command.txt +++ b/Documentation/technical/api-run-command.txt @@ -51,7 +51,7 @@ The functions above do the following: ENOENT; a diagnostic is printed only if .silent_exec_failure is 0. . Otherwise, the program is run. If it terminates regularly, its exit - code is returned. No diagnistic is printed, even if the exit code is + code is returned. No diagnostic is printed, even if the exit code is non-zero. . If the program terminated due to a signal, then the return value is the diff --git a/Documentation/technical/pack-protocol.txt b/Documentation/technical/pack-protocol.txt index 7950eeeda4..9a5cdafa9c 100644 --- a/Documentation/technical/pack-protocol.txt +++ b/Documentation/technical/pack-protocol.txt @@ -149,7 +149,7 @@ advertisement list at all, but other refs may still appear. The stream MUST include capability declarations behind a NUL on the first ref. The peeled value of a ref (that is "ref^{}") MUST be immediately after the ref itself, if presented. A conforming server -MUST peel the ref if its an annotated tag. +MUST peel the ref if it's an annotated tag. ---- advertised-refs = (no-refs / list-of-refs) @@ -261,7 +261,7 @@ Without either multi_ack or multi_ack_detailed: * upload-pack sends "NAK" on a flush-pkt if no common object has been found yet. If one has been found, and thus an ACK - was already sent, its silent on the flush-pkt. + was already sent, it's silent on the flush-pkt. After the client has gotten enough ACK responses that it can determine that the server has enough information to send an efficient packfile @@ -271,9 +271,9 @@ as common with the server, or the --date-order queue is empty), or the client determines that it wants to give up (in the canonical implementation, this is determined when the client sends 256 'have' lines without getting any of them ACKed by the server - meaning there is nothing in common and -the server should just send all it's objects), then the client will send +the server should just send all of its objects), then the client will send a 'done' command. The 'done' command signals to the server that the client -is ready to receive it's packfile data. +is ready to receive its packfile data. However, the 256 limit *only* turns on in the canonical client implementation if we have received at least one "ACK %s continue" @@ -286,7 +286,7 @@ ACK after 'done' if there is at least one common base and multi_ack or multi_ack_detailed is enabled. The server always sends NAK after 'done' if there is no common base found. -Then the server will start sending it's packfile data. +Then the server will start sending its packfile data. ---- server-response = *ack_multi ack / nak diff --git a/Documentation/technical/protocol-capabilities.txt b/Documentation/technical/protocol-capabilities.txt index 1892d3eeac..fd1a593149 100644 --- a/Documentation/technical/protocol-capabilities.txt +++ b/Documentation/technical/protocol-capabilities.txt @@ -60,7 +60,7 @@ doesn't, as in the following diagram: If the client wants x,y and starts out by saying have F,S, the server doesn't know what F,S is. Eventually the client says "have d" and the server sends "ACK d continue" to let the client know to stop -walking down that line (so don't send c-b-a), but its not done yet, +walking down that line (so don't send c-b-a), but it's not done yet, it needs a base for x. The client keeps going with S-R-Q, until a gets reached, at which point the server has a clear base and it all ends. @@ -181,7 +181,7 @@ delete-refs ----------- If the server sends back the 'delete-refs' capability, it means that -it is capable of accepting an zero-id value as the target +it is capable of accepting a zero-id value as the target value of a reference update. It is not sent back by the client, it simply informs the client that it can be sent zero-id values to delete references. diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index b169836684..517daca08d 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -1196,7 +1196,7 @@ the time, you will want to commit your changes before you can merge, and if you don't, then linkgit:git-stash[1] can take these changes away while you're doing the merge, and reapply them afterwards. -If the changes are independant enough, Git will automatically complete +If the changes are independent enough, Git will automatically complete the merge and commit the result (or reuse an existing commit in case of <>, see below). On the other hand, if there are conflicts--for example, if the same file is From de7a79608c94f7319b55060741d6be98826deccb Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Sun, 31 Jan 2010 17:43:49 +0100 Subject: [PATCH 62/66] Fix memory leak in submodule.c The strbuf used in add_submodule_odb() was never released. So for every submodule - populated or not - we leaked its object directory name when using "git diff*" with the --submodule option. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano --- submodule.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/submodule.c b/submodule.c index 6f7c21090b..7d70c4f7bf 100644 --- a/submodule.c +++ b/submodule.c @@ -10,17 +10,19 @@ static int add_submodule_odb(const char *path) { struct strbuf objects_directory = STRBUF_INIT; struct alternate_object_database *alt_odb; + int ret = 0; strbuf_addf(&objects_directory, "%s/.git/objects/", path); - if (!is_directory(objects_directory.buf)) - return -1; - + if (!is_directory(objects_directory.buf)) { + ret = -1; + goto done; + } /* avoid adding it twice */ for (alt_odb = alt_odb_list; alt_odb; alt_odb = alt_odb->next) if (alt_odb->name - alt_odb->base == objects_directory.len && !strncmp(alt_odb->base, objects_directory.buf, objects_directory.len)) - return 0; + goto done; alt_odb = xmalloc(objects_directory.len + 42 + sizeof(*alt_odb)); alt_odb->next = alt_odb_list; @@ -31,7 +33,9 @@ static int add_submodule_odb(const char *path) alt_odb->name[41] = '\0'; alt_odb_list = alt_odb; prepare_alt_odb(); - return 0; +done: + strbuf_release(&objects_directory); + return ret; } void show_submodule_summary(FILE *f, const char *path, From 6ddf75ae5d0ff55844cd936a1b850ca9ae5abbe5 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sun, 31 Jan 2010 04:14:46 -0500 Subject: [PATCH 63/66] mention new shell execution behavior in release notes This is already in the "bells and whistles" section, but it also has a slight chance of breakage, so let's also mention it in the "changed behaviors" section. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.0.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/RelNotes-1.7.0.txt b/Documentation/RelNotes-1.7.0.txt index 997b026a73..f33e85da94 100644 --- a/Documentation/RelNotes-1.7.0.txt +++ b/Documentation/RelNotes-1.7.0.txt @@ -38,6 +38,13 @@ Notes on behaviour change whitespaces is reported with zero exit status when run with --exit-code, and there is no "diff --git" header for such a change. + * external diff and textconv helpers are now executed using the shell. + This makes them consistent with other programs executed by git, and + allows you to pass command-line parameters to the helpers. Any helper + paths containing spaces or other metacharacters now need to be + shell-quoted. The affected helpers are GIT_EXTERNAL_DIFF in the + environment, and diff.*.command and diff.*.textconv in the config + file. Updates since v1.6.6 -------------------- From 9f7a3c19dee2064b24b6b9fd5d6f6e770d4d539c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 31 Jan 2010 11:11:16 -0800 Subject: [PATCH 64/66] RPM packaging: use %global inside %{!?...} According to https://www.redhat.com/archives/fedora-devel-list/2010-January/msg00093.html scope of %define lasts until the end brace; earlier RPM up to Fedora 12 didn't necessarily honor the scope, but later versions corrected the bug. Problem and solution both pointed out by Todd Zullinger. Signed-off-by: Junio C Hamano --- git.spec.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/git.spec.in b/git.spec.in index 0a031088da..ee74a5eed7 100644 --- a/git.spec.in +++ b/git.spec.in @@ -98,7 +98,7 @@ BuildRequires: perl(Error) Perl interface to Git %define path_settings ETC_GITCONFIG=/etc/gitconfig prefix=%{_prefix} mandir=%{_mandir} htmldir=%{_docdir}/%{name}-%{version} -%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %prep %setup -q @@ -192,6 +192,9 @@ rm -rf $RPM_BUILD_ROOT # No files for you! %changelog +* Sun Jan 31 2010 Junio C Hamano +- Do not use %define inside %{!?...} construct. + * Sat Jan 30 2010 Junio C Hamano - We don't ship Python bits until a real foreign scm interface comes. From 7eb151d6e289b98d2ad3d1a9ad08fe3693f05a24 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Fri, 29 Jan 2010 19:22:19 -0600 Subject: [PATCH 65/66] Make NO_PTHREADS the sole thread configuration variable When the first piece of threaded code was introduced in commit 8ecce684, it came with its own THREADED_DELTA_SEARCH Makefile option. Since this time, more threaded code has come into the codebase and a NO_PTHREADS option has also been added. Get rid of the original option as the newer, more generic option covers everything we need. Signed-off-by: Dan McGee Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.0.txt | 3 +++ Makefile | 24 ++---------------------- builtin-pack-objects.c | 12 ++++++------ config.mak.in | 1 - configure.ac | 9 ++------- 5 files changed, 13 insertions(+), 36 deletions(-) diff --git a/Documentation/RelNotes-1.7.0.txt b/Documentation/RelNotes-1.7.0.txt index 997b026a73..45ac9067f0 100644 --- a/Documentation/RelNotes-1.7.0.txt +++ b/Documentation/RelNotes-1.7.0.txt @@ -175,6 +175,9 @@ Updates since v1.6.6 * Many more commands are now built-in. + * THREADED_DELTA_SEARCH is no more. If you build with threads, delta + compression will always take advantage of it. + Fixes since v1.6.6 ------------------ diff --git a/Makefile b/Makefile index af08c8f452..83383c38f1 100644 --- a/Makefile +++ b/Makefile @@ -180,9 +180,6 @@ all:: # If not set it defaults to the bare 'wish'. If it is set to the empty # string then NO_TCLTK will be forced (this is used by configure script). # -# Define THREADED_DELTA_SEARCH if you have pthreads and wish to exploit -# parallel delta searching when packing objects. -# # Define INTERNAL_QSORT to use Git's implementation of qsort(), which # is a simplified version of the merge sort used in glibc. This is # recommended if Git triggers O(n^2) behavior in your platform's qsort(). @@ -722,12 +719,10 @@ EXTLIBS = ifeq ($(uname_S),Linux) NO_STRLCPY = YesPlease NO_MKSTEMPS = YesPlease - THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),GNU/kFreeBSD) NO_STRLCPY = YesPlease NO_MKSTEMPS = YesPlease - THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),UnixWare) CC = cc @@ -781,7 +776,6 @@ ifeq ($(uname_S),Darwin) NO_STRLCPY = YesPlease endif NO_MEMMEM = YesPlease - THREADED_DELTA_SEARCH = YesPlease USE_ST_TIMESPEC = YesPlease endif ifeq ($(uname_S),SunOS) @@ -794,7 +788,6 @@ ifeq ($(uname_S),SunOS) NO_MKDTEMP = YesPlease NO_MKSTEMPS = YesPlease NO_REGEX = YesPlease - THREADED_DELTA_SEARCH = YesPlease ifeq ($(uname_R),5.7) NEEDS_RESOLV = YesPlease NO_IPV6 = YesPlease @@ -850,7 +843,6 @@ ifeq ($(uname_S),FreeBSD) BASIC_LDFLAGS += -L/usr/local/lib DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease USE_ST_TIMESPEC = YesPlease - THREADED_DELTA_SEARCH = YesPlease ifeq ($(shell expr "$(uname_R)" : '4\.'),2) PTHREAD_LIBS = -pthread NO_UINTMAX_T = YesPlease @@ -864,7 +856,6 @@ ifeq ($(uname_S),OpenBSD) NEEDS_LIBICONV = YesPlease BASIC_CFLAGS += -I/usr/local/include BASIC_LDFLAGS += -L/usr/local/lib - THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),NetBSD) ifeq ($(shell expr "$(uname_R)" : '[01]\.'),2) @@ -872,7 +863,6 @@ ifeq ($(uname_S),NetBSD) endif BASIC_CFLAGS += -I/usr/pkg/include BASIC_LDFLAGS += -L/usr/pkg/lib $(CC_LD_DYNPATH)/usr/pkg/lib - THREADED_DELTA_SEARCH = YesPlease USE_ST_TIMESPEC = YesPlease NO_MKSTEMPS = YesPlease endif @@ -887,9 +877,7 @@ ifeq ($(uname_S),AIX) INTERNAL_QSORT = UnfortunatelyYes NEEDS_LIBICONV=YesPlease BASIC_CFLAGS += -D_LARGE_FILES - ifneq ($(shell expr "$(uname_V)" : '[1234]'),1) - THREADED_DELTA_SEARCH = YesPlease - else + ifeq ($(shell expr "$(uname_V)" : '[1234]'),1) NO_PTHREADS = YesPlease endif endif @@ -915,7 +903,6 @@ ifeq ($(uname_S),IRIX) SNPRINTF_RETURNS_BOGUS = YesPlease SHELL_PATH = /usr/gnu/bin/bash NEEDS_LIBGEN = YesPlease - THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),IRIX64) NO_SETENV=YesPlease @@ -934,7 +921,6 @@ ifeq ($(uname_S),IRIX64) SNPRINTF_RETURNS_BOGUS = YesPlease SHELL_PATH=/usr/gnu/bin/bash NEEDS_LIBGEN = YesPlease - THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),HP-UX) NO_IPV6=YesPlease @@ -984,7 +970,6 @@ ifeq ($(uname_S),Windows) NO_CURL = YesPlease NO_PYTHON = YesPlease BLK_SHA1 = YesPlease - THREADED_DELTA_SEARCH = YesPlease CC = compat/vcbuild/scripts/clink.pl AR = compat/vcbuild/scripts/lib.pl @@ -1036,7 +1021,6 @@ ifneq (,$(findstring MINGW,$(uname_S))) NO_REGEX = YesPlease NO_PYTHON = YesPlease BLK_SHA1 = YesPlease - THREADED_DELTA_SEARCH = YesPlease COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/win32 COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" COMPAT_OBJS += compat/mingw.o compat/fnmatch/fnmatch.o compat/winansi.o \ @@ -1334,16 +1318,12 @@ ifdef RUNTIME_PREFIX endif ifdef NO_PTHREADS - THREADED_DELTA_SEARCH = BASIC_CFLAGS += -DNO_PTHREADS else EXTLIBS += $(PTHREAD_LIBS) -endif - -ifdef THREADED_DELTA_SEARCH - BASIC_CFLAGS += -DTHREADED_DELTA_SEARCH LIB_OBJS += thread-utils.o endif + ifdef DIR_HAS_BSD_GROUP_SEMANTICS COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS endif diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index b0887d759d..4a41547a27 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -17,7 +17,7 @@ #include "progress.h" #include "refs.h" -#ifdef THREADED_DELTA_SEARCH +#ifndef NO_PTHREADS #include "thread-utils.h" #include #endif @@ -1255,7 +1255,7 @@ static int delta_cacheable(unsigned long src_size, unsigned long trg_size, return 0; } -#ifdef THREADED_DELTA_SEARCH +#ifndef NO_PTHREADS static pthread_mutex_t read_mutex; #define read_lock() pthread_mutex_lock(&read_mutex) @@ -1380,7 +1380,7 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, /* * Handle memory allocation outside of the cache * accounting lock. Compiler will optimize the strangeness - * away when THREADED_DELTA_SEARCH is not defined. + * away when NO_PTHREADS is defined. */ free(trg_entry->delta_data); cache_lock(); @@ -1567,7 +1567,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, free(array); } -#ifdef THREADED_DELTA_SEARCH +#ifndef NO_PTHREADS /* * The main thread waits on the condition that (at least) one of the workers @@ -1899,7 +1899,7 @@ static int git_pack_config(const char *k, const char *v, void *cb) if (delta_search_threads < 0) die("invalid number of threads specified (%d)", delta_search_threads); -#ifndef THREADED_DELTA_SEARCH +#ifdef NO_PTHREADS if (delta_search_threads != 1) warning("no threads support, ignoring %s", k); #endif @@ -2227,7 +2227,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) delta_search_threads = strtoul(arg+10, &end, 0); if (!arg[10] || *end || delta_search_threads < 0) usage(pack_usage); -#ifndef THREADED_DELTA_SEARCH +#ifdef NO_PTHREADS if (delta_search_threads != 1) warning("no threads support, " "ignoring %s", arg); diff --git a/config.mak.in b/config.mak.in index 67b12f73a1..6008ac9f1b 100644 --- a/config.mak.in +++ b/config.mak.in @@ -56,5 +56,4 @@ NO_DEFLATE_BOUND=@NO_DEFLATE_BOUND@ FREAD_READS_DIRECTORIES=@FREAD_READS_DIRECTORIES@ SNPRINTF_RETURNS_BOGUS=@SNPRINTF_RETURNS_BOGUS@ NO_PTHREADS=@NO_PTHREADS@ -THREADED_DELTA_SEARCH=@THREADED_DELTA_SEARCH@ PTHREAD_LIBS=@PTHREAD_LIBS@ diff --git a/configure.ac b/configure.ac index 78345ebb60..229140e6be 100644 --- a/configure.ac +++ b/configure.ac @@ -762,10 +762,9 @@ AC_SUBST(NO_MKSTEMPS) # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link. # Enable it on Windows. By default, symrefs are still used. # -# Define NO_PTHREADS if we do not have pthreads +# Define NO_PTHREADS if we do not have pthreads. # -# Define PTHREAD_LIBS to the linker flag used for Pthread support and define -# THREADED_DELTA_SEARCH if Pthreads are available. +# Define PTHREAD_LIBS to the linker flag used for Pthread support. AC_DEFUN([PTHREADTEST_SRC], [ #include @@ -782,7 +781,6 @@ dnl [[pthread_mutex_t test_mutex;]] dnl )]) NO_PTHREADS=UnfortunatelyYes -THREADED_DELTA_SEARCH= PTHREAD_LIBS= if test -n "$USER_NOPTHREAD"; then @@ -798,7 +796,6 @@ elif test -z "$PTHREAD_CFLAGS"; then [AC_MSG_RESULT([yes]) NO_PTHREADS= PTHREAD_LIBS="$opt" - THREADED_DELTA_SEARCH=YesPlease break ], [AC_MSG_RESULT([no])]) @@ -812,7 +809,6 @@ else [AC_MSG_RESULT([yes]) NO_PTHREADS= PTHREAD_LIBS="$PTHREAD_CFLAGS" - THREADED_DELTA_SEARCH=YesPlease ], [AC_MSG_RESULT([no])]) @@ -823,7 +819,6 @@ CFLAGS="$old_CFLAGS" AC_SUBST(PTHREAD_LIBS) AC_SUBST(NO_PTHREADS) -AC_SUBST(THREADED_DELTA_SEARCH) ## Output files AC_CONFIG_FILES(["${config_file}":"${config_in}":"${config_append}"]) From c0da5db1e692c2bc74e5cdba67baf8762ac304b4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 31 Jan 2010 12:20:30 -0800 Subject: [PATCH 66/66] Update draft release notes to 1.7.0 Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.0.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Documentation/RelNotes-1.7.0.txt b/Documentation/RelNotes-1.7.0.txt index 7ed6a3af2e..6510d42abd 100644 --- a/Documentation/RelNotes-1.7.0.txt +++ b/Documentation/RelNotes-1.7.0.txt @@ -25,7 +25,7 @@ Notes on behaviour change configured that variable. * "git status" is not "git commit --dry-run" anymore. This change does - not affect you if you run the command without pathspec. + not affect you if you run the command without argument. * "git diff" traditionally treated various "ignore whitespace" options only as a way to filter the patch output. "git diff --exit-code -b" @@ -208,7 +208,6 @@ release, unless otherwise noted. -- exec >/var/tmp/1 -O=v1.7.0-rc0-48-gdace5dd -O=v1.7.0-rc0-67-gb10b918 +O=v1.7.0-rc1-6-g2ee8c5b echo O=$(git describe master) git shortlog --no-merges $O..master ^maint