Git development
 help / color / mirror / Atom feed
* Re: [PATCH] help.autocorrect: do not run a command if the command given is junk
From: Johannes Schindelin @ 2009-12-14 14:16 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: Junio C Hamano, Git Mailing List, Alex Riesen
In-Reply-To: <4B263797.5070808@viscovery.net>

Hi,

On Mon, 14 Dec 2009, Johannes Sixt wrote:

> From: Johannes Sixt <j6t@kdbg.org>
> 
> If a given command is not found, then help.c tries to guess which one the
> user could have meant. If help.autocorrect is 0 or unset, then a list of
> suggestions is given as long as the dissimilarity between the given command
> and the candidates is not excessively high. But if help.autocorrect was
> non-zero (i.e., a delay after which the command is run automatically), the
> latter restriction on dissimilarity was not obeyed.
> 
> In my case, this happened:
> 
>  $ git ..daab02
>  WARNING: You called a Git command named '..daab02', which does not exist.
>  Continuing under the assumption that you meant 'read-tree'
>  in 4.0 seconds automatically...
> 
> The similarity limit that this patch introduces is already used a few lines
> later where the list of suggested commands is printed.
> 
> Signed-off-by: Johannes Sixt <j6t@kdbg.org>
> ---

Obvious ACK from me.

^ permalink raw reply

* Re: [PATCH] help.autocorrect: do not run a command if the command  given is junk
From: Alex Riesen @ 2009-12-14 13:29 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: Junio C Hamano, Johannes Schindelin, Git Mailing List
In-Reply-To: <4B263797.5070808@viscovery.net>

On Mon, Dec 14, 2009 at 14:03, Johannes Sixt <j.sixt@viscovery.net> wrote:
> From: Johannes Sixt <j6t@kdbg.org>
>
> If a given command is not found, then help.c tries to guess which one the
> user could have meant. If help.autocorrect is 0 or unset, then a list of
> suggestions is given as long as the dissimilarity between the given command
> and the candidates is not excessively high. But if help.autocorrect was
> non-zero (i.e., a delay after which the command is run automatically), the
> latter restriction on dissimilarity was not obeyed.
>
> In my case, this happened:
>
>  $ git ..daab02
>  WARNING: You called a Git command named '..daab02', which does not exist.
>  Continuing under the assumption that you meant 'read-tree'
>  in 4.0 seconds automatically...
>
> The similarity limit that this patch introduces is already used a few lines
> later where the list of suggested commands is printed.

Yes, sure. We probably just missed that (I don't use autocorrect myself
apart from the testing. I assume Johannes doesn't, too)

^ permalink raw reply

* [PATCH 2/2] Update gitk-git Hungarian translation
From: Miklos Vajna @ 2009-12-14 13:12 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: Laszlo Papp, Junio C Hamano, git
In-Reply-To: <cover.1260796071.git.vmiklos@frugalware.org>

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
 gitk-git/po/hu.po |  770 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 458 insertions(+), 312 deletions(-)

diff --git a/gitk-git/po/hu.po b/gitk-git/po/hu.po
index 7a4bdca..1df212e 100755
--- a/gitk-git/po/hu.po
+++ b/gitk-git/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 <djszapi@archlinux.us>\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
+#: 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."
+msgstr ""
+"Nincsen fájl kiválasztva: --merge megadve, de egyetlen fájl sem unmerged."
 
-#: gitk:339
+#: 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 "<Home>\t\tMove to first commit"
 msgstr "<Pos1>\t\tElső commithoz"
 
-#: gitk:2686
+#: gitk:2815
 msgid "<End>\t\tMove to last commit"
 msgstr "<Ende>\t\tUtolsó commithoz"
 
-#: gitk:2687
+#: gitk:2816
 msgid "<Up>, p, i\tMove up one commit"
 msgstr "<Hoch>, p, i\tEgy committal feljebb"
 
-#: gitk:2688
+#: gitk:2817
 msgid "<Down>, n, k\tMove down one commit"
 msgstr "<Runter>, n, k\tEgy committal lejjebb"
 
-#: gitk:2689
+#: gitk:2818
 msgid "<Left>, z, j\tGo back in history list"
 msgstr "<Links>, z, j\tVissza a history listába"
 
-#: gitk:2690
+#: gitk:2819
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Rechts>, x, l\tElőre a history listába"
 
-#: gitk:2691
+#: gitk:2820
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<BildHoch>\tEgy lappal feljebb a commit listába"
 
-#: gitk:2692
+#: gitk:2821
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<BildRunter>\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 "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Umschalt-Hoch>\tKeresés visszafele (felfele, utolsó commitok)"
 
-#: gitk:2700
+#: gitk:2829
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Umschalt-Runter>\tKeresés előre (lefelé; korábbi commitok)"
 
-#: gitk:2701
+#: gitk:2830
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Entf>, b\t\tEgy lappal feljebb görgetés a diff nézetben"
 
-#: gitk:2702
+#: gitk:2831
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Löschtaste>\tEgy lappal feljebb görgetés a diff nézetben"
 
-#: gitk:2703
+#: gitk:2832
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Leertaste>\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 "<Return>\tMove to next find hit"
 msgstr "<Eingabetaste>\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 "<F5>\t\tUpdate"
 msgstr "<F5>\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
-msgid "Strictly sort by date"
-msgstr "Szigorú rendezás dátum alapján"
+#: gitk:3816
+msgid "All refs"
+msgstr "Minden ref"
 
-#: gitk:3678
-msgid "Mark branch sides"
-msgstr "Jelölje meg az ágakat"
+#: gitk:3817
+msgid "All (local) branches"
+msgstr "Minden (helyi) branch"
 
-#: gitk:3679
-msgid "Since date:"
+#: 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:3680
-msgid "Until date:"
+#: gitk:3831
+msgid "Until:"
 msgstr "Eddig:"
 
-#: gitk:3681
-msgid "Max count:"
-msgstr "Max. szám:"
+#: 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:3682
-msgid "Skip:"
-msgstr "Kihagy:"
+#: gitk:3834
+msgid "Number to skip:"
+msgstr "Kihagyandó szám:"
 
-#: gitk:3683
+#: 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:3837
+msgid "Mark branch sides"
+msgstr "Jelölje meg az ágakat"
+
+#: gitk:3838
 msgid "Limit to first parent"
 msgstr "Korlátozás az első szülőre"
 
-#: gitk:3684
+#: gitk:3839
+msgid "Simple history"
+msgstr "Egyszerű history"
+
+#: 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:3842
 msgid "Command to generate more commits to include:"
 msgstr "Parancs több tartalmazó commit generálására:"
 
-#: gitk:3780
+#: gitk:3964
 msgid "Gitk: edit view"
 msgstr "Gitk: szerkesztés nézet"
 
-#: gitk:3793
-msgid "Name"
-msgstr "Név"
+#: gitk:3972
+msgid "-- criteria for selecting revisions"
+msgstr "-- kritériumok a revíziók kiválasztásá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:3977
+msgid "View Name"
+msgstr "Nézet neve"
 
-#: gitk:3855
+#: 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."
-- 
1.6.5.2

^ permalink raw reply related

* [PATCH 0/2] gitk Hungarian translation updates
From: Miklos Vajna @ 2009-12-14 13:12 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: Laszlo Papp, Junio C Hamano, git
In-Reply-To: <20091214123057.GL25474@genesis.frugalware.org>

Hi,

These two patches are on top of Laszlo's initial translation.

The first patch is the patch from Junio, the best would be to squash it
in Laszlo's one.

The second patch updates the translation as there were numerous
untranslated and fuzzy strings.

Miklos Vajna (2):
  Fix up gitk-git Hungarian translation
  Update gitk-git Hungarian translation

 gitk-git/po/hu.po |  772 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 458 insertions(+), 314 deletions(-)

^ permalink raw reply

* [PATCH 1/2] Fix up gitk-git Hungarian translation
From: Miklos Vajna @ 2009-12-14 13:12 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: Laszlo Papp, Junio C Hamano, git
In-Reply-To: <cover.1260796071.git.vmiklos@frugalware.org>

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
 gitk-git/po/hu.po |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/gitk-git/po/hu.po b/gitk-git/po/hu.po
index d281e3c..7a4bdca 100755
--- a/gitk-git/po/hu.po
+++ b/gitk-git/po/hu.po
@@ -9,7 +9,7 @@ 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"
+"PO-Revision-Date: 2009-12-14 13:28+0100\n"
 "Last-Translator: Laszlo Papp <djszapi@archlinux.us>\n"
 "Language-Team: Hungarian\n"
 "MIME-Version: 1.0\n"
@@ -37,8 +37,7 @@ 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 "
+"Nincsen fájl kiválasztva: --merge megadva, de nincsenek unmerged fájlok a fájlon belül "
 "limit."
 
 #: gitk:361 gitk:508
@@ -662,8 +661,7 @@ 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"
+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"
-- 
1.6.5.2

^ permalink raw reply related

* Re: How can I get full filenames from Git difftool (for Microsoft Word “Compare Documents” feature)?
From: Jeff Epler @ 2009-12-14 13:11 UTC (permalink / raw)
  To: Doug Ireton; +Cc: git
In-Reply-To: <b507cb050912132225j1bdc39c2v42a3bf6bddf1cb1a@mail.gmail.com>

In the bash shell, you can convert a relative path to absolute by prepending
the directory name:
    mkabs () {
        case "$1" in
        /*) echo "$1" ;;
        *)  echo "$(pwd)/$1" ;;
        esac
    }

Using it at the shell prompt:
    $ mkabs example
    /home/jepler/example
    $ ls -l $(mkabs example)
    -rw-r--r-- 1 jepler jepler 0 2009-12-14 07:08 /home/jepler/example

If mac has a gnu-like readlink(1), then use 'readlink -f' instead of the
mkabs shell function:
    $ readlink -f example
    /home/jepler/example

You should be able to write a shell script which does the conversion
from relative to absolute using one of these patterns, and then invokes
the applescript.

It may turn out that there's a way to convert a path from relative to
absolute in applescript as well, but I wouldn't know it.

Jeff

^ permalink raw reply

* [PATCH] help.autocorrect: do not run a command if the command given is junk
From: Johannes Sixt @ 2009-12-14 13:03 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johannes Schindelin, Git Mailing List, Alex Riesen

From: Johannes Sixt <j6t@kdbg.org>

If a given command is not found, then help.c tries to guess which one the
user could have meant. If help.autocorrect is 0 or unset, then a list of
suggestions is given as long as the dissimilarity between the given command
and the candidates is not excessively high. But if help.autocorrect was
non-zero (i.e., a delay after which the command is run automatically), the
latter restriction on dissimilarity was not obeyed.

In my case, this happened:

 $ git ..daab02
 WARNING: You called a Git command named '..daab02', which does not exist.
 Continuing under the assumption that you meant 'read-tree'
 in 4.0 seconds automatically...

The similarity limit that this patch introduces is already used a few lines
later where the list of suggested commands is printed.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
 help.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/help.c b/help.c
index e8db31f..db888cf 100644
--- a/help.c
+++ b/help.c
@@ -331,7 +331,7 @@ const char *help_unknown_cmd(const char *cmd)
 	n = 1;
 	while (n < main_cmds.cnt && best_similarity == main_cmds.names[n]->len)
 		++n;
-	if (autocorrect && n == 1) {
+	if (autocorrect && n == 1 && best_similarity < 6) {
 		const char *assumed = main_cmds.names[0]->name;
 		main_cmds.names[0] = NULL;
 		clean_cmdnames(&main_cmds);
-- 
1.6.6.rc1.46.g1635

^ permalink raw reply related

* Re: [PATCH 2/2] Add gitk-git Hungarian translation
From: Miklos Vajna @ 2009-12-14 12:30 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Paul Mackerras, Laszlo Papp, Laszlo Papp, git
In-Reply-To: <7vskbejmrw.fsf@alter.siamese.dyndns.org>

[-- Attachment #1: Type: text/plain, Size: 524 bytes --]

On Sun, Dec 13, 2009 at 06:46:11PM -0800, Junio C Hamano <gitster@pobox.com> wrote:
> Now, I don't read _any_ Hungarian, so it could very well be that my fix-up
> is wrong and there shouldn't be any SP between two words in 'fájlon belül'
> and 'még nincsenek'; if we hear from some Hungarian capable readers that the
> fix-up below makes sense, perhaps squashing it in would be the easiest way
> to move forward?

Yeah, it make sense. Obviously Laszlo forgot to run 'make' in gitk-git
before sending the patch. ;-)

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply

* [PATCH 2/2] commit: correctly respect skip-worktree bit
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 11:43 UTC (permalink / raw)
  To: git, Junio C Hamano, Johannes Sixt; +Cc: Nguyễn Thái Ngọc Duy
In-Reply-To: <1260791039-12316-1-git-send-email-pclouds@gmail.com>

Commit b4d1690 (Teach Git to respect skip-worktree bit (reading part))
fails to make "git commit -- a b c" respect skip-worktree
(i.e. not committing paths that are skip-worktree). This is because
when the index is reset back to HEAD, all skip-worktree information is
gone.

This patch saves skip-worktree information in the string list of
committed paths, then reuse it later on to skip skip-worktree paths.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin-commit.c                 |   11 +++++++----
 t/t7011-skip-worktree-reading.sh |    4 ++--
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/builtin-commit.c b/builtin-commit.c
index a11e585..6e368f0 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -180,11 +180,15 @@ static int list_paths(struct string_list *list, const char *with_tree,
 
 	for (i = 0; i < active_nr; i++) {
 		struct cache_entry *ce = active_cache[i];
+		struct string_list_item *item;
+
 		if (ce->ce_flags & CE_UPDATE)
 			continue;
 		if (!match_pathspec(pattern, ce->name, ce_namelen(ce), 0, m))
 			continue;
-		string_list_insert(ce->name, list);
+		item = string_list_insert(ce->name, list);
+		if (ce_skip_worktree(ce))
+			item->util = item; /* better a valid pointer than a fake one */
 	}
 
 	return report_path_error(m, pattern, prefix ? strlen(prefix) : 0);
@@ -196,10 +200,9 @@ static void add_remove_files(struct string_list *list)
 	for (i = 0; i < list->nr; i++) {
 		struct stat st;
 		struct string_list_item *p = &(list->items[i]);
-		int pos = index_name_pos(&the_index, p->string, strlen(p->string));
-		struct cache_entry *ce = pos < 0 ? NULL : active_cache[pos];
 
-		if (ce && ce_skip_worktree(ce))
+		/* p->util is skip-worktree */
+		if (p->util)
 			continue;
 
 		if (!lstat(p->string, &st)) {
diff --git a/t/t7011-skip-worktree-reading.sh b/t/t7011-skip-worktree-reading.sh
index e996928..bb4066f 100755
--- a/t/t7011-skip-worktree-reading.sh
+++ b/t/t7011-skip-worktree-reading.sh
@@ -148,13 +148,13 @@ test_expect_success 'git-rm succeeds on skip-worktree absent entries' '
 	git rm 1
 '
 
-test_expect_failure 'commit on skip-worktree absent entries' '
+test_expect_success 'commit on skip-worktree absent entries' '
 	git reset &&
 	setup_absent &&
 	test_must_fail git commit -m null 1
 '
 
-test_expect_failure 'commit on skip-worktree dirty entries' '
+test_expect_success 'commit on skip-worktree dirty entries' '
 	git reset &&
 	setup_dirty &&
 	test_must_fail git commit -m null 1
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 1/2] ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 11:43 UTC (permalink / raw)
  To: git, Junio C Hamano, Johannes Sixt; +Cc: Nguyễn Thái Ngọc Duy

Previously CE_MATCH_IGNORE_VALID flag is used by both valid and
skip-worktree bits. While the two bits have similar behaviour, sharing
this flag means "git update-index --really-refresh" will ignore
skip-worktree while it should not. Instead another flag is
introduced to ignore skip-worktree bit, CE_MATCH_IGNORE_VALID only
applies to valid bit.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin-apply.c |    2 +-
 cache.h         |    4 +++-
 entry.c         |    2 +-
 read-cache.c    |   21 ++++++++++++++++++---
 unpack-trees.c  |    6 +++---
 5 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/builtin-apply.c b/builtin-apply.c
index 36e2f9d..541493e 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -2666,7 +2666,7 @@ static int verify_index_match(struct cache_entry *ce, struct stat *st)
 			return -1;
 		return 0;
 	}
-	return ce_match_stat(ce, st, CE_MATCH_IGNORE_VALID);
+	return ce_match_stat(ce, st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 }
 
 static int check_preimage(struct patch *patch, struct cache_entry **ce, struct stat *st)
diff --git a/cache.h b/cache.h
index 0e69384..1341475 100644
--- a/cache.h
+++ b/cache.h
@@ -469,7 +469,9 @@ extern int index_name_is_other(const struct index_state *, const char *, int);
 /* do stat comparison even if CE_VALID is true */
 #define CE_MATCH_IGNORE_VALID		01
 /* do not check the contents but report dirty on racily-clean entries */
-#define CE_MATCH_RACY_IS_DIRTY	02
+#define CE_MATCH_RACY_IS_DIRTY		02
+/* do stat comparison even if CE_SKIP_WORKTREE is true */
+#define CE_MATCH_IGNORE_SKIP_WORKTREE	04
 extern int ie_match_stat(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
 extern int ie_modified(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
 
diff --git a/entry.c b/entry.c
index 06d24f1..9d5b232 100644
--- a/entry.c
+++ b/entry.c
@@ -206,7 +206,7 @@ int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *t
 	len += ce_namelen(ce);
 
 	if (!check_path(path, len, &st, state->base_dir_len)) {
-		unsigned changed = ce_match_stat(ce, &st, CE_MATCH_IGNORE_VALID);
+		unsigned changed = ce_match_stat(ce, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 		if (!changed)
 			return 0;
 		if (!state->force) {
diff --git a/read-cache.c b/read-cache.c
index 7a2385b..b5c66f9 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -259,13 +259,18 @@ int ie_match_stat(const struct index_state *istate,
 {
 	unsigned int changed;
 	int ignore_valid = options & CE_MATCH_IGNORE_VALID;
+	int ignore_skip_worktree = options & CE_MATCH_IGNORE_SKIP_WORKTREE;
 	int assume_racy_is_modified = options & CE_MATCH_RACY_IS_DIRTY;
 
 	/*
 	 * If it's marked as always valid in the index, it's
 	 * valid whatever the checked-out copy says.
+	 *
+	 * skip-worktree has the same effect with higher precedence
 	 */
-	if (!ignore_valid && ((ce->ce_flags & CE_VALID) || ce_skip_worktree(ce)))
+	if (!ignore_skip_worktree && ce_skip_worktree(ce))
+		return 0;
+	if (!ignore_valid && (ce->ce_flags & CE_VALID))
 		return 0;
 
 	/*
@@ -564,7 +569,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
 	int size, namelen, was_same;
 	mode_t st_mode = st->st_mode;
 	struct cache_entry *ce, *alias;
-	unsigned ce_option = CE_MATCH_IGNORE_VALID|CE_MATCH_RACY_IS_DIRTY;
+	unsigned ce_option = CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE|CE_MATCH_RACY_IS_DIRTY;
 	int verbose = flags & (ADD_CACHE_VERBOSE | ADD_CACHE_PRETEND);
 	int pretend = flags & ADD_CACHE_PRETEND;
 	int intent_only = flags & ADD_CACHE_INTENT;
@@ -1000,11 +1005,21 @@ static struct cache_entry *refresh_cache_ent(struct index_state *istate,
 	struct cache_entry *updated;
 	int changed, size;
 	int ignore_valid = options & CE_MATCH_IGNORE_VALID;
+	int ignore_skip_worktree = options & CE_MATCH_IGNORE_SKIP_WORKTREE;
 
 	if (ce_uptodate(ce))
 		return ce;
 
-	if (!ignore_valid && ((ce->ce_flags & CE_VALID) || ce_skip_worktree(ce))) {
+	/*
+	 * CE_VALID or CE_SKIP_WORKTREE means the user promised us
+	 * that the change to the work tree does not matter and told
+	 * us not to worry.
+	 */
+	if (!ignore_skip_worktree && ce_skip_worktree(ce)) {
+		ce_mark_uptodate(ce);
+		return ce;
+	}
+	if (!ignore_valid && (ce->ce_flags & CE_VALID)) {
 		ce_mark_uptodate(ce);
 		return ce;
 	}
diff --git a/unpack-trees.c b/unpack-trees.c
index ae1de3f..7570475 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -569,7 +569,7 @@ static int verify_uptodate_1(struct cache_entry *ce,
 		return 0;
 
 	if (!lstat(ce->name, &st)) {
-		unsigned changed = ie_match_stat(o->src_index, ce, &st, CE_MATCH_IGNORE_VALID);
+		unsigned changed = ie_match_stat(o->src_index, ce, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 		if (!changed)
 			return 0;
 		/*
@@ -701,7 +701,7 @@ static int icase_exists(struct unpack_trees_options *o, struct cache_entry *dst,
 	struct cache_entry *src;
 
 	src = index_name_exists(o->src_index, dst->name, ce_namelen(dst), 1);
-	return src && !ie_match_stat(o->src_index, src, st, CE_MATCH_IGNORE_VALID);
+	return src && !ie_match_stat(o->src_index, src, st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 }
 
 /*
@@ -1152,7 +1152,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o)
 		if (o->reset && !ce_uptodate(old) && !ce_skip_worktree(old)) {
 			struct stat st;
 			if (lstat(old->name, &st) ||
-			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID))
+			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE))
 				update |= CE_UPDATE;
 		}
 		add_entry(o, old, update, 0);
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* RE: Undoing merges
From: Richard @ 2009-12-14 11:42 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git
In-Reply-To: <vpqpr6pqrvq.fsf@bauges.imag.fr>

Hi again Matt,

Thanks for the reply.

> > Hi git list,
> >
> > I'm trying to find out how to undo a merge.
> 
> When sitting on a merge commit,
> 
>   git reset --merge HEAD^
> 
> will undo this merge commit (i.e. pretend the merge has never
> occurred, at least in your branch). Don't do that if you already
> published this merge commit.

The problem that I'm far past the merge commit.

> > I know that my branches are independent and that I can just carry on
> > working on them and merge again later, but I'm just trying to keep
> > my revision graph tidier. Should I even be undoing merges?
> 
> If it's about cleaning up your history, "git rebase" is your friend,
> too (with the same limitation: don't do that on published history). By
> default, it does some kind of history flattening.

I had a look at the git-rebase man page and it showed to remove a commit
from the middle of a range of commits. I think as I am on longer on the
merge commit and cannot use "git reset --merge HEAD^", I can rebase all
the commits from the commit just after the merge onto the commit just
before the merge and that will remove the merge. Unfortunately I didn't
get a change to try that out so I don't know whether it will work or
not.

Richard

^ permalink raw reply

* Re: [BUG] Bad msysgit/egit interaction over dotfiles
From: Johannes Schindelin @ 2009-12-14 11:45 UTC (permalink / raw)
  To: Erik Faye-Lund; +Cc: Yann Dirson, Marius Storm-Olsen, Ferry Huberts, GIT ml
In-Reply-To: <40aa078e0912140113w23823058h4ca691963761d3be@mail.gmail.com>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2335 bytes --]

Hi,

On Mon, 14 Dec 2009, Erik Faye-Lund wrote:

> On Thu, Dec 10, 2009 at 9:35 AM, Yann Dirson <ydirson@linagora.com> wrote:
>
> > [discussion revolving around ".*" being marked hidden on Windows]
> >
> > But maybe the situation is not so clear.  That "hide dotfiles" was 
> > implemented so that ".git" at first, and then ".git*" files do not 
> > clutter the view of the project.  But then, if a git repo has other 
> > dotfiles, those are really *part of* the versionned stuff, so I do not 
> > see why those should be hidden at all.  After all, the .project, 
> > .classpath, and other eclipse project files have that name on windows 
> > too, and it will indeed *confuse* people to get them hidden.
> >
> > So should we have 2 classes of dotfiles, those "private to git", and
> > the others, one class being hidden while the others are not ?  I am
> > not sure at all this would be a good idea either.  Or maybe we should
> > only get .git hidden - after all, that one is the only real metadata
> > not part of the versionned stuff itself ?
> >
> > Maybe we should add some sort of "core.hidedotfiles = dotgitonly"
> > setting, and make that the default ?  That one does not appear to
> > cause any problems to jgit, and eclipse itself has not business with
> > it, so it would IMHO make sense.
> >
> > Opinions ?
> >
> 
> IF we were to go down this path, perhaps it would be even better to
> use some sort of file-pattern or even squeeze this into gitattributes?
> I guess something like ".* +hidden" should emulate the unix behaviour
> (given that we add a hidden attribute). I don't think we have a global
> gitattributes file though, so it'd have to be added to each repo where
> the effect is desired, I guess.

Actually, I think the original request was really for all the dot files, 
not just for .git.

But I can see the reasoning behind hiding only .git, which I would not 
like to make the default, though.  I would like to make Eclipse users set 
this explicitely in their /etc/gitconfig (possibly via the Git for Windows 
installer, just like the infamous -- and still broken -- core.autocrlf 
setting, if Sebastian is nice enough to make yet another page in the 
installer).

So: I would definitely take a patch implementing "core.hidedotfiles = 
dotgitonly", but would hesitate to make it the default.

Ciao,
Dscho

^ permalink raw reply

* Re: strange error while pushing
From: Sverre Rabbelier @ 2009-12-14 11:33 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: kusmabite, Jeff King, Git Mailing List
In-Reply-To: <alpine.DEB.1.00.0912141235090.4985@pacific.mpi-cbg.de>

Heya,

On Mon, Dec 14, 2009 at 12:35, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> Try removing "." from the PATH on Windows... to spare you some cycles: it
> is in PATH _implicitly_.  You cannot remove it from ".", even if you try
> hard.

It's an amazing OS, it's quirks keep surprising me day after day :).

-- 
Cheers,

Sverre Rabbelier

^ permalink raw reply

* Re: strange error while pushing
From: Johannes Schindelin @ 2009-12-14 11:35 UTC (permalink / raw)
  To: Sverre Rabbelier; +Cc: kusmabite, Jeff King, Git Mailing List
In-Reply-To: <fabb9a1e0912131601q71dcb4c4h2fafa03df14be3c1@mail.gmail.com>

Hi,

On Mon, 14 Dec 2009, Sverre Rabbelier wrote:

> On Mon, Dec 14, 2009 at 00:08, Erik Faye-Lund <kusmabite@googlemail.com> 
> wrote:
> > Simple, I was pushing git from a directory with a recent git-binary, 
> > when my *installed* git was v1.6.4
> 
> Isn't this the reason most people don't have "." in their PATH? :P

Try removing "." from the PATH on Windows... to spare you some cycles: it 
is in PATH _implicitly_.  You cannot remove it from ".", even if you try 
hard.

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 00/23] nd/sparse reroll
From: Nguyen Thai Ngoc Duy @ 2009-12-14 11:11 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: Junio C Hamano, git
In-Reply-To: <4B261CF0.8090102@viscovery.net>

2009/12/14 Johannes Sixt <j.sixt@viscovery.net>:
> Nguyễn Thái Ngọc Duy schrieb:
>> Compared to the current series in pu, ...
>
> Obviously, you didn't notice that the series is already in next, which
> means that you should have made incremental patches on top of bbbe508d77.

Argh.. sorry I did not catch up with git@vger lately. Will resend.
-- 
Duy

^ permalink raw reply

* Re: [PATCH 00/23] nd/sparse reroll
From: Johannes Sixt @ 2009-12-14 11:09 UTC (permalink / raw)
  To: Nguyễn Thái Ngọc Duy; +Cc: Junio C Hamano, git
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

Nguyễn Thái Ngọc Duy schrieb:
> Compared to the current series in pu, ...

Obviously, you didn't notice that the series is already in next, which
means that you should have made incremental patches on top of bbbe508d77.

-- Hannes

^ permalink raw reply

* [PATCH 02/23] Add test-index-version
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:30 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

Commit 06aaaa0bf70fe37d198893f4e25fa73b6516f8a9 may step index format
version up and down, depends on whether extended flags present in the
index. This adds a test to check for index format version.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 .gitignore           |    1 +
 Makefile             |    1 +
 test-index-version.c |   14 ++++++++++++++
 3 files changed, 16 insertions(+), 0 deletions(-)
 create mode 100644 test-index-version.c

diff --git a/.gitignore b/.gitignore
index 41c0b20..e3a864c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -153,6 +153,7 @@ test-date
 test-delta
 test-dump-cache-tree
 test-genrandom
+test-index-version
 test-match-trees
 test-parse-options
 test-path-utils
diff --git a/Makefile b/Makefile
index daf4296..3c5b890 100644
--- a/Makefile
+++ b/Makefile
@@ -1580,6 +1580,7 @@ TEST_PROGRAMS += test-parse-options$X
 TEST_PROGRAMS += test-path-utils$X
 TEST_PROGRAMS += test-sha1$X
 TEST_PROGRAMS += test-sigchain$X
+TEST_PROGRAMS += test-index-version$X
 
 all:: $(TEST_PROGRAMS)
 
diff --git a/test-index-version.c b/test-index-version.c
new file mode 100644
index 0000000..bfaad9e
--- /dev/null
+++ b/test-index-version.c
@@ -0,0 +1,14 @@
+#include "cache.h"
+
+int main(int argc, const char **argv)
+{
+	struct cache_header hdr;
+	int version;
+
+	memset(&hdr,0,sizeof(hdr));
+	if (read(0, &hdr, sizeof(hdr)) != sizeof(hdr))
+		return 0;
+	version = ntohl(hdr.hdr_version);
+	printf("%d\n", version);
+	return 0;
+}
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 01/23] update-index: refactor mark_valid() in preparation for new options
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:30 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-update-index.c |   24 ++++++++++--------------
 1 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/builtin-update-index.c b/builtin-update-index.c
index 92beaaf..f1b6c8e 100644
--- a/builtin-update-index.c
+++ b/builtin-update-index.c
@@ -24,8 +24,8 @@ static int info_only;
 static int force_remove;
 static int verbose;
 static int mark_valid_only;
-#define MARK_VALID 1
-#define UNMARK_VALID 2
+#define MARK_FLAG 1
+#define UNMARK_FLAG 2
 
 static void report(const char *fmt, ...)
 {
@@ -40,19 +40,15 @@ static void report(const char *fmt, ...)
 	va_end(vp);
 }
 
-static int mark_valid(const char *path)
+static int mark_ce_flags(const char *path, int flag, int mark)
 {
 	int namelen = strlen(path);
 	int pos = cache_name_pos(path, namelen);
 	if (0 <= pos) {
-		switch (mark_valid_only) {
-		case MARK_VALID:
-			active_cache[pos]->ce_flags |= CE_VALID;
-			break;
-		case UNMARK_VALID:
-			active_cache[pos]->ce_flags &= ~CE_VALID;
-			break;
-		}
+		if (mark)
+			active_cache[pos]->ce_flags |= flag;
+		else
+			active_cache[pos]->ce_flags &= ~flag;
 		cache_tree_invalidate_path(active_cache_tree, path);
 		active_cache_changed = 1;
 		return 0;
@@ -276,7 +272,7 @@ static void update_one(const char *path, const char *prefix, int prefix_length)
 		goto free_return;
 	}
 	if (mark_valid_only) {
-		if (mark_valid(p))
+		if (mark_ce_flags(p, CE_VALID, mark_valid_only == MARK_FLAG))
 			die("Unable to mark file %s", path);
 		goto free_return;
 	}
@@ -647,11 +643,11 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 				continue;
 			}
 			if (!strcmp(path, "--assume-unchanged")) {
-				mark_valid_only = MARK_VALID;
+				mark_valid_only = MARK_FLAG;
 				continue;
 			}
 			if (!strcmp(path, "--no-assume-unchanged")) {
-				mark_valid_only = UNMARK_VALID;
+				mark_valid_only = UNMARK_FLAG;
 				continue;
 			}
 			if (!strcmp(path, "--info-only")) {
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 04/23] update-index: ignore update request if it's skip-worktree
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:30 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin-apply.c |    2 +-
 cache.h         |    2 ++
 entry.c         |    2 +-
 read-cache.c    |   17 ++++++++++++++---
 unpack-trees.c  |    6 +++---
 5 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/builtin-apply.c b/builtin-apply.c
index 39dc96a..7717a66 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -2505,7 +2505,7 @@ static int verify_index_match(struct cache_entry *ce, struct stat *st)
 			return -1;
 		return 0;
 	}
-	return ce_match_stat(ce, st, CE_MATCH_IGNORE_VALID);
+	return ce_match_stat(ce, st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 }
 
 static int check_preimage(struct patch *patch, struct cache_entry **ce, struct stat *st)
diff --git a/cache.h b/cache.h
index f266246..f040f24 100644
--- a/cache.h
+++ b/cache.h
@@ -462,6 +462,8 @@ extern int index_name_is_other(const struct index_state *, const char *, int);
 #define CE_MATCH_IGNORE_VALID		01
 /* do not check the contents but report dirty on racily-clean entries */
 #define CE_MATCH_RACY_IS_DIRTY	02
+/* do stat comparison even if CE_SKIP_WORKTREE is true */
+#define CE_MATCH_IGNORE_SKIP_WORKTREE		04
 extern int ie_match_stat(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
 extern int ie_modified(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
 
diff --git a/entry.c b/entry.c
index f276cf3..efee21f 100644
--- a/entry.c
+++ b/entry.c
@@ -202,7 +202,7 @@ int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *t
 	len += ce_namelen(ce);
 
 	if (!check_path(path, len, &st)) {
-		unsigned changed = ce_match_stat(ce, &st, CE_MATCH_IGNORE_VALID);
+		unsigned changed = ce_match_stat(ce, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 		if (!changed)
 			return 0;
 		if (!state->force) {
diff --git a/read-cache.c b/read-cache.c
index 4e3e272..b31861c 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -259,12 +259,17 @@ int ie_match_stat(const struct index_state *istate,
 {
 	unsigned int changed;
 	int ignore_valid = options & CE_MATCH_IGNORE_VALID;
+	int ignore_skip_worktree = options & CE_MATCH_IGNORE_SKIP_WORKTREE;
 	int assume_racy_is_modified = options & CE_MATCH_RACY_IS_DIRTY;
 
 	/*
 	 * If it's marked as always valid in the index, it's
 	 * valid whatever the checked-out copy says.
+	 *
+	 * skip-worktree has the same effect with higher precedence
 	 */
+	if (!ignore_skip_worktree && ce_skip_worktree(ce))
+		return 0;
 	if (!ignore_valid && (ce->ce_flags & CE_VALID))
 		return 0;
 
@@ -564,7 +569,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
 	int size, namelen, was_same;
 	mode_t st_mode = st->st_mode;
 	struct cache_entry *ce, *alias;
-	unsigned ce_option = CE_MATCH_IGNORE_VALID|CE_MATCH_RACY_IS_DIRTY;
+	unsigned ce_option = CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE|CE_MATCH_RACY_IS_DIRTY;
 	int verbose = flags & (ADD_CACHE_VERBOSE | ADD_CACHE_PRETEND);
 	int pretend = flags & ADD_CACHE_PRETEND;
 	int intent_only = flags & ADD_CACHE_INTENT;
@@ -1000,14 +1005,20 @@ static struct cache_entry *refresh_cache_ent(struct index_state *istate,
 	struct cache_entry *updated;
 	int changed, size;
 	int ignore_valid = options & CE_MATCH_IGNORE_VALID;
+	int ignore_skip_worktree = options & CE_MATCH_IGNORE_SKIP_WORKTREE;
 
 	if (ce_uptodate(ce))
 		return ce;
 
 	/*
-	 * CE_VALID means the user promised us that the change to
-	 * the work tree does not matter and told us not to worry.
+	 * CE_VALID or CE_SKIP_WORKTREE means the user promised us
+	 * that the change to the work tree does not matter and told
+	 * us not to worry.
 	 */
+	if (!ignore_skip_worktree && ce_skip_worktree(ce)) {
+		ce_mark_uptodate(ce);
+		return ce;
+	}
 	if (!ignore_valid && (ce->ce_flags & CE_VALID)) {
 		ce_mark_uptodate(ce);
 		return ce;
diff --git a/unpack-trees.c b/unpack-trees.c
index 720f7a1..4870da9 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -454,7 +454,7 @@ static int verify_uptodate(struct cache_entry *ce,
 		return 0;
 
 	if (!lstat(ce->name, &st)) {
-		unsigned changed = ie_match_stat(o->src_index, ce, &st, CE_MATCH_IGNORE_VALID);
+		unsigned changed = ie_match_stat(o->src_index, ce, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 		if (!changed)
 			return 0;
 		/*
@@ -572,7 +572,7 @@ static int icase_exists(struct unpack_trees_options *o, struct cache_entry *dst,
 	struct cache_entry *src;
 
 	src = index_name_exists(o->src_index, dst->name, ce_namelen(dst), 1);
-	return src && !ie_match_stat(o->src_index, src, st, CE_MATCH_IGNORE_VALID);
+	return src && !ie_match_stat(o->src_index, src, st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE);
 }
 
 /*
@@ -1007,7 +1007,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o)
 		if (o->reset && !ce_uptodate(old)) {
 			struct stat st;
 			if (lstat(old->name, &st) ||
-			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID))
+			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE))
 				update |= CE_UPDATE;
 		}
 		add_entry(o, old, update, 0);
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 06/23] Teach diff machinery to respect skip-worktree bit
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:30 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff-lib.c                       |    5 +++--
 diff.c                           |    2 +-
 t/t7011-skip-worktree-reading.sh |   23 +++++++++++++++++++++++
 3 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/diff-lib.c b/diff-lib.c
index 22da66e..b0b379d 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -159,7 +159,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
 				continue;
 		}
 
-		if (ce_uptodate(ce))
+		if (ce_uptodate(ce) || ce_skip_worktree(ce))
 			continue;
 
 		/* If CE_VALID is set, don't look at workdir for file removal */
@@ -339,7 +339,8 @@ static void do_oneway_diff(struct unpack_trees_options *o,
 	int match_missing, cached;
 
 	/* if the entry is not checked out, don't examine work tree */
-	cached = o->index_only || (idx && (idx->ce_flags & CE_VALID));
+	cached = o->index_only ||
+		(idx && ((idx->ce_flags & CE_VALID) || ce_skip_worktree(idx)));
 	/*
 	 * Backward compatibility wart - "diff-index -m" does
 	 * not mean "do not ignore merges", but "match_missing".
diff --git a/diff.c b/diff.c
index cd35e0c..3970df4 100644
--- a/diff.c
+++ b/diff.c
@@ -1805,7 +1805,7 @@ static int reuse_worktree_file(const char *name, const unsigned char *sha1, int
 	 * If ce is marked as "assume unchanged", there is no
 	 * guarantee that work tree matches what we are looking for.
 	 */
-	if (ce->ce_flags & CE_VALID)
+	if ((ce->ce_flags & CE_VALID) || ce_skip_worktree(ce))
 		return 0;
 
 	/*
diff --git a/t/t7011-skip-worktree-reading.sh b/t/t7011-skip-worktree-reading.sh
index ede3ee1..5db93d0 100755
--- a/t/t7011-skip-worktree-reading.sh
+++ b/t/t7011-skip-worktree-reading.sh
@@ -111,4 +111,27 @@ test_expect_success 'ls-files --modified' '
 	test -z "$(git ls-files -m)"
 '
 
+echo ":000000 100644 $ZERO_SHA1 $NULL_SHA1 A	1" > expected
+test_expect_success 'diff-index does not examine skip-worktree absent entries' '
+	setup_absent &&
+	git diff-index HEAD -- 1 > result &&
+	test_cmp expected result
+'
+
+test_expect_success 'diff-index does not examine skip-worktree dirty entries' '
+	setup_dirty &&
+	git diff-index HEAD -- 1 > result &&
+	test_cmp expected result
+'
+
+test_expect_success 'diff-files does not examine skip-worktree absent entries' '
+	setup_absent &&
+	test -z "$(git diff-files -- one)"
+'
+
+test_expect_success 'diff-files does not examine skip-worktree dirty entries' '
+	setup_dirty &&
+	test -z "$(git diff-files -- one)"
+'
+
 test_done
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 20/23] unpack-trees(): ignore worktree check outside checkout area
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:31 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

verify_absent() and verify_uptodate() are used to ensure worktree
is safe to be updated, then CE_REMOVE or CE_UPDATE will be set.
Finally check_updates() bases on CE_REMOVE, CE_UPDATE and the
recently added CE_WT_REMOVE to update working directory accordingly.

The entries that are checked may eventually be left out of checkout
area (done later in apply_sparse_checkout()). We don't want to update
outside checkout area. This patch teaches Git to assume "good",
skip these checks when it's sure those entries will be outside checkout
area, and clear CE_REMOVE|CE_UPDATE that could be set due to this
assumption.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 unpack-trees.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 6288385..aac9922 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -505,6 +505,14 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 				ret = -1;
 				goto done;
 			}
+			/*
+			 * Merge strategies may set CE_UPDATE|CE_REMOVE outside checkout
+			 * area as a result of ce_skip_worktree() shortcuts in
+			 * verify_absent() and verify_uptodate(). Clear them.
+			 */
+			if (ce_skip_worktree(ce))
+				ce->ce_flags &= ~(CE_UPDATE | CE_REMOVE);
+
 		}
 	}
 
@@ -577,6 +585,8 @@ static int verify_uptodate_1(struct cache_entry *ce,
 static int verify_uptodate(struct cache_entry *ce,
 			   struct unpack_trees_options *o)
 {
+	if (!o->skip_sparse_checkout && will_have_skip_worktree(ce, o))
+		return 0;
 	return verify_uptodate_1(ce, o, ERRORMSG(o, not_uptodate_file));
 }
 
@@ -776,6 +786,8 @@ static int verify_absent_1(struct cache_entry *ce, const char *action,
 static int verify_absent(struct cache_entry *ce, const char *action,
 			 struct unpack_trees_options *o)
 {
+	if (!o->skip_sparse_checkout && will_have_skip_worktree(ce, o))
+		return 0;
 	return verify_absent_1(ce, action, o, ERRORMSG(o, would_lose_untracked));
 }
 
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 23/23] sparse checkout: inhibit empty worktree
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:31 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

The way sparse checkout works, users may empty their worktree
completely, because of non-matching sparse-checkout spec, or empty
spec. I believe this is not desired. This patch makes Git refuse to
produce such worktree.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t1011-read-tree-sparse-checkout.sh |   10 +++-------
 unpack-trees.c                       |    7 +++++++
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/t/t1011-read-tree-sparse-checkout.sh b/t/t1011-read-tree-sparse-checkout.sh
index 2192f5a..62246db 100755
--- a/t/t1011-read-tree-sparse-checkout.sh
+++ b/t/t1011-read-tree-sparse-checkout.sh
@@ -55,20 +55,16 @@ test_expect_success 'read-tree --no-sparse-checkout with empty .git/info/sparse-
 	test -f sub/added
 '
 
-cat >expected.swt <<EOF
-S init.t
-S sub/added
-EOF
 test_expect_success 'read-tree with empty .git/info/sparse-checkout' '
 	git config core.sparsecheckout true &&
 	echo > .git/info/sparse-checkout &&
-	git read-tree -m -u HEAD &&
+	test_must_fail git read-tree -m -u HEAD &&
 	git ls-files --stage > result &&
 	test_cmp expected result &&
 	git ls-files -t > result &&
 	test_cmp expected.swt result &&
-	test ! -f init.t &&
-	test ! -f sub/added
+	test -f init.t &&
+	test -f sub/added
 '
 
 cat >expected.swt <<EOF
diff --git a/unpack-trees.c b/unpack-trees.c
index aac9922..d33b39e 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -498,6 +498,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 	}
 
 	if (!o->skip_sparse_checkout) {
+		int empty_worktree = 1;
 		for (i = 0;i < o->result.cache_nr;i++) {
 			struct cache_entry *ce = o->result.cache[i];
 
@@ -512,8 +513,14 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 			 */
 			if (ce_skip_worktree(ce))
 				ce->ce_flags &= ~(CE_UPDATE | CE_REMOVE);
+			else
+				empty_worktree = 0;
 
 		}
+		if (o->result.cache_nr && empty_worktree) {
+			ret = unpack_failed(o, "Sparse checkout leaves no entry on working directory");
+			goto done;
+		}
 	}
 
 	o->src_index = NULL;
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 22/23] Add tests for sparse checkout
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:31 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t1011-read-tree-sparse-checkout.sh |  154 ++++++++++++++++++++++++++++++++++
 1 files changed, 154 insertions(+), 0 deletions(-)
 create mode 100755 t/t1011-read-tree-sparse-checkout.sh

diff --git a/t/t1011-read-tree-sparse-checkout.sh b/t/t1011-read-tree-sparse-checkout.sh
new file mode 100755
index 0000000..2192f5a
--- /dev/null
+++ b/t/t1011-read-tree-sparse-checkout.sh
@@ -0,0 +1,154 @@
+#!/bin/sh
+
+test_description='sparse checkout tests'
+
+. ./test-lib.sh
+
+cat >expected <<EOF
+100644 77f0ba1734ed79d12881f81b36ee134de6a3327b 0	init.t
+100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0	sub/added
+EOF
+test_expect_success 'setup' '
+	test_commit init &&
+	echo modified >> init.t &&
+	mkdir sub &&
+	touch sub/added &&
+	git add init.t sub/added &&
+	git commit -m "modified and added" &&
+	git tag top &&
+	git rm sub/added &&
+	git commit -m removed &&
+	git tag removed &&
+	git checkout top &&
+	git ls-files --stage > result &&
+	test_cmp expected result
+'
+
+cat >expected.swt <<EOF
+H init.t
+H sub/added
+EOF
+test_expect_success 'read-tree without .git/info/sparse-checkout' '
+	git read-tree -m -u HEAD &&
+	git ls-files --stage > result &&
+	test_cmp expected result &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result
+'
+
+test_expect_success 'read-tree with .git/info/sparse-checkout but disabled' '
+	echo > .git/info/sparse-checkout
+	git read-tree -m -u HEAD &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result &&
+	test -f init.t &&
+	test -f sub/added
+'
+
+test_expect_success 'read-tree --no-sparse-checkout with empty .git/info/sparse-checkout and enabled' '
+	git config core.sparsecheckout true &&
+	echo > .git/info/sparse-checkout &&
+	git read-tree --no-sparse-checkout -m -u HEAD &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result &&
+	test -f init.t &&
+	test -f sub/added
+'
+
+cat >expected.swt <<EOF
+S init.t
+S sub/added
+EOF
+test_expect_success 'read-tree with empty .git/info/sparse-checkout' '
+	git config core.sparsecheckout true &&
+	echo > .git/info/sparse-checkout &&
+	git read-tree -m -u HEAD &&
+	git ls-files --stage > result &&
+	test_cmp expected result &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result &&
+	test ! -f init.t &&
+	test ! -f sub/added
+'
+
+cat >expected.swt <<EOF
+S init.t
+H sub/added
+EOF
+test_expect_success 'match directories with trailing slash' '
+	echo sub/ > .git/info/sparse-checkout &&
+	git read-tree -m -u HEAD &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result &&
+	test ! -f init.t &&
+	test -f sub/added
+'
+
+cat >expected.swt <<EOF
+H init.t
+H sub/added
+EOF
+test_expect_failure 'match directories without trailing slash' '
+	echo init.t > .git/info/sparse-checkout &&
+	echo sub >> .git/info/sparse-checkout &&
+	git read-tree -m -u HEAD &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result &&
+	test ! -f init.t &&
+	test -f sub/added
+'
+
+cat >expected.swt <<EOF
+H init.t
+S sub/added
+EOF
+test_expect_success 'checkout area changes' '
+	echo init.t > .git/info/sparse-checkout &&
+	git read-tree -m -u HEAD &&
+	git ls-files -t > result &&
+	test_cmp expected.swt result &&
+	test -f init.t &&
+	test ! -f sub/added
+'
+
+test_expect_success 'read-tree updates worktree, absent case' '
+	echo sub/added > .git/info/sparse-checkout &&
+	git checkout -f top &&
+	git read-tree -m -u HEAD^ &&
+	test ! -f init.t
+'
+
+test_expect_success 'read-tree updates worktree, dirty case' '
+	echo sub/added > .git/info/sparse-checkout &&
+	git checkout -f top &&
+	echo dirty > init.t &&
+	git read-tree -m -u HEAD^ &&
+	grep -q dirty init.t &&
+	rm init.t
+'
+
+test_expect_success 'read-tree removes worktree, dirty case' '
+	echo init.t > .git/info/sparse-checkout &&
+	git checkout -f top &&
+	echo dirty > added &&
+	git read-tree -m -u HEAD^ &&
+	grep -q dirty added
+'
+
+test_expect_success 'read-tree adds to worktree, absent case' '
+	echo init.t > .git/info/sparse-checkout &&
+	git checkout -f removed &&
+	git read-tree -u -m HEAD^ &&
+	test ! -f sub/added
+'
+
+test_expect_success 'read-tree adds to worktree, dirty case' '
+	echo init.t > .git/info/sparse-checkout &&
+	git checkout -f removed &&
+	mkdir sub &&
+	echo dirty > sub/added &&
+	git read-tree -u -m HEAD^ &&
+	grep -q dirty sub/added
+'
+
+test_done
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 21/23] read-tree: add --no-sparse-checkout to disable sparse checkout support
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:31 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Documentation/git-read-tree.txt |    6 +++++-
 builtin-read-tree.c             |    4 +++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index fc3f08b..ea7b0b2 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -10,7 +10,7 @@ SYNOPSIS
 --------
 'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
 		[-u [--exclude-per-directory=<gitignore>] | -i]]
-		[--index-output=<file>]
+		[--index-output=<file>] [--no-sparse-checkout]
 		<tree-ish1> [<tree-ish2> [<tree-ish3>]]
 
 
@@ -110,6 +110,10 @@ OPTIONS
 	directories the index file and index output file are
 	located in.
 
+--no-sparse-checkout::
+	Disable sparse checkout support even if `core.sparseCheckout`
+	is true.
+
 <tree-ish#>::
 	The id of the tree object(s) to be read/merged.
 
diff --git a/builtin-read-tree.c b/builtin-read-tree.c
index 9c2d634..f5acb1a 100644
--- a/builtin-read-tree.c
+++ b/builtin-read-tree.c
@@ -31,7 +31,7 @@ static int list_tree(unsigned char *sha1)
 }
 
 static const char * const read_tree_usage[] = {
-	"git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] [-u [--exclude-per-directory=<gitignore>] | -i]]  [--index-output=<file>] <tree-ish1> [<tree-ish2> [<tree-ish3>]]",
+	"git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-output=<file>] <tree-ish1> [<tree-ish2> [<tree-ish3>]]",
 	NULL
 };
 
@@ -98,6 +98,8 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
 		  PARSE_OPT_NONEG, exclude_per_directory_cb },
 		OPT_SET_INT('i', NULL, &opts.index_only,
 			    "don't check the working tree after merging", 1),
+		OPT_SET_INT(0, "no-sparse-checkout", &opts.skip_sparse_checkout,
+			    "skip applying sparse checkout filter", 1),
 		OPT_END()
 	};
 
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related

* [PATCH 17/23] unpack-trees.c: generalize verify_* functions
From: Nguyễn Thái Ngọc Duy @ 2009-12-14 10:31 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Nguyễn Thái Ngọc Duy, Junio C Hamano
In-Reply-To: <1260786666-8405-1-git-send-email-pclouds@gmail.com>

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 unpack-trees.c |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index eb1a818..5467265 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -452,8 +452,9 @@ static int same(struct cache_entry *a, struct cache_entry *b)
  * When a CE gets turned into an unmerged entry, we
  * want it to be up-to-date
  */
-static int verify_uptodate(struct cache_entry *ce,
-		struct unpack_trees_options *o)
+static int verify_uptodate_1(struct cache_entry *ce,
+				   struct unpack_trees_options *o,
+				   const char *error_msg)
 {
 	struct stat st;
 
@@ -478,7 +479,13 @@ static int verify_uptodate(struct cache_entry *ce,
 	if (errno == ENOENT)
 		return 0;
 	return o->gently ? -1 :
-		error(ERRORMSG(o, not_uptodate_file), ce->name);
+		error(error_msg, ce->name);
+}
+
+static int verify_uptodate(struct cache_entry *ce,
+			   struct unpack_trees_options *o)
+{
+	return verify_uptodate_1(ce, o, ERRORMSG(o, not_uptodate_file));
 }
 
 static void invalidate_ce_path(struct cache_entry *ce, struct unpack_trees_options *o)
@@ -586,8 +593,9 @@ static int icase_exists(struct unpack_trees_options *o, struct cache_entry *dst,
  * We do not want to remove or overwrite a working tree file that
  * is not tracked, unless it is ignored.
  */
-static int verify_absent(struct cache_entry *ce, const char *action,
-			 struct unpack_trees_options *o)
+static int verify_absent_1(struct cache_entry *ce, const char *action,
+				 struct unpack_trees_options *o,
+				 const char *error_msg)
 {
 	struct stat st;
 
@@ -667,6 +675,11 @@ static int verify_absent(struct cache_entry *ce, const char *action,
 	}
 	return 0;
 }
+static int verify_absent(struct cache_entry *ce, const char *action,
+			 struct unpack_trees_options *o)
+{
+	return verify_absent_1(ce, action, o, ERRORMSG(o, would_lose_untracked));
+}
 
 static int merged_entry(struct cache_entry *merge, struct cache_entry *old,
 		struct unpack_trees_options *o)
-- 
1.6.5.2.216.g9c1ec

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox