Git development
 help / color / mirror / Atom feed
* [PATCH v2] gitk: Update swedish translation.
From: Mikael Magnusson @ 2008-09-25 12:17 UTC (permalink / raw)
  To: Peter Krefting; +Cc: Paul Mackerras, Git Mailing List
In-Reply-To: <Pine.LNX.4.64.0809251247450.5683@ds9.cixit.se>

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

Signed-off-by: Mikael Magnusson <mikachu@gmail.com>

---
This should be incorporating all the changes we discussed.

 po/sv.po |  462 +++++++++++++++++++++++++++++++++----------------------------
 1 files changed, 250 insertions(+), 212 deletions(-)

diff --git a/po/sv.po b/po/sv.po
index e1ecfb7..50a508e 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sv\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-03 18:58+0200\n"
+"POT-Creation-Date: 2008-09-24 08:23+0200\n"
-"PO-Revision-Date: 2008-08-03 19:03+0200\n"
+"PO-Revision-Date: 2008-09-25 14:15+0200\n"
 "Last-Translator: Mikael Magnusson <mikachu@gmail.com>\n"
 "Language-Team: Swedish <sv@li.org>\n"
@@ -16,17 +16,25 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"

-#: gitk:102
+#: gitk:113
 msgid "Couldn't get list of unmerged files:"
 msgstr "Kunde inta hämta lista över ej sammanslagna filer:"

-#: gitk:329
+#: gitk:272
+msgid "Error parsing revisions:"
+msgstr "Fel vid tolkning av revisioner:"
+
+#: gitk:327
+msgid "Error executing --argscmd command:"
+msgstr "Fel vid körning av --argscmd-kommandot:"
+
+#: gitk:340
 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:332
+#: gitk:343
 msgid ""
 "No files selected: --merge specified but no unmerged files are within file "
 "limit."
@@ -34,257 +42,261 @@ msgstr ""
 "Inga filer valdes: --merge angavs men det finns inga filer inom "
 "filbegränsningen."

-#: gitk:354
+#: gitk:365 gitk:503
 msgid "Error executing git log:"
 msgstr "Fel vid körning av git log:"

-#: gitk:369
+#: gitk:378
 msgid "Reading"
 msgstr "Läser"

-#: gitk:400 gitk:3356
+#: gitk:438 gitk:3433
 msgid "Reading commits..."
 msgstr "Läser incheckningar..."

-#: gitk:403 gitk:1480 gitk:3359
+#: gitk:441 gitk:1528 gitk:3436
 msgid "No commits selected"
 msgstr "Inga incheckningar markerade"

-#: gitk:1358
+#: gitk:1399
 msgid "Can't parse git log output:"
 msgstr "Kan inte tolka utdata från git log:"

-#: gitk:1557
+#: gitk:1605
 msgid "No commit information available"
 msgstr "Ingen incheckningsinformation är tillgänglig"

-#: gitk:1654 gitk:1676 gitk:3150 gitk:7620 gitk:9149 gitk:9317
+#: gitk:1709 gitk:1731 gitk:3230 gitk:7701 gitk:9230 gitk:9398
 msgid "OK"
 msgstr "OK"

-#: gitk:1678 gitk:3151 gitk:7296 gitk:7367 gitk:7470 gitk:7516 gitk:7622
-#: gitk:9150 gitk:9318
+#: gitk:1733 gitk:3231 gitk:7377 gitk:7448 gitk:7551 gitk:7597 gitk:7703
+#: gitk:9231 gitk:9399
 msgid "Cancel"
 msgstr "Avbryt"

-#: gitk:1716
+#: gitk:1771
 msgid "File"
 msgstr "Arkiv"

-#: gitk:1718
+#: gitk:1773
 msgid "Update"
 msgstr "Uppdatera"

-#: gitk:1719
+#: gitk:1774
 msgid "Reload"
 msgstr "Ladda om"

-#: gitk:1720
+#: gitk:1775
 msgid "Reread references"
 msgstr "Läs om referenser"

-#: gitk:1721
+#: gitk:1776
 msgid "List references"
 msgstr "Visa referenser"

-#: gitk:1722
+#: gitk:1777
 msgid "Quit"
 msgstr "Avsluta"

-#: gitk:1724
+#: gitk:1779
 msgid "Edit"
 msgstr "Redigera"

-#: gitk:1725
+#: gitk:1780
 msgid "Preferences"
 msgstr "Inställningar"

-#: gitk:1728 gitk:3087
+#: gitk:1783 gitk:3167
 msgid "View"
 msgstr "Visa"

-#: gitk:1729
+#: gitk:1784
 msgid "New view..."
 msgstr "Ny vy..."

-#: gitk:1730 gitk:3298 gitk:9932
+#: gitk:1785 gitk:3378 gitk:10030
 msgid "Edit view..."
 msgstr "Ändra vy..."

-#: gitk:1732 gitk:3299 gitk:9933
+#: gitk:1787 gitk:3379 gitk:10031
 msgid "Delete view"
 msgstr "Ta bort vy"

-#: gitk:1734
+#: gitk:1789
 msgid "All files"
 msgstr "Alla filer"

-#: gitk:1738
+#: gitk:1793
 msgid "Help"
 msgstr "Hjälp"

-#: gitk:1739 gitk:2399
+#: gitk:1794 gitk:2458
 msgid "About gitk"
 msgstr "Om gitk"

-#: gitk:1740
+#: gitk:1795
 msgid "Key bindings"
 msgstr "Tangentbordsbindningar"

-#: gitk:1797
+#: gitk:1852
 msgid "SHA1 ID: "
 msgstr "SHA1-id: "

-#: gitk:1828
+#: gitk:1883
 msgid "Row"
 msgstr "Rad"

-#: gitk:1859
+#: gitk:1914
 msgid "Find"
 msgstr "Sök"

-#: gitk:1860
+#: gitk:1915
 msgid "next"
 msgstr "nästa"

-#: gitk:1861
+#: gitk:1916
 msgid "prev"
 msgstr "föreg"

-#: gitk:1862
+#: gitk:1917
 msgid "commit"
 msgstr "incheckning"

-#: gitk:1865 gitk:1867 gitk:3511 gitk:3534 gitk:3558 gitk:5441 gitk:5512
+#: gitk:1920 gitk:1922 gitk:3588 gitk:3611 gitk:3635 gitk:5521 gitk:5592
 msgid "containing:"
 msgstr "som innehåller:"

-#: gitk:1868 gitk:2866 gitk:2871 gitk:3586
+#: gitk:1923 gitk:2925 gitk:2930 gitk:3663
 msgid "touching paths:"
 msgstr "som rör sökväg:"

-#: gitk:1869 gitk:3591
+#: gitk:1924 gitk:3668
 msgid "adding/removing string:"
 msgstr "som lägger/till tar bort sträng:"

-#: gitk:1878 gitk:1880
+#: gitk:1933 gitk:1935
 msgid "Exact"
 msgstr "Exakt"

-#: gitk:1880 gitk:3667 gitk:5409
+#: gitk:1935 gitk:3744 gitk:5489
 msgid "IgnCase"
 msgstr "IgnVersaler"

-#: gitk:1880 gitk:3560 gitk:3665 gitk:5405
+#: gitk:1935 gitk:3637 gitk:3742 gitk:5485
 msgid "Regexp"
 msgstr "Reg.uttr."

-#: gitk:1882 gitk:1883 gitk:3686 gitk:3716 gitk:3723 gitk:5532 gitk:5599
+#: gitk:1937 gitk:1938 gitk:3763 gitk:3793 gitk:3800 gitk:5612 gitk:5679
 msgid "All fields"
 msgstr "Alla fält"

-#: gitk:1883 gitk:3684 gitk:3716 gitk:5471
+#: gitk:1938 gitk:3761 gitk:3793 gitk:5551
 msgid "Headline"
 msgstr "Rubrik"

-#: gitk:1884 gitk:3684 gitk:5471 gitk:5599 gitk:6000
+#: gitk:1939 gitk:3761 gitk:5551 gitk:5679 gitk:6080
 msgid "Comments"
 msgstr "Kommentarer"

-#: gitk:1884 gitk:3684 gitk:3688 gitk:3723 gitk:5471 gitk:5936 gitk:7142
-#: gitk:7157
+#: gitk:1939 gitk:3761 gitk:3765 gitk:3800 gitk:5551 gitk:6016 gitk:7223
+#: gitk:7238
 msgid "Author"
 msgstr "Författare"

-#: gitk:1884 gitk:3684 gitk:5471 gitk:5938
+#: gitk:1939 gitk:3761 gitk:5551 gitk:6018
 msgid "Committer"
 msgstr "Incheckare"

-#: gitk:1913
+#: gitk:1968
 msgid "Search"
 msgstr "Sök"

-#: gitk:1920
+#: gitk:1975
 msgid "Diff"
 msgstr "Diff"

-#: gitk:1922
+#: gitk:1977
 msgid "Old version"
 msgstr "Gammal version"

-#: gitk:1924
+#: gitk:1979
 msgid "New version"
 msgstr "Ny version"

-#: gitk:1926
+#: gitk:1981
 msgid "Lines of context"
 msgstr "Rader sammanhang"

-#: gitk:1936
+#: gitk:1991
 msgid "Ignore space change"
 msgstr "Ignorera ändringar i blanksteg"

-#: gitk:1994
+#: gitk:2049
 msgid "Patch"
 msgstr "Patch"

-#: gitk:1996
+#: gitk:2051
 msgid "Tree"
 msgstr "Träd"

-#: gitk:2121 gitk:2136 gitk:7211
+#: gitk:2178 gitk:2193 gitk:7292
 msgid "Diff this -> selected"
 msgstr "Diff denna -> markerad"

-#: gitk:2123 gitk:2138 gitk:7212
+#: gitk:2180 gitk:2195 gitk:7293
 msgid "Diff selected -> this"
 msgstr "Diff markerad -> denna"

-#: gitk:2125 gitk:2140 gitk:7213
+#: gitk:2182 gitk:2197 gitk:7294
 msgid "Make patch"
 msgstr "Skapa patch"

-#: gitk:2126 gitk:7351
+#: gitk:2183 gitk:7432
 msgid "Create tag"
 msgstr "Skapa tagg"

-#: gitk:2127 gitk:7450
+#: gitk:2184 gitk:7531
 msgid "Write commit to file"
 msgstr "Skriv incheckning till fil"

-#: gitk:2128 gitk:7504
+#: gitk:2185 gitk:7585
 msgid "Create new branch"
 msgstr "Skapa ny gren"

-#: gitk:2129
+#: gitk:2186
 msgid "Cherry-pick this commit"
 msgstr "Plocka denna incheckning"

-#: gitk:2131
+#: gitk:2188
 msgid "Reset HEAD branch to here"
 msgstr "Återställ HEAD-grenen hit"

-#: gitk:2147
+#: gitk:2204
 msgid "Check out this branch"
 msgstr "Checka ut denna gren"

-#: gitk:2149
+#: gitk:2206
 msgid "Remove this branch"
 msgstr "Ta bort denna gren"

-#: gitk:2155
+#: gitk:2212
 msgid "Highlight this too"
 msgstr "Markera även detta"

-#: gitk:2157
+#: gitk:2214
 msgid "Highlight this only"
 msgstr "Markera bara detta"

-#: gitk:2159
+#: gitk:2216
 msgid "External diff"
 msgstr "Extern diff"

-#: gitk:2400
+#: gitk:2218
+msgid "Blame parent commit"
+msgstr "Annotera föregående incheckning"
+
+#: gitk:2459
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -300,427 +312,453 @@ msgstr ""
 "\n"
 "Använd och vidareförmedla enligt villkoren i GNU General Public License"

-#: gitk:2408 gitk:2469 gitk:7799
+#: gitk:2467 gitk:2528 gitk:7880
 msgid "Close"
 msgstr "Stäng"

-#: gitk:2427
+#: gitk:2486
 msgid "Gitk key bindings"
 msgstr "Tangentbordsbindningar för Gitk"

-#: gitk:2429
+#: gitk:2488
 msgid "Gitk key bindings:"
 msgstr "Tangentbordsbindningar för Gitk:"

-#: gitk:2431
+#: gitk:2490
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tAvsluta"

-#: gitk:2432
+#: gitk:2491
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Home>\t\tGå till första incheckning"

-#: gitk:2433
+#: gitk:2492
 msgid "<End>\t\tMove to last commit"
 msgstr "<End>\t\tGå till sista incheckning"

-#: gitk:2434
+#: gitk:2493
 msgid "<Up>, p, i\tMove up one commit"
 msgstr "<Upp>, p, i\tGå en incheckning upp"

-#: gitk:2435
+#: gitk:2494
 msgid "<Down>, n, k\tMove down one commit"
 msgstr "<Ned>, n, k\tGå en incheckning ned"

-#: gitk:2436
+#: gitk:2495
 msgid "<Left>, z, j\tGo back in history list"
 msgstr "<Vänster>, z, j\tGå bakåt i historiken"

-#: gitk:2437
+#: gitk:2496
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Höger>, x, l\tGå framåt i historiken"

-#: gitk:2438
+#: gitk:2497
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tGå upp en sida i incheckningslistan"

-#: gitk:2439
+#: gitk:2498
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tGå ned en sida i incheckningslistan"

-#: gitk:2440
+#: gitk:2499
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Home>\tRulla till början av incheckningslistan"

-#: gitk:2441
+#: gitk:2500
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tRulla till slutet av incheckningslistan"

-#: gitk:2442
+#: gitk:2501
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg"

-#: gitk:2443
+#: gitk:2502
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg"

-#: gitk:2444
+#: gitk:2503
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida"

-#: gitk:2445
+#: gitk:2504
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida"

-#: gitk:2446
+#: gitk:2505
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Skift-Upp>\tSök bakåt (uppåt, senare incheckningar)"

-#: gitk:2447
+#: gitk:2506
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Skift-Ned>\tSök framåt (nedåt, tidigare incheckningar)"

-#: gitk:2448
+#: gitk:2507
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Delete>, b\tRulla diffvisningen upp en sida"

-#: gitk:2449
+#: gitk:2508
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Baksteg>\tRulla diffvisningen upp en sida"

-#: gitk:2450
+#: gitk:2509
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Blanksteg>\tRulla diffvisningen ned en sida"

-#: gitk:2451
+#: gitk:2510
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tRulla diffvisningen upp 18 rader"

-#: gitk:2452
+#: gitk:2511
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tRulla diffvisningen ned 18 rader"

-#: gitk:2453
+#: gitk:2512
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tSök"

-#: gitk:2454
+#: gitk:2513
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tGå till nästa sökträff"

-#: gitk:2455
+#: gitk:2514
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\t\tGå till nästa sökträff"

-#: gitk:2456
+#: gitk:2515
 msgid "/\t\tMove to next find hit, or redo find"
 msgstr "/\t\tGå till nästa sökträff, eller sök på nytt"

-#: gitk:2457
+#: gitk:2516
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tGå till föregående sökträff"

-#: gitk:2458
+#: gitk:2517
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tRulla diffvisningen till nästa fil"

-#: gitk:2459
+#: gitk:2518
 #, 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:2460
+#: gitk:2519
 #, 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:2461
+#: gitk:2520
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-Num+>\tÖka teckenstorlek"

-#: gitk:2462
+#: gitk:2521
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tÖka teckenstorlek"

-#: gitk:2463
+#: gitk:2522
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-Num->\tMinska teckenstorlek"

-#: gitk:2464
+#: gitk:2523
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tMinska teckenstorlek"

-#: gitk:2465
+#: gitk:2524
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tUppdatera"

-#: gitk:3091
+#: gitk:2940
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Fel vid hämtning av \"%s\" från %s:"
+
+#: gitk:2997 gitk:3006
+#, tcl-format
+msgid "Error creating temporary directory %s:"
+msgstr "Fel när tillfällig katalog %s skulle skapas:"
+
+#: gitk:3019
+msgid "command failed:"
+msgstr "kommando misslyckades:"
+
+#: gitk:3039
+msgid "No such commit"
+msgstr "Ingen sådan incheckning finns"
+
+#: gitk:3044
+msgid "git gui blame: command failed:"
+msgstr "git gui blame: kommandot misslyckades:"
+
+#: gitk:3053
+msgid "External diff viewer failed:"
+msgstr "Externt diff-verktyg misslyckades:"
+
+#: gitk:3171
 msgid "Gitk view definition"
 msgstr "Definition av Gitk-vy"

-#: gitk:3116
+#: gitk:3196
 msgid "Name"
 msgstr "Namn"

-#: gitk:3119
+#: gitk:3199
 msgid "Remember this view"
 msgstr "Spara denna vy"

-#: gitk:3123
+#: gitk:3203
 msgid "Commits to include (arguments to git log):"
 msgstr "Incheckningar att ta med (argument till git log):"

-#: gitk:3130
+#: gitk:3210
 msgid "Command to generate more commits to include:"
 msgstr "Kommando för att generera fler incheckningar att ta med:"

-#: gitk:3137
+#: gitk:3217
 msgid "Enter files and directories to include, one per line:"
 msgstr "Ange filer och kataloger att ta med, en per rad:"

-#: gitk:3184
+#: gitk:3264
 msgid "Error in commit selection arguments:"
 msgstr "Fel i argument för val av incheckningar:"

-#: gitk:3238 gitk:3290 gitk:3736 gitk:3750 gitk:4951 gitk:9896 gitk:9897
+#: gitk:3318 gitk:3370 gitk:3813 gitk:3827 gitk:5031 gitk:9994 gitk:9995
 msgid "None"
 msgstr "Inget"

-#: gitk:3684 gitk:5471 gitk:7144 gitk:7159
+#: gitk:3761 gitk:5551 gitk:7225 gitk:7240
 msgid "Date"
 msgstr "Datum"

-#: gitk:3684 gitk:5471
+#: gitk:3761 gitk:5551
 msgid "CDate"
 msgstr "Skapat datum"

-#: gitk:3833 gitk:3838
+#: gitk:3910 gitk:3915
 msgid "Descendant"
 msgstr "Avkomling"

-#: gitk:3834
+#: gitk:3911
 msgid "Not descendant"
 msgstr "Inte avkomling"

-#: gitk:3841 gitk:3846
+#: gitk:3918 gitk:3923
 msgid "Ancestor"
 msgstr "Förfader"

-#: gitk:3842
+#: gitk:3919
 msgid "Not ancestor"
 msgstr "Inte förfader"

-#: gitk:4078
+#: gitk:4158
 msgid "Local changes checked in to index but not committed"
 msgstr "Lokala ändringar sparade i indexet men inte incheckade"

-#: gitk:4111
+#: gitk:4191
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Lokala ändringar, ej sparade i indexet"

-#: gitk:5440
+#: gitk:5520
 msgid "Searching"
 msgstr "Söker"

-#: gitk:5940
+#: gitk:6020
 msgid "Tags:"
 msgstr "Taggar:"

-#: gitk:5957 gitk:5963 gitk:7137
+#: gitk:6037 gitk:6043 gitk:7218
 msgid "Parent"
 msgstr "Förälder"

-#: gitk:5968
+#: gitk:6048
 msgid "Child"
 msgstr "Barn"

-#: gitk:5977
+#: gitk:6057
 msgid "Branch"
 msgstr "Gren"

-#: gitk:5980
+#: gitk:6060
 msgid "Follows"
 msgstr "Följer"

-#: gitk:5983
+#: gitk:6063
 msgid "Precedes"
 msgstr "Föregår"

-#: gitk:6267
+#: gitk:6347
 msgid "Error getting merge diffs:"
 msgstr "Fel vid hämtning av sammanslagningsdiff:"

-#: gitk:6970
+#: gitk:7051
 msgid "Goto:"
 msgstr "Gå till:"

-#: gitk:6972
+#: gitk:7053
 msgid "SHA1 ID:"
 msgstr "SHA1-id:"

-#: gitk:6991
+#: gitk:7072
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "Förkortat SHA1-id %s är tvetydigt"

-#: gitk:7003
+#: gitk:7084
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "SHA-id:t %s är inte känt"

-#: gitk:7005
+#: gitk:7086
 #, tcl-format
 msgid "Tag/Head %s is not known"
 msgstr "Tagg/huvud %s är okänt"

-#: gitk:7147
+#: gitk:7228
 msgid "Children"
 msgstr "Barn"

-#: gitk:7204
+#: gitk:7285
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Återställ grenen %s hit"

-#: gitk:7206
+#: gitk:7287
 msgid "Detached head: can't reset"
 msgstr "Frånkopplad head: kan inte återställa"

-#: gitk:7238
+#: gitk:7319
 msgid "Top"
 msgstr "Topp"

-#: gitk:7239
+#: gitk:7320
 msgid "From"
 msgstr "Från"

-#: gitk:7244
+#: gitk:7325
 msgid "To"
 msgstr "Till"

-#: gitk:7267
+#: gitk:7348
 msgid "Generate patch"
 msgstr "Generera patch"

-#: gitk:7269
+#: gitk:7350
 msgid "From:"
 msgstr "Från:"

-#: gitk:7278
+#: gitk:7359
 msgid "To:"
 msgstr "Till:"

-#: gitk:7287
+#: gitk:7368
 msgid "Reverse"
 msgstr "Vänd"

-#: gitk:7289 gitk:7464
+#: gitk:7370 gitk:7545
 msgid "Output file:"
 msgstr "Utdatafil:"

-#: gitk:7295
+#: gitk:7376
 msgid "Generate"
 msgstr "Generera"

-#: gitk:7331
+#: gitk:7412
 msgid "Error creating patch:"
 msgstr "Fel vid generering av patch:"

-#: gitk:7353 gitk:7452 gitk:7506
+#: gitk:7434 gitk:7533 gitk:7587
 msgid "ID:"
 msgstr "Id:"

-#: gitk:7362
+#: gitk:7443
 msgid "Tag name:"
 msgstr "Taggnamn:"

-#: gitk:7366 gitk:7515
+#: gitk:7447 gitk:7596
 msgid "Create"
 msgstr "Skapa"

-#: gitk:7381
+#: gitk:7462
 msgid "No tag name specified"
 msgstr "Inget taggnamn angavs"

-#: gitk:7385
+#: gitk:7466
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "Taggen \"%s\" finns redan"

-#: gitk:7391
+#: gitk:7472
 msgid "Error creating tag:"
-msgstr "Fel vid skapande av tagg:"
+msgstr "Fel n? tagg skulle skapas:"

-#: gitk:7461
+#: gitk:7542
 msgid "Command:"
 msgstr "Kommando:"

-#: gitk:7469
+#: gitk:7550
 msgid "Write"
 msgstr "Skriv"

-#: gitk:7485
+#: gitk:7566
 msgid "Error writing commit:"
 msgstr "Fel vid skrivning av incheckning:"

-#: gitk:7511
+#: gitk:7592
 msgid "Name:"
 msgstr "Namn:"

-#: gitk:7530
+#: gitk:7611
 msgid "Please specify a name for the new branch"
 msgstr "Ange ett namn för den nya grenen"

-#: gitk:7559
+#: gitk:7640
 #, 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:7564
+#: gitk:7645
 msgid "Cherry-picking"
 msgstr "Plockar"

-#: gitk:7576
+#: gitk:7657
 msgid "No changes committed"
 msgstr "Inga ändringar incheckade"

-#: gitk:7601
+#: gitk:7682
 msgid "Confirm reset"
 msgstr "Bekräfta återställning"

-#: gitk:7603
+#: gitk:7684
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Återställa grenen %s till %s?"

-#: gitk:7607
+#: gitk:7688
 msgid "Reset type:"
 msgstr "Typ av återställning:"

-#: gitk:7611
+#: gitk:7692
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Mjuk: Rör inte utcheckning och index"

-#: gitk:7614
+#: gitk:7695
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr "Blandad: Rör inte utcheckning, återställ index"

-#: gitk:7617
+#: gitk:7698
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -728,19 +766,19 @@ msgstr ""
 "Hård: Återställ utcheckning och index\n"
 "(förkastar ALLA lokala ändringar)"

-#: gitk:7633
+#: gitk:7714
 msgid "Resetting"
 msgstr "Återställer"

-#: gitk:7690
+#: gitk:7771
 msgid "Checking out"
 msgstr "Checkar ut"

-#: gitk:7741
+#: gitk:7822
 msgid "Cannot delete the currently checked-out branch"
 msgstr "Kan inte ta bort den just nu utcheckade grenen"

-#: gitk:7747
+#: gitk:7828
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -749,16 +787,16 @@ msgstr ""
 "Incheckningarna på grenen %s existerar inte på någon annan gren.\n"
 "Vill du verkligen ta bort grenen %s?"

-#: gitk:7778
+#: gitk:7859
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Taggar och huvuden: %s"

-#: gitk:7792
+#: gitk:7873
 msgid "Filter"
 msgstr "Filter"

-#: gitk:8086
+#: gitk:8167
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -766,125 +804,125 @@ msgstr ""
 "Fel vid läsning av information om incheckningstopologi; information om "
 "grenar och föregående/senare taggar kommer inte vara komplett."

-#: gitk:9072
+#: gitk:9153
 msgid "Tag"
 msgstr "Tagg"

-#: gitk:9072
+#: gitk:9153
 msgid "Id"
 msgstr "Id"

-#: gitk:9118
+#: gitk:9199
 msgid "Gitk font chooser"
 msgstr "Teckensnittsväljare för Gitk"

-#: gitk:9135
+#: gitk:9216
 msgid "B"
 msgstr "F"

-#: gitk:9138
+#: gitk:9219
 msgid "I"
 msgstr "K"

-#: gitk:9231
+#: gitk:9312
 msgid "Gitk preferences"
 msgstr "Inställningar för Gitk"

-#: gitk:9232
+#: gitk:9313
 msgid "Commit list display options"
 msgstr "Alternativ för incheckningslistvy"

-#: gitk:9235
+#: gitk:9316
 msgid "Maximum graph width (lines)"
 msgstr "Maximal grafbredd (rader)"

-#: gitk:9239
+#: gitk:9320
 #, tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Maximal grafbredd (% av ruta)"

-#: gitk:9244
+#: gitk:9325
 msgid "Show local changes"
 msgstr "Visa lokala ändringar"

-#: gitk:9249
+#: gitk:9330
 msgid "Auto-select SHA1"
 msgstr "Välj SHA1 automatiskt"

-#: gitk:9254
+#: gitk:9335
 msgid "Diff display options"
 msgstr "Alternativ för diffvy"

-#: gitk:9256
+#: gitk:9337
 msgid "Tab spacing"
 msgstr "Blanksteg för tabulatortecken"

-#: gitk:9260
+#: gitk:9341
 msgid "Display nearby tags"
 msgstr "Visa närliggande taggar"

-#: gitk:9265
+#: gitk:9346
 msgid "Limit diffs to listed paths"
 msgstr "Begränsa diff till listade sökvägar"

-#: gitk:9272
+#: gitk:9353
 msgid "External diff tool"
 msgstr "Externt diff-verktyg"

-#: gitk:9274
+#: gitk:9355
 msgid "Choose..."
 msgstr "Välj..."

-#: gitk:9279
+#: gitk:9360
 msgid "Colors: press to choose"
 msgstr "Färger: tryck för att välja"

-#: gitk:9282
+#: gitk:9363
 msgid "Background"
 msgstr "Bakgrund"

-#: gitk:9286
+#: gitk:9367
 msgid "Foreground"
 msgstr "Förgrund"

-#: gitk:9290
+#: gitk:9371
 msgid "Diff: old lines"
 msgstr "Diff: gamla rader"

-#: gitk:9295
+#: gitk:9376
 msgid "Diff: new lines"
 msgstr "Diff: nya rader"

-#: gitk:9300
+#: gitk:9381
 msgid "Diff: hunk header"
 msgstr "Diff: delhuvud"

-#: gitk:9306
+#: gitk:9387
 msgid "Select bg"
 msgstr "Markerad bakgrund"

-#: gitk:9310
+#: gitk:9391
 msgid "Fonts: press to choose"
 msgstr "Teckensnitt: tryck för att välja"

-#: gitk:9312
+#: gitk:9393
 msgid "Main font"
 msgstr "Huvudteckensnitt"

-#: gitk:9313
+#: gitk:9394
 msgid "Diff display font"
 msgstr "Teckensnitt för diffvisning"

-#: gitk:9314
+#: gitk:9395
 msgid "User interface font"
 msgstr "Teckensnitt för användargränssnitt"

-#: gitk:9339
+#: gitk:9420
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: välj färg för %s"

-#: gitk:9720
+#: gitk:9801
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -892,24 +930,24 @@ msgstr ""
 "Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n"
 " Gitk kräver åtminstone Tcl/Tk 8.4."

-#: gitk:9812
+#: gitk:9900
 msgid "Cannot find a git repository here."
 msgstr "Hittar inget gitk-arkiv här."

-#: gitk:9816
+#: gitk:9904
 #, tcl-format
 msgid "Cannot find the git directory \"%s\"."
 msgstr "Hittar inte git-katalogen \"%s\"."

-#: gitk:9853
+#: gitk:9951
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Tvetydigt argument \"%s\": både revision och filnamn"

-#: gitk:9865
+#: gitk:9963
 msgid "Bad arguments to gitk:"
 msgstr "Felaktiga argument till gitk:"

-#: gitk:9925
+#: gitk:10023
 msgid "Command line"
 msgstr "Kommandorad"
-- 
1.6.0.2.GIT


On Thu, 25 Sep 2008, Peter Krefting wrote:

> Mikael Magnusson:
>
>> Want me to change that one too?
>
> Yeah, most probably should do that, if we change the other.
>
>> I personally think "Fel vid skapande av ~"is better than "Fel när ~
>> skulle skapas" but we should probably decide on one or the other :).
>
> as long as it is consistent, it should probably be good enough.
>
>> -- Mikael Magnusson???{.n?+???????+%?????ÿÿ\x17??w??{.n?+???????^n?r??z?\x1a??h????&???z??z?ÿÿ?+??+zf???h???~????i????????z_?\x0f?j:+v???)ÿÿ?m
>
> Something weird is happening with your e-mail messages, not sure if it
> is on your end or mine...

I'll try alpine instead.

--
Mikael Magnusson

^ permalink raw reply related

* Re: [QGit] Some suggestion
From: Marco Costalba @ 2008-09-25 11:51 UTC (permalink / raw)
  To: Li Frank-B20596; +Cc: git
In-Reply-To: <7FD1F85C96D70C4A89DA1DF7667EAE96079EDF@zch01exm23.fsl.freescale.net>

On Thu, Sep 25, 2008 at 7:24 AM, Li Frank-B20596 <Frank.Li@freescale.com> wrote:
> Can add below function at qgit?
> ===Difference other version===
>        1. user choose a commit,
>        2. right click
>                Check working dir
>                View patch
>                ....
>                [Diff with other commit]
>
>        3. change icon +
>        4. user choose other commit
>
>        QGit show list of changed files.
>        click one files, call extern diff tool show difference.
>
> === file view ===
>        Can use different color to high light current commit change.
>

You can _already_ do this.

 1. user choose a commit

 2. user choose other commit with CTRL + RIGHT CLICK


One of the problems of qgit is that the features are not immediately
visible. This is a conscious choice to avoid cluttering the GUI.

Currently the _best_ way to have a  complete idea of qgit is to read
the handbook (press F1 key): it takes only 5 minutes and you can find
interesting features otherwise very difficult to find by accident.

Marco

^ permalink raw reply

* Re: [PATCH] gitk: Update swedish translation.
From: Peter Krefting @ 2008-09-25 11:49 UTC (permalink / raw)
  To: Mikael Magnusson; +Cc: Paul Mackerras, Git Mailing List
In-Reply-To: <237967ef0809250328q630dc36dj8aa3d3a9bc1f63ca@mail.gmail.com>

Mikael Magnusson:

> Want me to change that one too?

Yeah, most probably should do that, if we change the other.

> I personally think "Fel vid skapande av ~"is better than "Fel när ~
> skulle skapas" but we should probably decide on one or the other :).

as long as it is consistent, it should probably be good enough.

> -- Mikael Magnusson???{.n?+???????+%?????ÿÿ\x17??w??{.n?+???????^n?r??z?\x1a??h????&???z??z?ÿÿ?+??+zf???h???~????i????????z_?\x0f?j:+v???)ÿÿ?m

Something weird is happening with your e-mail messages, not sure if it
is on your end or mine...

-- 
\\// Peter - http://www.softwolves.pp.se/

^ permalink raw reply

* Re: [PATCH] usage.c: remove unused functions
From: Thomas Rast @ 2008-09-25 11:48 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Junio C Hamano, git, Petr Baudis
In-Reply-To: <20080925184104.6117@nanako3.lavabit.com>

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

Nanako Shiraishi wrote:
> This removes three functions that are not used anywhere.
[...]
> -void set_usage_routine(void (*routine)(const char *err) NORETURN)
[...]
> -void set_error_routine(void (*routine)(const char *err, va_list params))
[...]
> -void set_warn_routine(void (*routine)(const char *warn, va_list params))

These blame to the following commit:

  commit 39a3f5ea7c0352a530338d30d4e618f6b4db84e4
  Author: Petr Baudis <pasky@suse.cz>
  Date:   Sat Jun 24 04:34:38 2006 +0200

      Customizable error handlers
      
      This patch makes the usage(), die() and error() handlers customizable.
      Nothing in the git code itself uses that but many other libgit users
      (like Git.pm) will.
  [...]

So apparently the intent was that they would only be used from outside
Git.  I don't know whether anyone still plans to do that, but they're
certainly not "just" unused.

- Thomas

-- 
Thomas Rast
trast@student.ethz.ch


[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply

* Re: [PATCH] Fix submodule sync with relative submodule URLs
From: David Aguilar @ 2008-09-25 11:38 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Johan Herland, git, Junio C Hamano, Mark Levedahl
In-Reply-To: <20080924161902.GT3669@spearce.org>

On  0, "Shawn O. Pearce" <spearce@spearce.org> wrote:
> Johan Herland <johan@herland.net> wrote:
> > On Wednesday 24 September 2008, David Aguilar wrote:
> > > Instead of just doing an "|| exit" shouldn't it report an explanation
> > > of the error?
> > > Other than that, it looks good to me.
> > 
> > Fixed. Thanks.
> 
> OK, time for the drive-by patch commenting.  I've largely stayed
> out of git-submodule related code, but I just looked at in the
> context of applying this patch.
> 
> There are three callers to resolve_relative_url in master and next.
> All three callers just "|| exit" when resolve_relative_url fails.
> 
> The only reason resolve_relative_url can fail is when there is no
> remote.$remote.url configuration option set for the current default
> remote ("origin"?).
> 
> I guess I'm unclear about why cmd_sync is different from the
> existing callers.

Right, it's not.  resolve_relative_url() is already calling
die() when that error condition is met, so the "|| exit" thing
can be removed entirely.  I sent a patch on top of Johan's
first patch to remove the "|| exit" calls in all callers of
resolve_relative_url.  That seems like the right thing to do;
in the very least it makes it easier to read.  What do you
think?




> 
> > diff --git a/git-submodule.sh b/git-submodule.sh
> > index 1c39b59..f89bdbe 100755
> > --- a/git-submodule.sh
> > +++ b/git-submodule.sh
> > @@ -634,6 +634,15 @@ cmd_sync()
> >  	do
> >  		name=$(module_name "$path")
> >  		url=$(git config -f .gitmodules --get submodule."$name".url)
> > +
> > +		# Possibly a url relative to parent
> > +		case "$url" in
> > +		./*|../*)
> > +			url=$(resolve_relative_url "$url") ||
> > +				die "failed to resolve relative submodule url for '$name'"
> > +			;;
> > +		esac
> > +
> >  		if test -e "$path"/.git
> >  		then
> >  		(
> 
> -- 
> Shawn.

-- 

	David

^ permalink raw reply

* Re: [JGIT PATCH] Add tests for handling of parsing errors in OpenSshConfig
From: Robin Rosenberg @ 2008-09-25 11:33 UTC (permalink / raw)
  To: Jonas Fonseca, Shawn O. Pearce
  Cc: Robin Rosenberg, sverre@rabbelier.nl, git@vger.kernel.org
In-Reply-To: <20080925083934.GB10273@diku.dk>

Den 9/25/2008, skrev "Jonas Fonseca" <fonseca@diku.dk>:

>Badly quoted entries are now ignored similar to how bad port number are
>currently ignored. A check for negative port numbers is now performed
>so that they also will be ignored.

Nooo. We should really give some feedback on bad entries. OpenSSH
(version 5.1) complains and refuses to connect if I give it a bad port
number or hostname. It complains about "missing parameter" and bad
port number for these cases. OpenSSH doesn't simply ignore them.

HostName=bad"
Port=hubba

Even if openssh would ignore them I'd think it would be bad if we did,
unless there was some serious compatibility issue here.

-- robin

^ permalink raw reply

* [PATCH] git-submodule: remove unnecessary exits when calling resolve_relative_url
From: David Aguilar @ 2008-09-25 11:21 UTC (permalink / raw)
  To: gitster; +Cc: git, johan, spearce, mlevedahl, David Aguilar
In-Reply-To: <200809221808.31730.johan@herland.net>

resolve_relative_url calls die() when no remote url exists so these calls to
exit can be removed.

Signed-off-by: David Aguilar <davvid@gmail.com>
---

This applies on top of the first
"Fix submodule sync with relative submodule URLs" patch by Johan Herland.
Shawn's comments made me realize that the resolve_relative_url callers
could be cleaned up.

 git-submodule.sh |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 92be0fe..533d1cc 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -155,7 +155,7 @@ cmd_add()
 	case "$repo" in
 	./*|../*)
 		# dereference source url relative to parent's url
-		realrepo=$(resolve_relative_url "$repo") || exit
+		realrepo=$(resolve_relative_url "$repo")
 		;;
 	*:*|/*)
 		# absolute url
@@ -184,7 +184,7 @@ cmd_add()
 
 		case "$repo" in
 		./*|../*)
-			url=$(resolve_relative_url "$repo") || exit
+			url=$(resolve_relative_url "$repo")
 		    ;;
 		*)
 			url="$repo"
@@ -270,7 +270,7 @@ cmd_init()
 		# Possibly a url relative to parent
 		case "$url" in
 		./*|../*)
-			url=$(resolve_relative_url "$url") || exit
+			url=$(resolve_relative_url "$url")
 			;;
 		esac
 
@@ -638,7 +638,7 @@ cmd_sync()
 		# Possibly a url relative to parent
 		case "$url" in
 		./*|../*)
-			url=$(resolve_relative_url "$url") || exit
+			url=$(resolve_relative_url "$url")
 			;;
 		esac
 
-- 
1.6.0.2.307.gc4275

^ permalink raw reply related

* Re: [RFC] gitweb wishlist and TODO list
From: Pedro Melo @ 2008-09-25 11:08 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git, Petr Baudis
In-Reply-To: <200809251230.11342.jnareb@gmail.com>

Hi,

On Sep 25, 2008, at 11:30 AM, Jakub Narebski wrote:

> * Support for FastCGI (via CGI::Fast or FCGI).
>
>  Unfortunately I don't use FastCGI.  This has to be done in a very
>  un-intruisive way, and without performance penalties for "ordinary"
>  CGI and mod_perl.
>
>  Suggested: input reading and validation refactoring.

Is it ok to require CPAN modules? If yes, then using HTTP::Engine as a  
base could be helpful here.

It supports standalone deployments as well as FastCGI, CGI, mod_perl,  
POE and others.

And it acks as a very simpe HTTP-layer, without any "framework" logic.


> * Committags support
>
>  Support expansion of "tags" in commit messages, like gitweb now  
> does for
>  (shortened) SHA-1, converting them to 'object' view link.  It  
> should be
>  done in a way to make it easy configurable, preferebly having to
>  configure only variable part, and not having to write whole  
> replacement
>  rule.
>
>  Possible committags include: _BUG(n)_, bug _#n_, _FEATURE(n),
>  Message-Id, plain text URL e.g. _http://repo.or.cz_, spam  
> protecting of
>  email addresses, "rich text formatting" like *bold* and _underline_,
>  syntax highlighting of signoff lines.

If this part is modular, we can even use a full blown text markup  
tool, like Markdown or Textile, to generate the HTML version of the  
commits.

Best regards,
-- 
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: melo@simplicidade.org
Use XMPP!

^ permalink raw reply

* [TG RFC PATCH] Add bash completion script for TopGit
From: Jonas Fonseca @ 2008-09-25 11:06 UTC (permalink / raw)
  To: Petr Baudis, git

The script is based on git's bash completion script.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
---
 contrib/tg-completion.bash |  438 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 438 insertions(+), 0 deletions(-)
 create mode 100755 contrib/tg-completion.bash

 I have RFC'd this because I am still a topgit noob.
 
diff --git a/contrib/tg-completion.bash b/contrib/tg-completion.bash
new file mode 100755
index 0000000..35eabe9
--- /dev/null
+++ b/contrib/tg-completion.bash
@@ -0,0 +1,438 @@
+#
+# bash completion support for TopGit.
+#
+# Copyright (C) 2008 Jonas Fonseca <fonseca@diku.dk>
+# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
+# Based git's git-completion.sh: http://repo.or.cz/w/git/fastimport.git
+# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
+# Distributed under the GNU General Public License, version 2.0.
+#
+# The contained completion routines provide support for completing:
+#
+#    *) local and remote branch names
+#    *) local and remote tag names
+#    *) .git/remotes file names
+#    *) git 'subcommands'
+#    *) tree paths within 'ref:path/to/file' expressions
+#    *) common --long-options
+#
+# To use these routines:
+#
+#    1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
+#    2) Added the following line to your .bashrc:
+#        source ~/.git-completion.sh
+#
+#    3) You may want to make sure the git executable is available
+#       in your PATH before this script is sourced, as some caching
+#       is performed while the script loads.  If git isn't found
+#       at source time then all lookups will be done on demand,
+#       which may be slightly slower.
+#
+#    4) Consider changing your PS1 to also show the current branch:
+#        PS1='[\u@\h \W$(__tg_ps1 " (%s)")]\$ '
+#
+#       The argument to __tg_ps1 will be displayed only if you
+#       are currently in a git repository.  The %s token will be
+
+case "$COMP_WORDBREAKS" in
+*:*) : great ;;
+*)   COMP_WORDBREAKS="$COMP_WORDBREAKS:"
+esac
+
+### {{{ Utilities
+
+__tgdir ()
+{
+	if [ -z "$1" ]; then
+		if [ -n "$__tg_dir" ]; then
+			echo "$__tg_dir"
+		elif [ -d .git ]; then
+			echo .git
+		else
+			git rev-parse --git-dir 2>/dev/null
+		fi
+	elif [ -d "$1/.git" ]; then
+		echo "$1/.git"
+	else
+		echo "$1"
+	fi
+}
+
+__tgcomp_1 ()
+{
+	local c IFS=' '$'\t'$'\n'
+	for c in $1; do
+		case "$c$2" in
+		--*=*) printf %s$'\n' "$c$2" ;;
+		*.)    printf %s$'\n' "$c$2" ;;
+		*)     printf %s$'\n' "$c$2 " ;;
+		esac
+	done
+}
+
+__tgcomp ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+	if [ $# -gt 2 ]; then
+		cur="$3"
+	fi
+	case "$cur" in
+	--*=)
+		COMPREPLY=()
+		;;
+	*)
+		local IFS=$'\n'
+		COMPREPLY=($(compgen -P "$2" \
+			-W "$(__tgcomp_1 "$1" "$4")" \
+			-- "$cur"))
+		;;
+	esac
+}
+
+__tg_heads ()
+{
+	local cmd i is_hash=y dir="$(__tgdir "$1")"
+	if [ -d "$dir" ]; then
+		git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
+			refs/heads
+		return
+	fi
+	for i in $(git ls-remote "$1" 2>/dev/null); do
+		case "$is_hash,$i" in
+		y,*) is_hash=n ;;
+		n,*^{}) is_hash=y ;;
+		n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;;
+		n,*) is_hash=y; echo "$i" ;;
+		esac
+	done
+}
+
+__tg_refs ()
+{
+	local cmd i is_hash=y dir="$(__tgdir "$1")"
+	if [ -d "$dir" ]; then
+		if [ -e "$dir/HEAD" ]; then echo HEAD; fi
+		git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
+			refs/tags refs/heads refs/remotes
+		return
+	fi
+	for i in $(git ls-remote "$dir" 2>/dev/null); do
+		case "$is_hash,$i" in
+		y,*) is_hash=n ;;
+		n,*^{}) is_hash=y ;;
+		n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;;
+		n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;;
+		n,refs/remotes/*) is_hash=y; echo "${i#refs/remotes/}" ;;
+		n,*) is_hash=y; echo "$i" ;;
+		esac
+	done
+}
+
+__tg_refs2 ()
+{
+	local i
+	for i in $(__tg_refs "$1"); do
+		echo "$i:$i"
+	done
+}
+
+__tg_refs_remotes ()
+{
+	local cmd i is_hash=y
+	for i in $(git ls-remote "$1" 2>/dev/null); do
+		case "$is_hash,$i" in
+		n,refs/heads/*)
+			is_hash=y
+			echo "$i:refs/remotes/$1/${i#refs/heads/}"
+			;;
+		y,*) is_hash=n ;;
+		n,*^{}) is_hash=y ;;
+		n,refs/tags/*) is_hash=y;;
+		n,*) is_hash=y; ;;
+		esac
+	done
+}
+
+__tg_remotes ()
+{
+	local i ngoff IFS=$'\n' d="$(__tgdir)"
+	shopt -q nullglob || ngoff=1
+	shopt -s nullglob
+	for i in "$d/remotes"/*; do
+		echo ${i#$d/remotes/}
+	done
+	[ "$ngoff" ] && shopt -u nullglob
+	for i in $(git --git-dir="$d" config --list); do
+		case "$i" in
+		remote.*.url=*)
+			i="${i#remote.}"
+			echo "${i/.url=*/}"
+			;;
+		esac
+	done
+}
+
+__tg_complete_revlist ()
+{
+	local pfx cur="${COMP_WORDS[COMP_CWORD]}"
+	case "$cur" in
+	*...*)
+		pfx="${cur%...*}..."
+		cur="${cur#*...}"
+		__tgcomp "$(__tg_refs)" "$pfx" "$cur"
+		;;
+	*..*)
+		pfx="${cur%..*}.."
+		cur="${cur#*..}"
+		__tgcomp "$(__tg_refs)" "$pfx" "$cur"
+		;;
+	*)
+		__tgcomp "$(__tg_refs)"
+		;;
+	esac
+}
+
+__tg_topics ()
+{
+	tg summary | cut -f 2
+}
+
+__tg_commands ()
+{
+	if [ -n "$__tg_all_commandlist" ]; then
+		echo "$__tg_all_commandlist"
+		return
+	fi
+	local i IFS=" "$'\n'
+	for i in $(tg help | sed -n 's/^Usage:.*(\(.*\)).*/\1/p' | tr '|' ' ')
+	do
+		case $i in
+		*--*)             : helper pattern;;
+		*) echo $i;;
+		esac
+	done
+}
+__tg_all_commandlist=
+__tg_all_commandlist="$(__tg_commands 2>/dev/null)"
+
+__tg_complete_arg ()
+{
+	if [ $COMP_CWORD -gt 2 ] && [ "${COMP_WORDS[$COMP_CWORD - 1]}" = "$1" ]; then
+		return 0
+	fi
+	return 1
+}
+
+### }}}
+### {{{ Commands
+
+_tg_create ()
+{
+	local cmd="$1"
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	# Name must be the first arg after the create command
+	if [ $((cmd + 1)) = $COMP_CWORD ]; then
+		__tgcomp "$(__tg_topics)"
+		return
+	fi
+
+	__tg_complete_arg "-r" && {
+		__tgcomp "$(__tg_remotes)"
+		return
+	}
+
+	case "$cur" in
+	-*)
+		__tgcomp "
+			-r
+		"
+		;;
+	*)
+		__tgcomp "$(__tg_refs)"
+	esac
+}
+
+_tg_delete ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	case "$cur" in
+	-*)
+		__tgcomp "
+			-f
+		"
+		;;
+	*)
+		__tgcomp "$(__tg_topics)"
+	esac
+}
+
+_tg_export ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	__tg_complete_arg "--collapse" && {
+		__tgcomp "$(__tg_heads)"
+		return
+	}
+
+	__tg_complete_arg "--quilt" && {
+		return
+	}
+
+	case "$cur" in
+	*)
+		__tgcomp "
+			--collapse
+			--quilt
+		"
+	esac
+}
+
+_tg_help ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+	case "$cur" in
+	-*)
+		COMPREPLY=()
+		return
+		;;
+	esac
+	__tgcomp "$(__tg_commands)"
+}
+
+_tg_import ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	__tg_complete_arg "-p" && {
+		COMPREPLY=()
+		return
+	}
+
+	case "$cur" in
+	-*)
+		__tgcomp "
+			-p
+		"
+		;;
+	*)
+		__tg_complete_revlist
+	esac
+}
+
+_tg_info ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	case "$cur" in
+	*)
+		__tgcomp "$(__tg_topics)"
+	esac
+}
+
+_tg_mail ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	case "$cur" in
+	*)
+		__tgcomp "$(__tg_topics)"
+	esac
+}
+
+_tg_patch ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	case "$cur" in
+	*)
+		__tgcomp "$(__tg_topics)"
+	esac
+}
+
+_tg_remote ()
+{
+	local cur="${COMP_WORDS[COMP_CWORD]}"
+
+	case "$cur" in
+	*)
+		__tgcomp "$(__tg_remotes)"
+	esac
+}
+
+_tg_summary ()
+{
+	COMPREPLY=()
+}
+
+_tg_update ()
+{
+	COMPREPLY=()
+}
+
+### }}}
+### {{{ tg completion
+
+_tg ()
+{
+	local i c=1 command __tg_dir
+
+	while [ $c -lt $COMP_CWORD ]; do
+		i="${COMP_WORDS[c]}"
+		case "$i" in
+		-r) 
+			c=$((++c))
+			if [ $c -lt $COMP_CWORD ]; then
+				__tgcomp "$(__tg_remotes)"
+				return
+			fi
+			;;
+		-h|--help) command="help"; break ;;
+		*) command="$i"; break ;;
+		esac
+		c=$((++c))
+	done
+
+	if [ -z "$command" ]; then
+		case "${COMP_WORDS[COMP_CWORD]}" in
+		-*)	__tgcomp "
+				-r
+				-h
+				--help
+			"
+			;;
+		*)     __tgcomp "$(__tg_commands)" ;;
+		esac
+		return
+	fi
+
+	case "$command" in
+	create)      _tg_create "$c" ;;
+	delete)      _tg_delete ;;
+	export)      _tg_export ;;
+	help)        _tg_help ;;
+	import)      _tg_import ;;
+	info)        _tg_info ;;
+	mail)        _tg_mail ;;
+	patch)       _tg_patch ;;
+	remote)      _tg_remote ;;
+	summary)     _tg_summary ;;
+	update)      _tg_update ;;
+	*)           COMPREPLY=() ;;
+	esac
+}
+
+### }}}
+
+	__tgcomp "$(__tg_refs top-bases)"
+complete -o default -o nospace -F _tg tg
+
+# The following are necessary only for Cygwin, and only are needed
+# when the user has tab-completed the executable name and consequently
+# included the '.exe' suffix.
+#
+if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
+complete -o default -o nospace -F _tg tg.exe
+fi
-- 
1.6.0.2.471.g47a76.dirty


-- 
Jonas Fonseca

^ permalink raw reply related

* [TG PATCH] depend: Fix help listing
From: Jonas Fonseca @ 2008-09-25 10:50 UTC (permalink / raw)
  To: Petr Baudis, git

Without this `tg help depend` causes all kinds of trouble such as adding
empty lines to .topdeps.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>

---
 tg-depend.sh |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/tg-depend.sh b/tg-depend.sh
index af78808..498eec4 100644
--- a/tg-depend.sh
+++ b/tg-depend.sh
@@ -9,6 +9,10 @@ name=
 ## Parse options
 
 subcmd="$1"; shift
+[ "$subcmd" = "-h" ] && {
+	echo "Usage: tg [...] depend add NAME" >&2
+	exit 1
+}
 [ "$subcmd" = "add" ] || die "unknown subcommand ($subcmd)"
 
 while [ -n "$1" ]; do
-- 
tg: (212809f..) jf/depend-help (depends on: master)

-- 
Jonas Fonseca

^ permalink raw reply related

* [RFC] gitweb wishlist and TODO list
From: Jakub Narebski @ 2008-09-25 10:30 UTC (permalink / raw)
  To: git; +Cc: Petr Baudis

This is yet another series of planned gitweb features. It expands more
on new user-visible features than on improving gitweb code (therefore
for example using Git.pm/Git::Repo, gitweb caching, and list form of
open for pipelines are not mentioned here).

Which tasks / features are most requested?  Which tasks should be done
first?  What do you have on your gitweb TODO list? 

All comments appreciated. Thanks in advance.


* Support for FastCGI (via CGI::Fast or FCGI).

  Unfortunately I don't use FastCGI.  This has to be done in a very
  un-intruisive way, and without performance penalties for "ordinary"
  CGI and mod_perl.

  Suggested: input reading and validation refactoring.

* Optional information about load stats

  Add an option to display information about how much time it took to
  generate page, how many git commands were called, and possibly other
  metric; if page was cached, write when it was generated, and how much
  time till timeout.  This probably would require additional perl
  modules, and it should be conditional on those modules.

* AJAX sorting of tables

  Implement sorting tables (projects list, fork list, heads, tags) in
  browser using JavaScript, like tables in Wikipedia (if possible). 
  This would reduce server load, too.  Of course there would be fallback
  to server-side sorting.

* Committags support

  Support expansion of "tags" in commit messages, like gitweb now does for
  (shortened) SHA-1, converting them to 'object' view link.  It should be
  done in a way to make it easy configurable, preferebly having to
  configure only variable part, and not having to write whole replacement
  rule.

  Possible committags include: _BUG(n)_, bug _#n_, _FEATURE(n),
  Message-Id, plain text URL e.g. _http://repo.or.cz_, spam protecting of
  email addresses, "rich text formatting" like *bold* and _underline_,
  syntax highlighting of signoff lines.

* Project categories support; and/or support for tags, tag clouds,
  removing tags, grouping tags, tags suggestions; and/or support for Trove
  categories (like on Freshmeat, or SourceForge, or Savane/GForge).

* Syntax highlighting for "blob" view
  (in general: blob output filter)

* New log views (formats)

  New log-like views could include: 'log' view with path limiter,
  'whatchanged' like view with list of changed files, 'mbox' format (aka
  'plain' format) to be used by git-am, etc.

  This would I think require changes to log showing infrastructure.

* Enable showing blob size in 'tree' view (optional)

* Graphical log (like gitk, qgit, tig, or git-browser)
  perhaps also graphical view of forks like in GitHub

* Enable transparent compression for HTTP output
  (for performance reasons it makes sense to do it only for cached output)

* Side by side diff (like Wikipedia/MediaWiki), and/or side by side
  comparison (see e.g. Codestriker web review tool).

* Tree blame (when, at what commit and by whom current version of file or
  directory was generated).  This view can be seen in tree/directory view
  of such SCM web interfaces as ViewVC, or GitHub.

* Searching for projects, optionally with paginating projects list page

* Graphical diffstat/dirstat in 'commit' view for merge commits.

* Enhancing gitweb output with RDFa and/or microformats, to make it
  easier to parse unambiguously by machine, for example find fetch
  URL, find push URL, find homepage, parse dates, etc.

* Support for other outline format (XOXO perhaps), and other outlines,
  perhaps also in OPML.

* Etags based anchors to function definitions, i.e. something like
  version-aware source code browser like LXR Cross Referencer (in
  Perl), cscope, Bonsai Project or OpenGrok (unfortunately CDDL
  licensed, and in Java). Should we use Exuberant Ctags
  (http://ctags.sourceforge.net)?

* Optional support for remotes and remote-tracking branches;
  and perhaps support for showing alternates (see forks support)

* Support for patch management interfaces (StGit, Guilt, TopGit), like
  gitk and QGit now have; option to show unapplied patches stack etc.

* AJAX incremental blame, if cached version does not exist

* Better snapshot names, for example <project>-<tag> for tag
  snapshots, perhaps <project>-<branch>-<date> for branch tip
  snapshots, etc.  Ensure that <filename>.<suffix> expands to
  <filename> (see also snapshots of subtrees).

* ...

-- 
Jakub Narebski
Poland

^ permalink raw reply

* Re: [PATCH] gitk: Update swedish translation.
From: Mikael Magnusson @ 2008-09-25 10:28 UTC (permalink / raw)
  To: Peter Krefting; +Cc: Paul Mackerras, Git Mailing List
In-Reply-To: <Pine.LNX.4.64.0809250940120.5683@ds9.cixit.se>

2008/9/25 Peter Krefting <peter@softwolves.pp.se>:
> Hi!
> Mikael Magnusson:
>
> Your mail came out weird without line-breaks here, trying to recover
> your comments... :-)

Sorry about that, probably gmail being weird somehow..

>> This is sort of incorrect, since there was an error the directory
>> was presumably never created.
>
> Ah, yes.
>
>> Btw, according to google code search, the common case seems to be
>> what I wrote, though I didn't check before writing
>> it:
>> http://www.google.com/codesearch?hl=en&lr=&q=error+creating.*directory+file%3Asv%5C.po&sbtn=Search
>> How about "Fel vid skapande av den tillfälliga katalogen %s:"?
>
> That is back to the -ande form. It's not wrong, per se, it just doesn't
> look that good (IMHO at least).

b3449aea (Peter Karlsson   2008-03-14 16:13:17 +0100 702) msgid "Error
creating tag:"
b3449aea (Peter Karlsson   2008-03-14 16:13:17 +0100 703) msgstr "Fel
vid skapande av tagg:"

Want me to change that one too? I personally think
"Fel vid skapande av ~"
is better than
"Fel när ~ skulle skapas"
but we should probably decide on one or the other :).

-- 
Mikael Magnusson

^ permalink raw reply

* Re: [PATCH 0/3] [RFC] Support for publishing projects at central site
From: Petr Baudis @ 2008-09-25 10:24 UTC (permalink / raw)
  To: Peter Krefting; +Cc: git, spearce
In-Reply-To: <Pine.LNX.4.64.0809250951090.5683@ds9.cixit.se>

Hi!

On Thu, Sep 25, 2008 at 09:56:18AM +0100, Peter Krefting wrote:
> pasky@suse.cz:
> 
> > This is not really meant for as-is application, of course, but more
> > to see if people think it is good idea to have this kind of
> > functionality in git-gui at all and how generic it should be. This
> > mini-series depends on pretty much all the other patches I have
> > submitted tonight.
> 
> As long as it is easy to implement the server-side back-end needed to
> automatically accept projects that you publish through this hook, then
> this is something that would really help out in this conext.

Well, the example URL points to a Girocco script - Girocco is cleaned up
and modernized version of the repo.or.cz duct tape, that should be easy
to reconfigure for any kind of deployment and then simply make
install-able. But any kind of CGI script can be in principle hooked up
to this, so you can just write short shell thing that will do the magic
and then

	echo -e 'Content-type: text/plain\n\nRegistration succeeded!'

> I currently need to perform some "magic" on the server-side to set up
> new projects, it would be nice if all the people using it have to do is
> to select a menu option saying "publish". Preferrably through the git
> protocol, so that I don't have to set up ssh on people's machines
> (working in a Windows environment here, so all central repositories are
> set up to use the git protocol for both pull and push).

Which protocol do you use does not really matter, just set up the
locators right (or don't use them if you don't want to). I ended up
using samba exports mapped to Windows drives, but just using the git
protocol might make more sense in many scenarios.

> How do you envision discovering the location to publish to? Some kind
> of automatic configuration option would be nice. Perhaps be able to
> point git gui at some magic URI that would download an XML (or text)
> file describing the central server, perhaps?

I provide customized MSysGit package with tweaked installer and with
custom /etc/gitconfig. I think in these deployments there is either this
possibility or the machines are centrally administrated so the sysadmin
can adjust /etc/gitconfigs.

-- 
				Petr "Pasky" Baudis
People who take cold baths never have rheumatism, but they have
cold baths.

^ permalink raw reply

* Re: On Sponsor Notices
From: Petr Baudis @ 2008-09-25 10:15 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: git, spearce
In-Reply-To: <alpine.LFD.1.10.0809242233360.14631@xanadu.home>

On Wed, Sep 24, 2008 at 10:36:41PM -0400, Nicolas Pitre wrote:
> I'd suggest you do like some people working on the Linux kernel, i.e. 
> use your employer's email address for the Signed-off-by line but use 
> whatever address you prefer for the from/author line.

Even if the employer's email address is basically bogus? Can you point
to some examples of Linux kernel patches doing that, please?

				Petr "Pasky" Baudis

^ permalink raw reply

* [PATCH] graph.c: make many functions static
From: Nanako Shiraishi @ 2008-09-25  9:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

These function are not used anywhere.  Also removes graph_release()
that is never called.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
---
 graph.c |   57 +++++++++++++++++++++++++++++++++++++++++++--------------
 graph.h |   40 ----------------------------------------
 2 files changed, 43 insertions(+), 54 deletions(-)

diff --git a/graph.c b/graph.c
index e2633f8..5f82170 100644
--- a/graph.c
+++ b/graph.c
@@ -4,6 +4,43 @@
 #include "diff.h"
 #include "revision.h"
 
+/* Internal API */
+
+/*
+ * Output the next line for a graph.
+ * This formats the next graph line into the specified strbuf.  It is not
+ * terminated with a newline.
+ *
+ * Returns 1 if the line includes the current commit, and 0 otherwise.
+ * graph_next_line() will return 1 exactly once for each time
+ * graph_update() is called.
+ */
+static int graph_next_line(struct git_graph *graph, struct strbuf *sb);
+
+/*
+ * Output a padding line in the graph.
+ * This is similar to graph_next_line().  However, it is guaranteed to
+ * never print the current commit line.  Instead, if the commit line is
+ * next, it will simply output a line of vertical padding, extending the
+ * branch lines downwards, but leaving them otherwise unchanged.
+ */
+static void graph_padding_line(struct git_graph *graph, struct strbuf *sb);
+
+/*
+ * Print a strbuf to stdout.  If the graph is non-NULL, all lines but the
+ * first will be prefixed with the graph output.
+ *
+ * If the strbuf ends with a newline, the output will end after this
+ * newline.  A new graph line will not be printed after the final newline.
+ * If the strbuf is empty, no output will be printed.
+ *
+ * Since the first line will not include the graph ouput, the caller is
+ * responsible for printing this line's graph (perhaps via
+ * graph_show_commit() or graph_show_oneline()) before calling
+ * graph_show_strbuf().
+ */
+static void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb);
+
 /*
  * TODO:
  * - Add colors to the graph.
@@ -180,14 +217,6 @@ struct git_graph *graph_init(struct rev_info *opt)
 	return graph;
 }
 
-void graph_release(struct git_graph *graph)
-{
-	free(graph->columns);
-	free(graph->new_columns);
-	free(graph->mapping);
-	free(graph);
-}
-
 static void graph_update_state(struct git_graph *graph, enum graph_state s)
 {
 	graph->prev_state = graph->state;
@@ -685,7 +714,7 @@ static void graph_output_commit_char(struct git_graph *graph, struct strbuf *sb)
 	strbuf_addch(sb, '*');
 }
 
-void graph_output_commit_line(struct git_graph *graph, struct strbuf *sb)
+static void graph_output_commit_line(struct git_graph *graph, struct strbuf *sb)
 {
 	int seen_this = 0;
 	int i, j;
@@ -760,7 +789,7 @@ void graph_output_commit_line(struct git_graph *graph, struct strbuf *sb)
 		graph_update_state(graph, GRAPH_COLLAPSING);
 }
 
-void graph_output_post_merge_line(struct git_graph *graph, struct strbuf *sb)
+static void graph_output_post_merge_line(struct git_graph *graph, struct strbuf *sb)
 {
 	int seen_this = 0;
 	int i, j;
@@ -801,7 +830,7 @@ void graph_output_post_merge_line(struct git_graph *graph, struct strbuf *sb)
 		graph_update_state(graph, GRAPH_COLLAPSING);
 }
 
-void graph_output_collapsing_line(struct git_graph *graph, struct strbuf *sb)
+static void graph_output_collapsing_line(struct git_graph *graph, struct strbuf *sb)
 {
 	int i;
 	int *tmp_mapping;
@@ -906,7 +935,7 @@ void graph_output_collapsing_line(struct git_graph *graph, struct strbuf *sb)
 		graph_update_state(graph, GRAPH_PADDING);
 }
 
-int graph_next_line(struct git_graph *graph, struct strbuf *sb)
+static int graph_next_line(struct git_graph *graph, struct strbuf *sb)
 {
 	switch (graph->state) {
 	case GRAPH_PADDING:
@@ -933,7 +962,7 @@ int graph_next_line(struct git_graph *graph, struct strbuf *sb)
 	return 0;
 }
 
-void graph_padding_line(struct git_graph *graph, struct strbuf *sb)
+static void graph_padding_line(struct git_graph *graph, struct strbuf *sb)
 {
 	int i, j;
 
@@ -1055,7 +1084,7 @@ int graph_show_remainder(struct git_graph *graph)
 }
 
 
-void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb)
+static void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb)
 {
 	char *p;
 
diff --git a/graph.h b/graph.h
index eab4e3d..bc30d68 100644
--- a/graph.h
+++ b/graph.h
@@ -11,11 +11,6 @@ struct git_graph;
 struct git_graph *graph_init(struct rev_info *opt);
 
 /*
- * Destroy a struct git_graph and free associated memory.
- */
-void graph_release(struct git_graph *graph);
-
-/*
  * Update a git_graph with a new commit.
  * This will cause the graph to begin outputting lines for the new commit
  * the next time graph_next_line() is called.
@@ -27,26 +22,6 @@ void graph_release(struct git_graph *graph);
 void graph_update(struct git_graph *graph, struct commit *commit);
 
 /*
- * Output the next line for a graph.
- * This formats the next graph line into the specified strbuf.  It is not
- * terminated with a newline.
- *
- * Returns 1 if the line includes the current commit, and 0 otherwise.
- * graph_next_line() will return 1 exactly once for each time
- * graph_update() is called.
- */
-int graph_next_line(struct git_graph *graph, struct strbuf *sb);
-
-/*
- * Output a padding line in the graph.
- * This is similar to graph_next_line().  However, it is guaranteed to
- * never print the current commit line.  Instead, if the commit line is
- * next, it will simply output a line of vertical padding, extending the
- * branch lines downwards, but leaving them otherwise unchanged.
- */
-void graph_padding_line(struct git_graph *graph, struct strbuf *sb);
-
-/*
  * Determine if a graph has finished outputting lines for the current
  * commit.
  *
@@ -90,21 +65,6 @@ void graph_show_padding(struct git_graph *graph);
 int graph_show_remainder(struct git_graph *graph);
 
 /*
- * Print a strbuf to stdout.  If the graph is non-NULL, all lines but the
- * first will be prefixed with the graph output.
- *
- * If the strbuf ends with a newline, the output will end after this
- * newline.  A new graph line will not be printed after the final newline.
- * If the strbuf is empty, no output will be printed.
- *
- * Since the first line will not include the graph ouput, the caller is
- * responsible for printing this line's graph (perhaps via
- * graph_show_commit() or graph_show_oneline()) before calling
- * graph_show_strbuf().
- */
-void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb);
-
-/*
  * Print a commit message strbuf and the remainder of the graph to stdout.
  *
  * This is similar to graph_show_strbuf(), but it always prints the
-- 
1.6.0.2

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

^ permalink raw reply related

* [PATCH] usage.c: remove unused functions
From: Nanako Shiraishi @ 2008-09-25  9:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

This removes three functions that are not used anywhere.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
---
 git-compat-util.h |    3 ---
 usage.c           |   16 ----------------
 2 files changed, 0 insertions(+), 19 deletions(-)

diff --git a/git-compat-util.h b/git-compat-util.h
index db2836f..2ac832f 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -154,10 +154,7 @@ extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1,
 extern int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
 extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)));
 
-extern void set_usage_routine(void (*routine)(const char *err) NORETURN);
 extern void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN);
-extern void set_error_routine(void (*routine)(const char *err, va_list params));
-extern void set_warn_routine(void (*routine)(const char *warn, va_list params));
 
 extern int prefixcmp(const char *str, const char *prefix);
 extern time_t tm_to_time_t(const struct tm *tm);
diff --git a/usage.c b/usage.c
index a5fc4ec..24f5fc0 100644
--- a/usage.c
+++ b/usage.c
@@ -41,27 +41,11 @@ static void (*die_routine)(const char *err, va_list params) NORETURN = die_built
 static void (*error_routine)(const char *err, va_list params) = error_builtin;
 static void (*warn_routine)(const char *err, va_list params) = warn_builtin;
 
-void set_usage_routine(void (*routine)(const char *err) NORETURN)
-{
-	usage_routine = routine;
-}
-
 void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN)
 {
 	die_routine = routine;
 }
 
-void set_error_routine(void (*routine)(const char *err, va_list params))
-{
-	error_routine = routine;
-}
-
-void set_warn_routine(void (*routine)(const char *warn, va_list params))
-{
-	warn_routine = routine;
-}
-
-
 void usage(const char *err)
 {
 	usage_routine(err);

-- 
1.6.0.2

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

^ permalink raw reply related

* [PATCH] remote.c: make free_ref(), parse_push_refspec() and free_refspecs() static.
From: Nanako Shiraishi @ 2008-09-25  9:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

These functions are not used by any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
---
 remote.c |    6 +++---
 remote.h |    2 --
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/remote.c b/remote.c
index 3f3c789..c45d96e 100644
--- a/remote.c
+++ b/remote.c
@@ -455,7 +455,7 @@ static int verify_refname(char *name, int is_glob)
  *          and dst pointers are always freeable pointers as well
  *          as the refspec pointer itself.
  */
-void free_refspecs(struct refspec *refspec, int nr_refspec)
+static void free_refspecs(struct refspec *refspec, int nr_refspec)
 {
 	int i;
 
@@ -613,7 +613,7 @@ struct refspec *parse_fetch_refspec(int nr_refspec, const char **refspec)
 	return parse_refspec_internal(nr_refspec, refspec, 1, 0);
 }
 
-struct refspec *parse_push_refspec(int nr_refspec, const char **refspec)
+static struct refspec *parse_push_refspec(int nr_refspec, const char **refspec)
 {
 	return parse_refspec_internal(nr_refspec, refspec, 0, 0);
 }
@@ -783,7 +783,7 @@ struct ref *copy_ref_list(const struct ref *ref)
 	return ret;
 }
 
-void free_ref(struct ref *ref)
+static void free_ref(struct ref *ref)
 {
 	if (!ref)
 		return;
diff --git a/remote.h b/remote.h
index 2601f6e..c6163ff 100644
--- a/remote.h
+++ b/remote.h
@@ -77,8 +77,6 @@ void ref_remove_duplicates(struct ref *ref_map);
 
 int valid_fetch_refspec(const char *refspec);
 struct refspec *parse_fetch_refspec(int nr_refspec, const char **refspec);
-struct refspec *parse_push_refspec(int nr_refspec, const char **refspec);
-void free_refspecs(struct refspec *refspec, int nr_refspec);
 
 int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
 	       int nr_refspec, const char **refspec, int all);
-- 
1.6.0.2

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

^ permalink raw reply related

* Re: [PATCH 0/3] [RFC] Support for publishing projects at central site
From: Peter Krefting @ 2008-09-25  8:56 UTC (permalink / raw)
  To: pasky; +Cc: git, spearce
In-Reply-To: <20080924235734.697978308@suse.cz>

Hi!

pasky@suse.cz:

> This is not really meant for as-is application, of course, but more
> to see if people think it is good idea to have this kind of
> functionality in git-gui at all and how generic it should be. This
> mini-series depends on pretty much all the other patches I have
> submitted tonight.

As long as it is easy to implement the server-side back-end needed to
automatically accept projects that you publish through this hook, then
this is something that would really help out in this conext.

I currently need to perform some "magic" on the server-side to set up
new projects, it would be nice if all the people using it have to do is
to select a menu option saying "publish". Preferrably through the git
protocol, so that I don't have to set up ssh on people's machines
(working in a Windows environment here, so all central repositories are
set up to use the git protocol for both pull and push).


How do you envision discovering the location to publish to? Some kind
of automatic configuration option would be nice. Perhaps be able to
point git gui at some magic URI that would download an XML (or text)
file describing the central server, perhaps?

-- 
\\// Peter - http://www.softwolves.pp.se/

^ permalink raw reply

* Re: [PATCH] gitk: Update swedish translation.
From: Peter Krefting @ 2008-09-25  8:43 UTC (permalink / raw)
  To: Mikael Magnusson; +Cc: Paul Mackerras, Git Mailing List
In-Reply-To: <237967ef0809240746n25c74e9ambb2c512e96e006ca@mail.gmail.com>

Hi!
Mikael Magnusson:

Your mail came out weird without line-breaks here, trying to recover
your comments... :-)

> Here I just looked at the form of the english phrase (no "the"),but I
> agree the determined form is more natural.

English often skips the "the" to make the text smaller, but it looks
strange in Swedish (see the tp-sv list archives for various discussions
about this).

> This is sort of incorrect, since there was an error the directory
> was presumably never created.

Ah, yes.

> Btw, according to google code search, the common case seems to be
> what I wrote, though I didn't check before writing
> it:
> http://www.google.com/codesearch?hl=en&lr=&q=error+creating.*directory+file%3Asv%5C.po&sbtn=Search
> How about "Fel vid skapande av den tillfälliga katalogen %s:"?

That is back to the -ande form. It's not wrong, per se, it just doesn't
look that good (IMHO at least).

> Seems to be an error while blaming, in a pop up, so it should be fine I think?

Yeah.

-- 
\\// Peter - http://www.softwolves.pp.se/

^ permalink raw reply

* [JGIT PATCH] Add tests for handling of parsing errors in OpenSshConfig
From: Jonas Fonseca @ 2008-09-25  8:39 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Robin Rosenberg, sverre, git
In-Reply-To: <20080924233104.GG3669@spearce.org>

Badly quoted entries are now ignored similar to how bad port number are
currently ignored. A check for negative port numbers is now performed
so that they also will be ignored.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
---
 .../spearce/jgit/transport/OpenSshConfigTest.java  |   32 +++++++++++++++---
 .../org/spearce/jgit/transport/OpenSshConfig.java  |   34 +++++++++++++++----
 2 files changed, 53 insertions(+), 13 deletions(-)

 Shawn O. Pearce <spearce@spearce.org> wrote Wed, Sep 24, 2008:
 > Jonas Fonseca <fonseca@diku.dk> wrote:
 > > I propose to simply remove these hosts from the host map and clear
 > > the current host list so that no values will be saved, effectively
 > > causing invalid hosts to result in the same as unknown hosts.
 > 
 > Yea, that seems quite reasonable.
 > 
 > If you want more debugging than that on your ~/.ssh/config file then
 > run OpenSSH tools on it.  Hell, I can't count the number of times
 > I've made typos in there and couldn't figure out why it was still
 > asking for a password, etc.  And that's just the OpenSSH command
 > line tools.

 Heh, so below makes JGit compatible with OpenSSH's silent treatment. I
 also fixed the .ssh/config parser to ignore negative port numbers.

diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/transport/OpenSshConfigTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/transport/OpenSshConfigTest.java
index ad6e79c..ccd7400 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/transport/OpenSshConfigTest.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/transport/OpenSshConfigTest.java
@@ -114,11 +114,7 @@ config("Host \"good\"\n" +
 			" Port=\"2222\"\n" +
 			"Host \"spaced\"\n" +
 			"# Bad host name, but testing preservation of spaces\n" +
-			" HostName=\" spaced\ttld \"\n" +
-			"# Misbalanced quotes\n" +
-			"Host \"bad\"\n" +
-			"# OpenSSH doesn't allow this but ...\n" +
-			" HostName=bad.tld\"\n");
+			" HostName=\" spaced\ttld \"\n");
 		assertEquals("good.tld", osc.lookup("good").getHostName());
 		assertEquals("gooduser", osc.lookup("good").getUser());
 		assertEquals(6007, osc.lookup("good").getPort());
@@ -128,7 +124,31 @@ config("Host \"good\"\n" +
 		assertEquals(2222, osc.lookup("unquoted").getPort());
 		assertEquals(2222, osc.lookup("hosts").getPort());
 		assertEquals(" spaced\ttld ", osc.lookup("spaced").getHostName());
-		assertEquals("bad.tld\"", osc.lookup("bad").getHostName());
+	}
+
+	public void testParsingErrors() throws Exception {
+		config("Host negativeportnumber\n" +
+		       "Port -200\n" +
+		       "Host badportnumber\n" +
+		       "Port twentytwo\n" +
+		       "Host badportquote\n" +
+		       "Port \"2222\n" +
+		       "Host badportquote2\n" +
+		       "Port 2222\"\n" +
+		       "# Misbalanced quotes\n" +
+		       "Host badly \"quoted\n" +
+		       "HostName=unknown\n");
+
+		assertEquals(DefaultSshSessionFactory.SSH_PORT,
+			     osc.lookup("negativeportnumber").getPort());
+		assertEquals(DefaultSshSessionFactory.SSH_PORT,
+			     osc.lookup("badportnumber").getPort());
+		assertEquals(DefaultSshSessionFactory.SSH_PORT,
+			     osc.lookup("badportquote").getPort());
+		assertEquals(DefaultSshSessionFactory.SSH_PORT,
+			     osc.lookup("badportquote2").getPort());
+		assertNotSame("unknown", osc.lookup("badly").getHostName());
+		assertNotSame("unknown", osc.lookup("\"quoted"));
 	}
 
 	public void testAlias_DoesNotMatch() throws Exception {
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/OpenSshConfig.java b/org.spearce.jgit/src/org/spearce/jgit/transport/OpenSshConfig.java
index b08d5c6..6a3f2c1 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/OpenSshConfig.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/OpenSshConfig.java
@@ -46,6 +46,7 @@
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -175,6 +176,15 @@ public Host lookup(final String hostName) {
 				current.clear();
 				for (final String pattern : argValue.split("[ \t]")) {
 					final String name = dequote(pattern);
+					if (name == null) {
+						/* Prune all the current hosts. */
+						Iterator<Host> it = m.values().iterator();
+						while (it.hasNext())
+							if (current.contains(it.next()))
+								it.remove();
+						current.clear();
+						break;
+					}
 					Host c = m.get(name);
 					if (c == null) {
 						c = new Host();
@@ -192,17 +202,23 @@ public Host lookup(final String hostName) {
 				continue;
 			}
 
+			final String value = dequote(argValue);
+			if (value == null)
+				continue;
+
 			if ("HostName".equalsIgnoreCase(keyword)) {
 				for (final Host c : current)
 					if (c.hostName == null)
-						c.hostName = dequote(argValue);
+						c.hostName = value;
 			} else if ("User".equalsIgnoreCase(keyword)) {
 				for (final Host c : current)
 					if (c.user == null)
-						c.user = dequote(argValue);
+						c.user = value;
 			} else if ("Port".equalsIgnoreCase(keyword)) {
 				try {
-					final int port = Integer.parseInt(dequote(argValue));
+					final int port = Integer.parseInt(value);
+					if (port < 0)
+						continue;
 					for (final Host c : current)
 						if (c.port == 0)
 							c.port = port;
@@ -212,15 +228,15 @@ public Host lookup(final String hostName) {
 			} else if ("IdentityFile".equalsIgnoreCase(keyword)) {
 				for (final Host c : current)
 					if (c.identityFile == null)
-						c.identityFile = toFile(dequote(argValue));
+						c.identityFile = toFile(value);
 			} else if ("PreferredAuthentications".equalsIgnoreCase(keyword)) {
 				for (final Host c : current)
 					if (c.preferredAuthentications == null)
-						c.preferredAuthentications = nows(dequote(argValue));
+						c.preferredAuthentications = nows(value);
 			} else if ("BatchMode".equalsIgnoreCase(keyword)) {
 				for (final Host c : current)
 					if (c.batchMode == null)
-						c.batchMode = yesno(dequote(argValue));
+						c.batchMode = yesno(value);
 			}
 		}
 
@@ -243,8 +259,12 @@ private static boolean isHostMatch(final String pattern, final String name) {
 	}
 
 	private static String dequote(final String value) {
-		if (value.startsWith("\"") && value.endsWith("\""))
+		final boolean hasStart = value.startsWith("\"");
+		final boolean hasEnd = value.endsWith("\"");
+		if (hasStart && hasEnd)
 			return value.substring(1, value.length() - 1);
+		if (hasStart || hasEnd)
+			return null;
 		return value;
 	}
 
-- 
tg: (cf67dfc..) jf/opensshconfigquote (depends on: master)

-- 
Jonas Fonseca

^ permalink raw reply related

* [PATCH] checkout: Do not show local changes when in quiet mode
From: Jonas Fonseca @ 2008-09-25  8:35 UTC (permalink / raw)
  To: Shawn O. Pearce, git

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
---
 builtin-checkout.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

 I noticed this while using topgit which checkouts out a detached head
 with the -q flag and later does a final checkout, which caused local
 changes to be shown twice.

diff --git a/builtin-checkout.c b/builtin-checkout.c
index 9aeb61d..b572b3b 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -461,7 +461,7 @@ static int merge_working_tree(struct checkout_opts *opts,
 	    commit_locked_index(lock_file))
 		die("unable to write new index file");
 
-	if (!opts->force)
+	if (!opts->force && !opts->quiet)
 		show_local_changes(&new->commit->object);
 
 	return 0;
-- 
tg: (47a765d..) jf/checkout-quiet (depends on: next)

-- 
Jonas Fonseca

^ permalink raw reply related

* Re: stg 0.14.3 breakage on push after moving hunk
From: Karl Hasselström @ 2008-09-25  8:37 UTC (permalink / raw)
  To: Yann Dirson; +Cc: Catalin Marinas, GIT list
In-Reply-To: <20080925075732.GA17458@nan92-1-81-57-214-146.fbx.proxad.net>

On 2008-09-25 09:57:32 +0200, Yann Dirson wrote:

> Thanks, it does fix the exception - I feel a bit ashamed of not
> having looked at the code myself ;)

:-)

> Nevertheless, that error was only hiding another more annoying
> problem:
>
> $ ../stgit/stg push
> Checking for changes in the working directory ... done
> Pushing patch "factorize" ...
>   Error: File "t/t4030-diff-rename-factorize.sh" added in both, permissions conflict
>   Error: The merge failed during "push".  
>          Use "refresh" after fixing the conflicts or revert the operation with "push --undo".
>   stg push: GIT index merging failed (possible conflicts)
> $ md5sum t/t4030-diff-rename-factorize.sh*
> cc313acd2824036556128b3e0879dd07  t/t4030-diff-rename-factorize.sh
> cc313acd2824036556128b3e0879dd07  t/t4030-diff-rename-factorize.sh.current
> cc313acd2824036556128b3e0879dd07  t/t4030-diff-rename-factorize.sh.patched
>
> AFAICT, adding the same file in 2 branches used not to produce a
> conflict at all. Is that intended ?

"permissions conflict" sounds like it was added with the exec bit in
one branch, and without in the other. Is that right? And

  1. Does it work if there's no permissions conflict?

  2. Did it work before if there was a permissions conflict?

Just a guess, but it's entirely plausible that this case never worked,
and you're the first to hit it.

-- 
Karl Hasselström, kha@treskal.com
      www.treskal.com/kalle

^ permalink raw reply

* Re: stg 0.14.3 breakage on push after moving hunk
From: Yann Dirson @ 2008-09-25  7:57 UTC (permalink / raw)
  To: Karl Hasselström; +Cc: Catalin Marinas, GIT list
In-Reply-To: <20080925072322.GA27632@diana.vm.bytemark.co.uk>

On Thu, Sep 25, 2008 at 09:23:22AM +0200, Karl Hasselström wrote:
> > TypeError: not all arguments converted during string formatting
> 
> No, but try this ...

Thanks, it does fix the exception - I feel a bit ashamed of not having
looked at the code myself ;)

Nevertheless, that error was only hiding another more annoying problem:

$ ../stgit/stg push
Checking for changes in the working directory ... done
Pushing patch "factorize" ...
  Error: File "t/t4030-diff-rename-factorize.sh" added in both, permissions conflict
  Error: The merge failed during "push".  
         Use "refresh" after fixing the conflicts or revert the operation with "push --undo".
  stg push: GIT index merging failed (possible conflicts)
$ md5sum t/t4030-diff-rename-factorize.sh*
cc313acd2824036556128b3e0879dd07  t/t4030-diff-rename-factorize.sh
cc313acd2824036556128b3e0879dd07  t/t4030-diff-rename-factorize.sh.current
cc313acd2824036556128b3e0879dd07  t/t4030-diff-rename-factorize.sh.patched

AFAICT, adding the same file in 2 branches used not to produce a
conflict at all.  Is that intended ?

Best regards,
-- 
Yann

^ permalink raw reply

* Re: externals program, way to do svn:externals-like subproject management without git-submodule
From: Miles Georgi @ 2008-09-25  7:37 UTC (permalink / raw)
  To: Avery Pennarun; +Cc: Git List
In-Reply-To: <32541b130809132121g53edc7b2k6b6b87c401bb704f@mail.gmail.com>

Avery, and anybody else who might be interested:

I have released a new version of externals which uses the format
recommended by Avery.

That should make it easier to add new features, such as the ones
mentioned in Avery's email.  I've switched some of my projects to it
and it seems to be working fine.
I've bumped the version to 0.1.0 to signify a more betaish stage :)

Miles

On Sat, Sep 13, 2008 at 9:21 PM, Avery Pennarun <apenwarr@gmail.com> wrote:
> On Sat, Sep 13, 2008 at 9:06 PM, Miles Georgi <azimux@gmail.com> wrote:
>> I'll just answer by numbers, I hope it's not too inconvenient to have
>> to scroll between emails to see which point I'm talking about :/
>
> In general, it's better to use inline quoting.  It's okay if the
> quotes get long, because long messages are manageable, but messages
> that require you to look at *other* messages at the same time are just
> a PITA.  Luckily, however, I at least remember what we're talking
> about :)
>
>> 1.  Oh, I'm not really aware of what "cvs export" does.  I assumed it
>> meant something very similar to "svn export"  Running "ext export URL"
>> on a project manage by subversion with all the subprojects managed by
>> subversion simply runs "svn export URL" followed by an "svn export"
>> for each subproject, hence the name.  Calling it "shallow" makes sense
>> for git since I'm using --depth 1, but since "svn export" doesn't
>> create the .svn directories necessary to make it a working directory,
>> I don't really know if I would call that shallow.  For git's
>> implementation of export, I was thinking of just doing a clone and
>> then deleting .git/ which also wouldn't be shallow.
>
> Aha, sorry.  In that case, it does do exactly what cvs export and svn
> export do, so I take it back.  I would never use it (because I always
> deploy my .git directories along with the app itself... free
> backups!).  But the name is correct.
>
>> 3.  I am also bothered by the inconsistency of the meaning of [main]
>> and [git/svn] along with everything you pointed out.
>>
>> Question?  Is it okay to have "/" characters in the ini section name?
>
> Yes.  In general, a section name can have anything except a ] in it,
> and a key can have anything but an = in it.  (Well, obviously we
> should expect that there are no CR, LF, or NUL characters either.)
>
> If you want to do it exactly like git, you would name your sections like
>
>   [ext "libs/my/plugin"]
>
> instead of my earlier suggestion of
>
>  [libs/my/plugin]
>
> This would be compatible with git-config.  Also, this method means
> that the [main] section could never be confused with a particular ext
> section.
>
>> I wonder if it would be okay to just put the repository
>> as the section name.  That way scm and path could be excluded for
>> situations where the defaults are sufficient.  Although I guess this
>> would have the implication of changing a projects repository
>> (something that happens way more frequently than changing the path
>> it's installed to) some what messy since it's being identified by its
>> repository.
>
> I think you answered your own question there :)  Personally, it feels
> natural to me to index a submodule by its local path, and have the URL
> be an attribute of that submodule, rather than the other way around.
> This makes sense since every local path can only have one submodule on
> it, while in insane situations, you can imagine having exactly the
> same repo (perhaps different revisions or branches?) cloned into two
> different locations.
>
>> But yeah, if this feature makes somebody nervous, they can just always
>> explicitly give the path (which they'll have to do if it's not a rails
>> app.)  It also detects that it's a rails app so it will complain if
>> you leave the path off in a non-rails app.  It won't try to put
>> something in vendor/plugins of a non-rails app just because a path is
>> missing.
>
> Okay, if it's not in rails mode, I guess it won't cause problems... as
> long as the rails auto-detection is extremely reliable and can be
> turned off somehow.
>
>> 5.  Yeah that's a good idea.  I could create a command that adds an
>> existing subproject to the .externals and updates the ignore properly.
>>  To get this effect at the moment, one would manually add the
>> subproject to .externals and run "ext update_ignore"  I personally
>> don't usually find myself doing this though.  I almost always want the
>> subproject to be added to the project.  I need to make an "ext
>> uninstall" for backing out if you don't like it.  I personally would
>> rather manually remove the item from .externals than have to issue two
>> commands to install it.  But your idea of a save command is very
>> powerful, especially with the branch switching ideas you have in #8
>> below.
>
> Right, it wouldn't matter which way you did it, but the other options
> below fit really nicely into a 'git save' operation.
>
> Also, I personally think it's more elegant to not have to do "undo"
> operations as a normal part of your workflow.  Checkout work work work
> save seems nicer to me than Checkout uninstall work work work.
>
> [nested submodules]
>> 6.  Hey that's a pretty interesting idea!  I hadn't even thought about
>> that as I have not yet personally encountered that use case.  I've
>> been hoping that rails plugins could have their own vendor/plugins
>> directory because if they did I would also use something like that all
>> the time.  This is definitely something that should be implemented at
>> some point.
>
> Well, like I said, I'm doing it right now in one of my projects :)
> But it doesn't have to be a high priority.
>
>> 7.  Agreed (for the most part.)  I almost never want to do this for my
>> own projects as I almost always want the branch tip no matter what.
>> I'd rather run tests and discover that something has broke before
>> deploying than have to go to all my projects and advance the commit
>> manually.
>
> Ouch, I would never want to do it that way!  If my app has been
> deployed for three months and someone reports a minor bug, I just want
> to fix that one bug and redeploy safely and immediately. I certainly
> don't want to risk breaking everything by upgrading a bunch of
> unrelated modules.
>
>> the way I
>> currently have been handling this is by having my own rails repository
>> at git://github.com/azimux/rails.git that I occaisionally will merge
>> rails/rails.git with and run tests for my larger applications.  If I
>> like how it behaves I push the merged tip back out to azimux/rails.git
>> which is what all my projects reference in their .externals file.
>
> This sounds like a convoluted way of just doing what I suggested. :)
>
> Oh, that reminds me of another feature that would be awesome:
> *alternate* repository URLs.  In your example above, let's say you've
> made some rails customizations, anyone cloning your project will have
> to get your version.  But one day, the rails developers merge in your
> changes, so now their primary repo (probably with more bandwidth,
> uptime, etc) will work again.  If the ext lists *all* the repositories
> you might need, ext can just git fetch from all of them, then checkout
> the commit in question, and it will always work.
>
>> And I would definitely not
>> have it disconnected from a branch if it can be avoided.  I guess it
>> would checkout a specific commit but be on a branch, and then if the
>> developer needed to edit the subproject, they would realize it was
>> non-fastforward when they pushed and then do a rebase against the
>> current tip?  I'm not 100% sure how this workflow would normally occur
>> as I've not yet had to rebase anything, and when I was using
>> git-submodule, I would always checkout a branch tip if I had to edit
>> the subproject and then would do a git add submodule/path to point at
>> the new commit when I was done.
>
> It can be simpler than that.  Essentially, what you do is:
>
>   git fetch origin
>   git checkout COMMITID
>   git branch -D BRANCHNAME
>   git checkout -b BRANCHNAME
>
> The first checkout puts you on a disconnected HEAD temporarily, just
> in case you were previously on a branch called BRANCHNAME, which would
> have prevented the "delete branch" operation from working.  Then we
> delete the branch, and recreate it at the new location (COMMITID).
>
> With that in place, git will know how to do everything else
> automatically, but it's up to the user.  You can pull/merge the latest
> changes from another branch, or rebase, etc.
>
> Note that as a safety measure, you probably want to refuse to actually
> do the above if either of:
> a) The git filesystem or index shows uncommitted files
> b) The current git commit != the commit ext thinks is checked out right now.
>
>> 9.  I wasn't planning on having any sort of commit/push-type features
>> since the workflows of the SCMs are different when it comes to
>> commiting/pushing.  For example, if it's a subversion project it needs
>> to do an "svn commit" requiring a log message.  And sometimes I really
>> only want to push a subset of the subprojects that I've modified.
>
> I think it would be really cool if ext could just figure this out.
> For example, it's easy to tell that in svn, your changes have to be
> committed (ie. no dirty tree) and in git, the upstream repo needs to
> contain your commitid (it's been pushed).
>
> If you only want to push a subset of projects, that's fine, but you
> can do it in the individual subdirs by hand anyhow.  On the other
> hand, I'd say you *don't* want to ever push the parent repo without
> first pushing all your changes, particularly if you have the commitid
> encoded in the .externals file, or you'll produce an un-checkout-able
> repository.
>
>> Maybe what I could do is have "ext status" also see if a subproject
>> could be pushed and issue a warning like "<subproject> has commits
>> that are missing from <remote name>.  Did you forget to push?"  This
>> would be unnecessary for subversion managed subprojects as if it's up
>> to date, then it's pushed and vice versa, but for git it would be very
>> helpful for when the status is empty due to commits being performed,
>> but is not yet pushed out to it's origin.
>
> Yes, that would be almost as good.
>
>>  I don't know if I would
>> like it automatically doing the pushing though, but it could be
>> doable, maybe with a command with the name "git" in it to specify it's
>> scm specific, like "ext gitpush" or I could just have an "ext push"
>> that does nothing for svn/cvs projects.
>
> I don't think it should do nothing for svn/cvs projects: it should
> either help you commit, or abort with a helpful message if your repo
> is dirty, or something like that.
>
> Hope this helps.
>
> Have fun,
>
> Avery
>

^ permalink raw reply

* Re: git svn rebase does not call post-update hook
From: Thomas Koch @ 2008-09-25  7:25 UTC (permalink / raw)
  To: Git Mailing List

I think, I've found a kind of answer to my question in this thread:

http://kerneltrap.org/mailarchive/git/2008/8/2/2791714

It says, IMHO,  that it is not intended, to call a hook during git svn
rebase, since git svn commands are always operating on your local repo
and one could easily wrap these commands in a custom script to do
whatever necessary before or after the git svn command.

Am Tuesday 23 September 2008 15:45:46 schrieben Sie:
> Hi,
>
> I've followed a blogpost[1] on how to set up a GIT mirror of a SVN repo.
> It works just fine, only that I've called the post-update hook manually
> so far. It won't get called by "git svn rebase".
> Yes, it is executable.
> Yes, git svn rebase does fetch updates and rebases master.
>
> [1] http://gsocblog.jsharpe.net/archives/12
>
> Thanks for your bandwidth,



-- 
Thomas Koch, Software Developer
http://www.koch.ro

Young Media Concepts GmbH
Sonnenstr. 4
CH-8280 Kreuzlingen
Switzerland

Tel    +41 (0)71 / 508 24 86
Fax    +41 (0)71 / 560 53 89
Mobile +49 (0)170 / 753 89 16
Web    www.ymc.ch

^ permalink raw reply


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