Git development
 help / color / mirror / Atom feed
* [Gitk PATCH 3/6] gitk: regenerated po files
From: Robin Rosenberg @ 2008-10-09  6:09 UTC (permalink / raw)
  To: paulus; +Cc: git, Robin Rosenberg
In-Reply-To: <1223532590-8706-3-git-send-email-robin.rosenberg@dewire.com>

We intend to change the source strings. This is a "null" update
using make update-po to make the real changes easier to see later on.

Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
 po/de.po |  443 ++++++++++++++++++++++++++++---------------------------
 po/es.po |  500 +++++++++++++++++++++++++++++++++-----------------------------
 po/it.po |  489 +++++++++++++++++++++++++++++++++----------------------------
 po/sv.po |  431 +++++++++++++++++++++++++++--------------------------
 4 files changed, 978 insertions(+), 885 deletions(-)

diff --git a/po/de.po b/po/de.po
index 04ee570..af18389 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: git-gui\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-24 22:32+0200\n"
+"POT-Creation-Date: 2008-10-07 23:06+0200\n"
 "PO-Revision-Date: 2008-05-24 22:40+0200\n"
 "Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
 "Language-Team: German\n"
@@ -15,17 +15,17 @@ 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 "Liste der nicht-zusammengeführten Dateien nicht gefunden:"
 
-#: gitk:329
+#: gitk:340
 msgid "No files selected: --merge specified but no files are unmerged."
 msgstr ""
 "Keine Dateien ausgewählt: --merge angegeben, es existieren aber keine nicht-"
 "zusammengeführten Dateien."
 
-#: gitk:332
+#: gitk:343
 msgid ""
 "No files selected: --merge specified but no unmerged files are within file "
 "limit."
@@ -33,257 +33,261 @@ msgstr ""
 "Keine Dateien ausgewähle: --merge angegeben, aber keine nicht-"
 "zusammengeführten Dateien sind in der Dateiauswahl."
 
-#: gitk:354
+#: gitk:365
 msgid "Error executing git log:"
 msgstr "Fehler beim Ausführen von git-log:"
 
-#: gitk:369
+#: gitk:378
 msgid "Reading"
 msgstr "Lesen"
 
-#: gitk:151 gitk:2191
+#: gitk:438 gitk:3459
 msgid "Reading commits..."
 msgstr "Versionen lesen..."
 
-#: gitk:275
-msgid "Can't parse git log output:"
-msgstr "Ausgabe von git-log kann nicht erkannt werden:"
-
-#: gitk:386 gitk:2195
+#: gitk:441 gitk:1528 gitk:3462
 msgid "No commits selected"
 msgstr "Keine Versionen ausgewählt."
 
-#: gitk:500
+#: gitk:1399
+msgid "Can't parse git log output:"
+msgstr "Ausgabe von git-log kann nicht erkannt werden:"
+
+#: gitk:1605
 msgid "No commit information available"
 msgstr "Keine Versionsinformation verfügbar"
 
-#: gitk:599 gitk:621 gitk:1955 gitk:6424 gitk:7924 gitk:8083
+#: gitk:1709 gitk:1731 gitk:3256 gitk:7727 gitk:9256 gitk:9424
 msgid "OK"
 msgstr "Ok"
 
-#: gitk:623 gitk:1956 gitk:6108 gitk:6179 gitk:6276 gitk:6322 gitk:6426
-#: gitk:7925 gitk:8084
+#: gitk:1733 gitk:3257 gitk:7403 gitk:7474 gitk:7577 gitk:7623 gitk:7729
+#: gitk:9257 gitk:9425
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: gitk:661
+#: gitk:1798
 msgid "File"
 msgstr "Datei"
 
-#: gitk:663
+#: gitk:1800
 msgid "Update"
 msgstr "Aktualisieren"
 
-#: gitk:1722
+#: gitk:1801
 msgid "Reload"
 msgstr "Neu laden"
 
-#: gitk:1723
+#: gitk:1802
 msgid "Reread references"
 msgstr "Zweige neu laden"
 
-#: gitk:665
+#: gitk:1803
 msgid "List references"
 msgstr "Zweige/Markierungen auflisten"
 
-#: gitk:666
+#: gitk:1804
 msgid "Quit"
 msgstr "Beenden"
 
-#: gitk:668
+#: gitk:1806
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: gitk:669
+#: gitk:1807
 msgid "Preferences"
 msgstr "Einstellungen"
 
-#: gitk:672 gitk:1892
+#: gitk:1810 gitk:3193
 msgid "View"
 msgstr "Ansicht"
 
-#: gitk:673
+#: gitk:1811
 msgid "New view..."
 msgstr "Neue Ansicht..."
 
-#: gitk:674 gitk:2133 gitk:8723
+#: gitk:1812
 msgid "Edit view..."
 msgstr "Ansicht bearbeiten..."
 
-#: gitk:676 gitk:2134 gitk:8724
+#: gitk:1814
 msgid "Delete view"
 msgstr "Ansicht löschen"
 
-#: gitk:678
+#: gitk:1816
 msgid "All files"
 msgstr "Alle Dateien"
 
-#: gitk:682
+#: gitk:1820
 msgid "Help"
 msgstr "Hilfe"
 
-#: gitk:683 gitk:1317
+#: gitk:1821 gitk:2484
 msgid "About gitk"
 msgstr "Über gitk"
 
-#: gitk:684
+#: gitk:1822
 msgid "Key bindings"
 msgstr "Tastenkürzel"
 
-#: gitk:741
+#: gitk:1879
 msgid "SHA1 ID: "
 msgstr "SHA1:"
 
-#: gitk:1831
+#: gitk:1910
 msgid "Row"
 msgstr "Zeile"
 
-#: gitk:1862
+#: gitk:1941
 msgid "Find"
 msgstr "Suche"
 
-#: gitk:792
+#: gitk:1942
 msgid "next"
 msgstr "nächste"
 
-#: gitk:793
+#: gitk:1943
 msgid "prev"
 msgstr "vorige"
 
-#: gitk:794
+#: gitk:1944
 msgid "commit"
 msgstr "Version nach"
 
-#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369
+#: gitk:1947 gitk:1949 gitk:3614 gitk:3637 gitk:3661 gitk:5547 gitk:5618
 msgid "containing:"
 msgstr "Beschreibung:"
 
-#: gitk:800 gitk:1778 gitk:1783 gitk:2431
+#: gitk:1950 gitk:2951 gitk:2956 gitk:3689
 msgid "touching paths:"
 msgstr "Dateien:"
 
-#: gitk:801 gitk:2436
+#: gitk:1951 gitk:3694
 msgid "adding/removing string:"
 msgstr "Änderungen:"
 
-#: gitk:810 gitk:812
+#: gitk:1960 gitk:1962
 msgid "Exact"
 msgstr "Exakt"
 
-#: gitk:812 gitk:2514 gitk:4274
+#: gitk:1962 gitk:3770 gitk:5515
 msgid "IgnCase"
 msgstr "Kein Groß/Klein"
 
-#: gitk:812 gitk:2405 gitk:2512 gitk:4270
+#: gitk:1962 gitk:3663 gitk:3768 gitk:5511
 msgid "Regexp"
 msgstr "Regexp"
 
-#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436
+#: gitk:1964 gitk:1965 gitk:3789 gitk:3819 gitk:3826 gitk:5638 gitk:5705
 msgid "All fields"
 msgstr "Alle Felder"
 
-#: gitk:815 gitk:2531 gitk:2563 gitk:4336
+#: gitk:1965 gitk:3787 gitk:3819 gitk:5577
 msgid "Headline"
 msgstr "Überschrift"
 
-#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827
+#: gitk:1966 gitk:3787 gitk:5577 gitk:5705 gitk:6106
 msgid "Comments"
 msgstr "Beschreibung"
 
-#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5957
-#: gitk:5972
+#: gitk:1966 gitk:3787 gitk:3791 gitk:3826 gitk:5577 gitk:6042 gitk:7249
+#: gitk:7264
 msgid "Author"
 msgstr "Autor"
 
-#: gitk:816 gitk:2531 gitk:4336 gitk:4765
+#: gitk:1966 gitk:3787 gitk:5577 gitk:6044
 msgid "Committer"
 msgstr "Eintragender"
 
-#: gitk:845
+#: gitk:1995
 msgid "Search"
 msgstr "Suche"
 
-#: gitk:852
+#: gitk:2002
 msgid "Diff"
 msgstr "Vergleich"
 
-#: gitk:854
+#: gitk:2004
 msgid "Old version"
 msgstr "Alte Version"
 
-#: gitk:856
+#: gitk:2006
 msgid "New version"
 msgstr "Neue Version"
 
-#: gitk:858
+#: gitk:2008
 msgid "Lines of context"
 msgstr "Kontextzeilen"
 
-#: gitk:868
+#: gitk:2018
 msgid "Ignore space change"
 msgstr "Leerzeichenänderungen ignorieren"
 
-#: gitk:926
+#: gitk:2076
 msgid "Patch"
 msgstr "Patch"
 
-#: gitk:928
+#: gitk:2078
 msgid "Tree"
 msgstr "Baum"
 
-#: gitk:1053 gitk:1068 gitk:6023
+#: gitk:2204 gitk:2219
 msgid "Diff this -> selected"
 msgstr "Vergleich diese -> gewählte"
 
-#: gitk:1055 gitk:1070 gitk:6024
+#: gitk:2206 gitk:2221
 msgid "Diff selected -> this"
 msgstr "Vergleich gewählte -> diese"
 
-#: gitk:1057 gitk:1072 gitk:6025
+#: gitk:2208 gitk:2223
 msgid "Make patch"
 msgstr "Patch erstellen"
 
-#: gitk:1058 gitk:6163
+#: gitk:2209 gitk:7458
 msgid "Create tag"
 msgstr "Markierung erstellen"
 
-#: gitk:1059 gitk:6256
+#: gitk:2210 gitk:7557
 msgid "Write commit to file"
 msgstr "Version in Datei schreiben"
 
-#: gitk:1060 gitk:6310
+#: gitk:2211 gitk:7611
 msgid "Create new branch"
 msgstr "Neuen Zweig erstellen"
 
-#: gitk:1061
+#: gitk:2212
 msgid "Cherry-pick this commit"
 msgstr "Diese Version pflücken"
 
-#: gitk:1063
+#: gitk:2214
 msgid "Reset HEAD branch to here"
 msgstr "HEAD-Zweig auf diese Version zurücksetzen"
 
-#: gitk:1079
+#: gitk:2230
 msgid "Check out this branch"
 msgstr "Auf diesen Zweig umstellen"
 
-#: gitk:1081
+#: gitk:2232
 msgid "Remove this branch"
 msgstr "Zweig löschen"
 
-#: gitk:1087
+#: gitk:2238
 msgid "Highlight this too"
 msgstr "Diesen auch hervorheben"
 
-#: gitk:1089
+#: gitk:2240
 msgid "Highlight this only"
 msgstr "Nur diesen hervorheben"
 
-#: gitk:2162
+#: gitk:2242
 msgid "External diff"
 msgstr "Externer Vergleich"
 
-#: gitk:2403
+#: gitk:2244
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2485
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -297,431 +301,436 @@ msgstr ""
 "\n"
 "Copyright © 2005-2008 Paul Mackerras\n"
 "\n"
-"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public License"
+"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public "
+"License"
 
-#: gitk:1326 gitk:1387 gitk:6582
+#: gitk:2493 gitk:2554 gitk:7906
 msgid "Close"
 msgstr "Schließen"
 
-#: gitk:1345
+#: gitk:2512
 msgid "Gitk key bindings"
 msgstr "Gitk Tastaturbelegung"
 
-#: gitk:1347
+#: gitk:2514
 msgid "Gitk key bindings:"
 msgstr "Gitk Tastaturbelegung:"
 
-#: gitk:1349
+#: gitk:2516
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tBeenden"
 
-#: gitk:1350
+#: gitk:2517
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Pos1>\t\tZur neuesten Version springen"
 
-#: gitk:1351
+#: gitk:2518
 msgid "<End>\t\tMove to last commit"
 msgstr "<Ende>\t\tZur ältesten Version springen"
 
-#: gitk:1352
+#: gitk:2519
 msgid "<Up>, p, i\tMove up one commit"
 msgstr "<Hoch>, p, i\tNächste neuere Version"
 
-#: gitk:1353
+#: gitk:2520
 msgid "<Down>, n, k\tMove down one commit"
 msgstr "<Runter>, n, k\tNächste ältere Version"
 
-#: gitk:1354
+#: gitk:2521
 msgid "<Left>, z, j\tGo back in history list"
 msgstr "<Links>, z, j\tEine Version zurückgehen"
 
-#: gitk:1355
+#: gitk:2522
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Rechts>, x, l\tEine Version weitergehen"
 
-#: gitk:1356
+#: gitk:2523
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<BildHoch>\tEine Seite nach oben blättern"
 
-#: gitk:1357
+#: gitk:2524
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<BildRunter>\tEine Seite nach unten blättern"
 
-#: gitk:1358
+#: gitk:2525
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Pos1>\tZum oberen Ende der Versionsliste blättern"
 
-#: gitk:1359
+#: gitk:2526
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-Ende>\tZum unteren Ende der Versionsliste blättern"
 
-#: gitk:1360
+#: gitk:2527
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Hoch>\tVersionsliste eine Zeile nach oben blättern"
 
-#: gitk:1361
+#: gitk:2528
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Runter>\tVersionsliste eine Zeile nach unten blättern"
 
-#: gitk:1362
+#: gitk:2529
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-BildHoch>\tVersionsliste eine Seite hoch blättern"
 
-#: gitk:1363
+#: gitk:2530
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-BildRunter>\tVersionsliste eine Seite nach unten blättern"
 
-#: gitk:1364
+#: gitk:2531
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Umschalt-Hoch>\tRückwärts suchen (nach oben; neuere Versionen)"
 
-#: gitk:1365
+#: gitk:2532
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Umschalt-Runter> Suchen (nach unten; ältere Versionen)"
 
-#: gitk:1366
+#: gitk:2533
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Entf>, b\t\tVergleich eine Seite nach oben blättern"
 
-#: gitk:1367
+#: gitk:2534
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Löschtaste>\tVergleich eine Seite nach oben blättern"
 
-#: gitk:1368
+#: gitk:2535
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Leertaste>\tVergleich eine Seite nach unten blättern"
 
-#: gitk:1369
+#: gitk:2536
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tVergleich um 18 Zeilen nach oben (»up«) blättern"
 
-#: gitk:1370
+#: gitk:2537
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tVergleich um 18 Zeilen nach unten (»down«) blättern"
 
-#: gitk:1371
+#: gitk:2538
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tSuchen"
 
-#: gitk:1372
+#: gitk:2539
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tWeitersuchen"
 
-#: gitk:1373
+#: gitk:2540
 msgid "<Return>\tMove to next find hit"
 msgstr "<Eingabetaste>\tWeitersuchen"
 
-#: gitk:1374
+#: gitk:2541
 msgid "/\t\tMove to next find hit, or redo find"
 msgstr "/\t\tWeitersuchen oder neue Suche beginnen"
 
-#: gitk:1375
+#: gitk:2542
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tRückwärts weitersuchen"
 
-#: gitk:1376
+#: gitk:2543
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tVergleich zur nächsten Datei (»file«) blättern"
 
-#: gitk:1377
+#: gitk:2544
 #, tcl-format
 msgid "<%s-S>\t\tSearch for next hit in diff view"
 msgstr "<%s-S>\t\tWeitersuchen im Vergleich"
 
-#: gitk:1378
+#: gitk:2545
 #, tcl-format
 msgid "<%s-R>\t\tSearch for previous hit in diff view"
 msgstr "<%s-R>\t\tRückwärts weitersuchen im Vergleich"
 
-#: gitk:1379
+#: gitk:2546
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-Nummerblock-Plus>\tSchriftgröße vergrößern"
 
-#: gitk:1380
+#: gitk:2547
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-Plus>\tSchriftgröße vergrößern"
 
-#: gitk:1381
+#: gitk:2548
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-Nummernblock-> Schriftgröße verkleinern"
 
-#: gitk:1382
+#: gitk:2549
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-Minus>\tSchriftgröße verkleinern"
 
-#: gitk:1383
+#: gitk:2550
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tAktualisieren"
 
-#: gitk:1896
+#: gitk:3065
+#, fuzzy
+msgid "No such commit"
+msgstr "Keine Änderungen eingetragen"
+
+#: gitk:3197
 msgid "Gitk view definition"
 msgstr "Gitk Ansichten"
 
-#: gitk:1921
+#: gitk:3222
 msgid "Name"
 msgstr "Name"
 
-#: gitk:1924
+#: gitk:3225
 msgid "Remember this view"
 msgstr "Diese Ansicht speichern"
 
-#: gitk:3126
+#: gitk:3229
 msgid "Commits to include (arguments to git log):"
 msgstr "Versionen anzeigen (Argumente von git-log):"
 
-#: gitk:3133
+#: gitk:3236
 msgid "Command to generate more commits to include:"
 msgstr "Versionsliste durch folgendes Kommando erzeugen lassen:"
 
-#: gitk:1942
+#: gitk:3243
 msgid "Enter files and directories to include, one per line:"
 msgstr "Folgende Dateien und Verzeichnisse anzeigen (eine pro Zeile):"
 
-#: gitk:1989
+#: gitk:3290
 msgid "Error in commit selection arguments:"
 msgstr "Fehler in den ausgewählten Versionen:"
 
-#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8689 gitk:8690
+#: gitk:3344 gitk:3396 gitk:3839 gitk:3853 gitk:5057 gitk:10013 gitk:10014
 msgid "None"
 msgstr "Keine"
 
-#: gitk:2531 gitk:4336 gitk:5959 gitk:5974
+#: gitk:3787 gitk:5577 gitk:7251 gitk:7266
 msgid "Date"
 msgstr "Datum"
 
-#: gitk:2531 gitk:4336
+#: gitk:3787 gitk:5577
 msgid "CDate"
 msgstr "Eintragedatum"
 
-#: gitk:2680 gitk:2685
+#: gitk:3936 gitk:3941
 msgid "Descendant"
 msgstr "Abkömmling"
 
-#: gitk:2681
+#: gitk:3937
 msgid "Not descendant"
 msgstr "Nicht Abkömmling"
 
-#: gitk:2688 gitk:2693
+#: gitk:3944 gitk:3949
 msgid "Ancestor"
 msgstr "Vorgänger"
 
-#: gitk:2689
+#: gitk:3945
 msgid "Not ancestor"
 msgstr "Nicht Vorgänger"
 
-#: gitk:2924
+#: gitk:4184
 msgid "Local changes checked in to index but not committed"
 msgstr "Lokale Änderungen bereitgestellt, aber nicht eingetragen"
 
-#: gitk:2954
+#: gitk:4217
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Lokale Änderungen, nicht bereitgestellt"
 
-#: gitk:4305
+#: gitk:5546
 msgid "Searching"
 msgstr "Suchen"
 
-#: gitk:4767
+#: gitk:6046
 msgid "Tags:"
 msgstr "Markierungen:"
 
-#: gitk:4784 gitk:4790 gitk:5952
+#: gitk:6063 gitk:6069 gitk:7244
 msgid "Parent"
 msgstr "Eltern"
 
-#: gitk:4795
+#: gitk:6074
 msgid "Child"
 msgstr "Kind"
 
-#: gitk:4804
+#: gitk:6083
 msgid "Branch"
 msgstr "Zweig"
 
-#: gitk:4807
+#: gitk:6086
 msgid "Follows"
 msgstr "Folgt auf"
 
-#: gitk:4810
+#: gitk:6089
 msgid "Precedes"
 msgstr "Vorgänger von"
 
-#: gitk:5094
+#: gitk:6373
 msgid "Error getting merge diffs:"
 msgstr "Fehler beim Laden des Vergleichs:"
 
-#: gitk:5779
+#: gitk:7077
 msgid "Goto:"
 msgstr "Gehe zu:"
 
-#: gitk:5781
+#: gitk:7079
 msgid "SHA1 ID:"
 msgstr "SHA1-Hashwert:"
 
-#: gitk:5806
+#: gitk:7098
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "Kurzer SHA1-Hashwert »%s« ist mehrdeutig"
 
-#: gitk:5818
+#: gitk:7110
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "SHA1-Hashwert »%s« unbekannt"
 
-#: gitk:5820
+#: gitk:7112
 #, tcl-format
 msgid "Tag/Head %s is not known"
 msgstr "Markierung/Zweig »%s« ist unbekannt"
 
-#: gitk:5962
+#: gitk:7254
 msgid "Children"
 msgstr "Kinder"
 
-#: gitk:6019
+#: gitk:7311
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Zweig »%s« hierher zurücksetzen"
 
-#: gitk:7204
+#: gitk:7313
 msgid "Detached head: can't reset"
 msgstr "Zweigspitze ist abgetrennt: Zurücksetzen nicht möglich"
 
-#: gitk:7236
+#: gitk:7345
 msgid "Top"
 msgstr "Oben"
 
-#: gitk:6051
+#: gitk:7346
 msgid "From"
 msgstr "Von"
 
-#: gitk:6056
+#: gitk:7351
 msgid "To"
 msgstr "bis"
 
-#: gitk:6079
+#: gitk:7374
 msgid "Generate patch"
 msgstr "Patch erstellen"
 
-#: gitk:6081
+#: gitk:7376
 msgid "From:"
 msgstr "Von:"
 
-#: gitk:6090
+#: gitk:7385
 msgid "To:"
 msgstr "bis:"
 
-#: gitk:6099
+#: gitk:7394
 msgid "Reverse"
 msgstr "Umgekehrt"
 
-#: gitk:6101 gitk:6270
+#: gitk:7396 gitk:7571
 msgid "Output file:"
 msgstr "Ausgabedatei:"
 
-#: gitk:6107
+#: gitk:7402
 msgid "Generate"
 msgstr "Erzeugen"
 
-#: gitk:6143
+#: gitk:7438
 msgid "Error creating patch:"
 msgstr "Fehler beim Patch erzeugen:"
 
-#: gitk:6165 gitk:6258 gitk:6312
+#: gitk:7460 gitk:7559 gitk:7613
 msgid "ID:"
 msgstr "ID:"
 
-#: gitk:6174
+#: gitk:7469
 msgid "Tag name:"
 msgstr "Markierungsname:"
 
-#: gitk:6178 gitk:6321
+#: gitk:7473 gitk:7622
 msgid "Create"
 msgstr "Erstellen"
 
-#: gitk:6193
+#: gitk:7488
 msgid "No tag name specified"
 msgstr "Kein Markierungsname angegeben"
 
-#: gitk:6197
+#: gitk:7492
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "Markierung »%s« existiert bereits."
 
-#: gitk:6203
+#: gitk:7498
 msgid "Error creating tag:"
 msgstr "Fehler bei Markierung erstellen:"
 
-#: gitk:6267
+#: gitk:7568
 msgid "Command:"
 msgstr "Kommando:"
 
-#: gitk:6275
+#: gitk:7576
 msgid "Write"
 msgstr "Schreiben"
 
-#: gitk:6291
+#: gitk:7592
 msgid "Error writing commit:"
 msgstr "Fehler beim Schreiben der Version:"
 
-#: gitk:6317
+#: gitk:7618
 msgid "Name:"
 msgstr "Name:"
 
-#: gitk:6336
+#: gitk:7637
 msgid "Please specify a name for the new branch"
 msgstr "Bitte geben Sie einen Namen für den neuen Zweig an."
 
-#: gitk:6365
+#: gitk:7666
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
 msgstr ""
-"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut "
-"eintragen?"
+"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut eintragen?"
 
-#: gitk:6370
+#: gitk:7671
 msgid "Cherry-picking"
 msgstr "Version pflücken"
 
-#: gitk:6382
+#: gitk:7683
 msgid "No changes committed"
 msgstr "Keine Änderungen eingetragen"
 
-#: gitk:6405
+#: gitk:7708
 msgid "Confirm reset"
 msgstr "Zurücksetzen bestätigen"
 
-#: gitk:6407
+#: gitk:7710
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Zweig »%s« auf »%s« zurücksetzen?"
 
-#: gitk:6411
+#: gitk:7714
 msgid "Reset type:"
 msgstr "Art des Zurücksetzens:"
 
-#: gitk:6415
+#: gitk:7718
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Harmlos: Arbeitskopie und Bereitstellung unverändert"
 
-#: gitk:6418
+#: gitk:7721
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr ""
 "Gemischt: Arbeitskopie unverändert,\n"
 "Bereitstellung zurückgesetzt"
 
-#: gitk:6421
+#: gitk:7724
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -729,21 +738,21 @@ msgstr ""
 "Hart: Arbeitskopie und Bereitstellung\n"
 "(Alle lokalen Änderungen werden gelöscht)"
 
-#: gitk:6437
+#: gitk:7740
 msgid "Resetting"
 msgstr "Zurücksetzen"
 
-#: gitk:6494
+#: gitk:7797
 msgid "Checking out"
 msgstr "Umstellen"
 
-#: gitk:6524
+#: gitk:7848
 msgid "Cannot delete the currently checked-out branch"
 msgstr ""
 "Der Zweig, auf den die Arbeitskopie momentan umgestellt ist, kann nicht "
 "gelöscht werden."
 
-#: gitk:6530
+#: gitk:7854
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -752,16 +761,16 @@ msgstr ""
 "Die Versionen auf Zweig »%s« existieren auf keinem anderen Zweig.\n"
 "Zweig »%s« trotzdem löschen?"
 
-#: gitk:6561
+#: gitk:7885
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Markierungen und Zweige: %s"
 
-#: gitk:6575
+#: gitk:7899
 msgid "Filter"
 msgstr "Filtern"
 
-#: gitk:6869
+#: gitk:8193
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -769,125 +778,125 @@ msgstr ""
 "Fehler beim Lesen der Strukturinformationen; Zweige und Vorgänger/Nachfolger "
 "Informationen werden unvollständig sein."
 
-#: gitk:7853
+#: gitk:9179
 msgid "Tag"
 msgstr "Markierung"
 
-#: gitk:7853
+#: gitk:9179
 msgid "Id"
 msgstr "Id"
 
-#: gitk:7893
+#: gitk:9225
 msgid "Gitk font chooser"
 msgstr "Gitk Schriften wählen"
 
-#: gitk:7910
+#: gitk:9242
 msgid "B"
 msgstr "F"
 
-#: gitk:7913
+#: gitk:9245
 msgid "I"
 msgstr "K"
 
-#: gitk:8006
+#: gitk:9338
 msgid "Gitk preferences"
 msgstr "Gitk Einstellungen"
 
-#: gitk:8007
+#: gitk:9339
 msgid "Commit list display options"
 msgstr "Anzeige Versionsliste"
 
-#: gitk:8010
+#: gitk:9342
 msgid "Maximum graph width (lines)"
 msgstr "Maximale Graphenbreite (Zeilen)"
 
-#: gitk:8014
+#: gitk:9346
 #, tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Maximale Graphenbreite (% des Fensters)"
 
-#: gitk:8019
+#: gitk:9351
 msgid "Show local changes"
 msgstr "Lokale Änderungen anzeigen"
 
-#: gitk:8024
+#: gitk:9356
 msgid "Auto-select SHA1"
 msgstr "SHA1-Hashwert automatisch markieren"
 
-#: gitk:8029
+#: gitk:9361
 msgid "Diff display options"
 msgstr "Anzeige Vergleich"
 
-#: gitk:8031
+#: gitk:9363
 msgid "Tab spacing"
 msgstr "Tabulatorbreite"
 
-#: gitk:8035
+#: gitk:9367
 msgid "Display nearby tags"
 msgstr "Naheliegende Überschriften anzeigen"
 
-#: gitk:8040
+#: gitk:9372
 msgid "Limit diffs to listed paths"
 msgstr "Vergleich nur für angezeigte Pfade"
 
-#: gitk:9264
+#: gitk:9379
 msgid "External diff tool"
 msgstr "Externes Vergleich-(Diff-)Programm"
 
-#: gitk:9266
+#: gitk:9381
 msgid "Choose..."
 msgstr "Wählen..."
 
-#: gitk:9271
+#: gitk:9386
 msgid "Colors: press to choose"
 msgstr "Farben: Klicken zum Wählen"
 
-#: gitk:8048
+#: gitk:9389
 msgid "Background"
 msgstr "Hintergrund"
 
-#: gitk:8052
+#: gitk:9393
 msgid "Foreground"
 msgstr "Vordergrund"
 
-#: gitk:8056
+#: gitk:9397
 msgid "Diff: old lines"
 msgstr "Vergleich: Alte Zeilen"
 
-#: gitk:8061
+#: gitk:9402
 msgid "Diff: new lines"
 msgstr "Vergleich: Neue Zeilen"
 
-#: gitk:8066
+#: gitk:9407
 msgid "Diff: hunk header"
 msgstr "Vergleich: Änderungstitel"
 
-#: gitk:8072
+#: gitk:9413
 msgid "Select bg"
 msgstr "Hintergrundfarbe Auswählen"
 
-#: gitk:8076
+#: gitk:9417
 msgid "Fonts: press to choose"
 msgstr "Schriftart: Klicken zum Wählen"
 
-#: gitk:8078
+#: gitk:9419
 msgid "Main font"
 msgstr "Programmschriftart"
 
-#: gitk:8079
+#: gitk:9420
 msgid "Diff display font"
 msgstr "Vergleich"
 
-#: gitk:8080
+#: gitk:9421
 msgid "User interface font"
 msgstr "Beschriftungen"
 
-#: gitk:8096
+#: gitk:9446
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: Farbe wählen für %s"
 
-#: gitk:8477
+#: gitk:9827
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -895,24 +904,24 @@ msgstr ""
 "Gitk läuft nicht mit dieser Version von Tcl/Tk.\n"
 "Gitk benötigt mindestens Tcl/Tk 8.4."
 
-#: gitk:8566
+#: gitk:9919
 msgid "Cannot find a git repository here."
 msgstr "Kein Git-Projektarchiv gefunden."
 
-#: gitk:8570
+#: gitk:9923
 #, tcl-format
 msgid "Cannot find the git directory \"%s\"."
 msgstr "Git-Verzeichnis »%s« wurde nicht gefunden."
 
-#: gitk:8613
+#: gitk:9970
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Mehrdeutige Angabe »%s«: Sowohl Version als auch Dateiname existiert."
 
-#: gitk:8625
+#: gitk:9982
 msgid "Bad arguments to gitk:"
 msgstr "Falsche Kommandozeilen-Parameter für gitk:"
 
-#: gitk:9915
+#: gitk:10042
 msgid "Command line"
 msgstr "Kommandozeile"
diff --git a/po/es.po b/po/es.po
index 2cb1486..620eebd 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gitk\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-13 17:29+0100\n"
+"POT-Creation-Date: 2008-10-07 23:06+0200\n"
 "PO-Revision-Date: 2008-03-25 11:20+0100\n"
 "Last-Translator: Santiago Gala <santiago.gala@gmail.com>\n"
 "Language-Team: Spanish\n"
@@ -16,250 +16,287 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: gitk:111
-msgid "Error executing git rev-list:"
+#: gitk:113
+msgid "Couldn't get list of unmerged files:"
+msgstr "Imposible obtener la lista de archivos pendientes de fusión:"
+
+#: gitk:340
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"No hay archivos seleccionados: se seleccionó la opción --merge pero no hay "
+"archivos pendientes de fusión."
+
+#: gitk:343
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"No hay archivos seleccionados: se seleccionó la opción --merge pero los "
+"archivos especificados no necesitan fusión."
+
+#: gitk:365
+#, fuzzy
+msgid "Error executing git log:"
 msgstr "Error al ejecutar git rev-list:"
 
-#: gitk:124
+#: gitk:378
 msgid "Reading"
 msgstr "Leyendo"
 
-#: gitk:151 gitk:2191
+#: gitk:438 gitk:3459
 msgid "Reading commits..."
 msgstr "Leyendo revisiones..."
 
-#: gitk:275
-msgid "Can't parse git log output:"
-msgstr "Error analizando la salida de git log:"
-
-#: gitk:386 gitk:2195
+#: gitk:441 gitk:1528 gitk:3462
 msgid "No commits selected"
 msgstr "No se seleccionaron revisiones"
 
-#: gitk:500
+#: gitk:1399
+msgid "Can't parse git log output:"
+msgstr "Error analizando la salida de git log:"
+
+#: gitk:1605
 msgid "No commit information available"
 msgstr "Falta información sobre las revisiones"
 
-#: gitk:599 gitk:621 gitk:1955 gitk:6423 gitk:7923 gitk:8082
+#: gitk:1709 gitk:1731 gitk:3256 gitk:7727 gitk:9256 gitk:9424
 msgid "OK"
 msgstr "Aceptar"
 
-#: gitk:623 gitk:1956 gitk:6107 gitk:6178 gitk:6275 gitk:6321 gitk:6425
-#: gitk:7924 gitk:8083
+#: gitk:1733 gitk:3257 gitk:7403 gitk:7474 gitk:7577 gitk:7623 gitk:7729
+#: gitk:9257 gitk:9425
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: gitk:661
+#: gitk:1798
 msgid "File"
 msgstr "Archivo"
 
-#: gitk:663
+#: gitk:1800
 msgid "Update"
 msgstr "Actualizar"
 
-#: gitk:664
+#: gitk:1801
+#, fuzzy
+msgid "Reload"
+msgstr "Leyendo"
+
+#: gitk:1802
 msgid "Reread references"
 msgstr "Releer referencias"
 
-#: gitk:665
+#: gitk:1803
 msgid "List references"
 msgstr "Lista de referencias"
 
-#: gitk:666
+#: gitk:1804
 msgid "Quit"
 msgstr "Salir"
 
-#: gitk:668
+#: gitk:1806
 msgid "Edit"
 msgstr "Editar"
 
-#: gitk:669
+#: gitk:1807
 msgid "Preferences"
 msgstr "Preferencias"
 
-#: gitk:672 gitk:1892
+#: gitk:1810 gitk:3193
 msgid "View"
 msgstr "Vista"
 
-#: gitk:673
+#: gitk:1811
 msgid "New view..."
 msgstr "Nueva vista..."
 
-#: gitk:674 gitk:2133 gitk:8722
+#: gitk:1812
 msgid "Edit view..."
 msgstr "Modificar vista..."
 
-#: gitk:676 gitk:2134 gitk:8723
+#: gitk:1814
 msgid "Delete view"
 msgstr "Eliminar vista"
 
-#: gitk:678
+#: gitk:1816
 msgid "All files"
 msgstr "Todos los archivos"
 
-#: gitk:682
+#: gitk:1820
 msgid "Help"
 msgstr "Ayuda"
 
-#: gitk:683 gitk:1317
+#: gitk:1821 gitk:2484
 msgid "About gitk"
 msgstr "Acerca de gitk"
 
-#: gitk:684
+#: gitk:1822
 msgid "Key bindings"
 msgstr "Combinaciones de teclas"
 
-#: gitk:741
+#: gitk:1879
 msgid "SHA1 ID: "
 msgstr "SHA1 ID: "
 
-#: gitk:791
+#: gitk:1910
+msgid "Row"
+msgstr ""
+
+#: gitk:1941
 msgid "Find"
 msgstr "Buscar"
 
-#: gitk:792
+#: gitk:1942
 msgid "next"
 msgstr "<<"
 
-#: gitk:793
+#: gitk:1943
 msgid "prev"
 msgstr ">>"
 
-#: gitk:794
+#: gitk:1944
 msgid "commit"
 msgstr "revisión"
 
-#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369
+#: gitk:1947 gitk:1949 gitk:3614 gitk:3637 gitk:3661 gitk:5547 gitk:5618
 msgid "containing:"
 msgstr "que contiene:"
 
-#: gitk:800 gitk:1778 gitk:1783 gitk:2431
+#: gitk:1950 gitk:2951 gitk:2956 gitk:3689
 msgid "touching paths:"
 msgstr "que modifica la ruta:"
 
-#: gitk:801 gitk:2436
+#: gitk:1951 gitk:3694
 msgid "adding/removing string:"
 msgstr "que añade/elimina cadena:"
 
-#: gitk:810 gitk:812
+#: gitk:1960 gitk:1962
 msgid "Exact"
 msgstr "Exacto"
 
-#: gitk:812 gitk:2514 gitk:4274
+#: gitk:1962 gitk:3770 gitk:5515
 msgid "IgnCase"
 msgstr "NoMayús"
 
-#: gitk:812 gitk:2405 gitk:2512 gitk:4270
+#: gitk:1962 gitk:3663 gitk:3768 gitk:5511
 msgid "Regexp"
 msgstr "Regex"
 
-#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436
+#: gitk:1964 gitk:1965 gitk:3789 gitk:3819 gitk:3826 gitk:5638 gitk:5705
 msgid "All fields"
 msgstr "Todos los campos"
 
-#: gitk:815 gitk:2531 gitk:2563 gitk:4336
+#: gitk:1965 gitk:3787 gitk:3819 gitk:5577
 msgid "Headline"
 msgstr "Título"
 
-#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827
+#: gitk:1966 gitk:3787 gitk:5577 gitk:5705 gitk:6106
 msgid "Comments"
 msgstr "Comentarios"
 
-#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5956
-#: gitk:5971
+#: gitk:1966 gitk:3787 gitk:3791 gitk:3826 gitk:5577 gitk:6042 gitk:7249
+#: gitk:7264
 msgid "Author"
 msgstr "Autor"
 
-#: gitk:816 gitk:2531 gitk:4336 gitk:4765
+#: gitk:1966 gitk:3787 gitk:5577 gitk:6044
 msgid "Committer"
 msgstr ""
 
-#: gitk:845
+#: gitk:1995
 msgid "Search"
 msgstr "Buscar"
 
-#: gitk:852
+#: gitk:2002
 msgid "Diff"
 msgstr "Diferencia"
 
-#: gitk:854
+#: gitk:2004
 msgid "Old version"
 msgstr "Versión antigua"
 
-#: gitk:856
+#: gitk:2006
 msgid "New version"
 msgstr "Versión nueva"
 
-#: gitk:858
+#: gitk:2008
 msgid "Lines of context"
 msgstr "Líneas de contexto"
 
-#: gitk:868
+#: gitk:2018
 msgid "Ignore space change"
 msgstr "Ignora cambios de espaciado"
 
-#: gitk:926
+#: gitk:2076
 msgid "Patch"
 msgstr "Parche"
 
-#: gitk:928
+#: gitk:2078
 msgid "Tree"
 msgstr "Árbol"
 
-#: gitk:1053 gitk:1068 gitk:6022
+#: gitk:2204 gitk:2219
 msgid "Diff this -> selected"
 msgstr "Diferencia de esta -> seleccionada"
 
-#: gitk:1055 gitk:1070 gitk:6023
+#: gitk:2206 gitk:2221
 msgid "Diff selected -> this"
 msgstr "Diferencia de seleccionada -> esta"
 
-#: gitk:1057 gitk:1072 gitk:6024
+#: gitk:2208 gitk:2223
 msgid "Make patch"
 msgstr "Crear patch"
 
-#: gitk:1058 gitk:6162
+#: gitk:2209 gitk:7458
 msgid "Create tag"
 msgstr "Crear etiqueta"
 
-#: gitk:1059 gitk:6255
+#: gitk:2210 gitk:7557
 msgid "Write commit to file"
 msgstr "Escribir revisiones a archivo"
 
-#: gitk:1060 gitk:6309
+#: gitk:2211 gitk:7611
 msgid "Create new branch"
 msgstr "Crear nueva rama"
 
-#: gitk:1061
+#: gitk:2212
 msgid "Cherry-pick this commit"
 msgstr "Añadir esta revisión a la rama actual (cherry-pick)"
 
-#: gitk:1063
+#: gitk:2214
 msgid "Reset HEAD branch to here"
 msgstr "Traer la rama HEAD aquí"
 
-#: gitk:1079
+#: gitk:2230
 msgid "Check out this branch"
 msgstr "Cambiar a esta rama"
 
-#: gitk:1081
+#: gitk:2232
 msgid "Remove this branch"
 msgstr "Eliminar esta rama"
 
-#: gitk:1087
+#: gitk:2238
 msgid "Highlight this too"
 msgstr "Seleccionar también"
 
-#: gitk:1089
+#: gitk:2240
 msgid "Highlight this only"
 msgstr "Seleccionar sólo"
 
-#: gitk:1318
+#: gitk:2242
+msgid "External diff"
+msgstr ""
+
+#: gitk:2244
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2485
+#, fuzzy
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
 "\n"
-"Copyright © 2005-2006 Paul Mackerras\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
 "\n"
 "Use and redistribute under the terms of the GNU General Public License"
 msgstr ""
@@ -268,424 +305,434 @@ msgstr ""
 "\n"
 "Copyright © 2005-2006 Paul Mackerras\n"
 "\n"
-"Uso y redistribución permitidos según los términos de la Licencia Pública General de "
-"GNU (GNU GPL)"
+"Uso y redistribución permitidos según los términos de la Licencia Pública "
+"General de GNU (GNU GPL)"
 
-#: gitk:1326 gitk:1387 gitk:6581
+#: gitk:2493 gitk:2554 gitk:7906
 msgid "Close"
 msgstr "Cerrar"
 
-#: gitk:1345
+#: gitk:2512
 msgid "Gitk key bindings"
 msgstr "Combinaciones de tecla de Gitk"
 
-#: gitk:1347
+#: gitk:2514
 msgid "Gitk key bindings:"
 msgstr "Combinaciones de tecla de Gitk:"
 
-#: gitk:1349
+#: gitk:2516
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tSalir"
 
-#: gitk:1350
+#: gitk:2517
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Home>\t\tIr a la primera revisión"
 
-#: gitk:1351
+#: gitk:2518
 msgid "<End>\t\tMove to last commit"
 msgstr "<End>\t\tIr a la última revisión"
 
-#: gitk:1352
+#: gitk:2519
 msgid "<Up>, p, i\tMove up one commit"
 msgstr "<Up>, p, i\tSubir una revisión"
 
-#: gitk:1353
+#: gitk:2520
 msgid "<Down>, n, k\tMove down one commit"
 msgstr "<Down>, n, k\tBajar una revisión"
 
-#: gitk:1354
+#: gitk:2521
 msgid "<Left>, z, j\tGo back in history list"
 msgstr "<Left>, z, j\tRetroceder en la historia"
 
-#: gitk:1355
+#: gitk:2522
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Right>, x, l\tAvanzar en la historia"
 
-#: gitk:1356
+#: gitk:2523
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tSubir una página en la lista de revisiones"
 
-#: gitk:1357
+#: gitk:2524
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tBajar una página en la lista de revisiones"
 
-#: gitk:1358
+#: gitk:2525
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Home>\tDesplazarse al inicio de la lista de revisiones"
 
-#: gitk:1359
+#: gitk:2526
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tDesplazarse al final de la lista de revisiones"
 
-#: gitk:1360
+#: gitk:2527
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Up>\tDesplazar una línea hacia arriba la lista de revisiones"
 
-#: gitk:1361
+#: gitk:2528
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Down>\tDesplazar una línea hacia abajo la lista de revisiones"
 
-#: gitk:1362
+#: gitk:2529
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tDesplazar una página hacia arriba la lista de revisiones"
 
-#: gitk:1363
+#: gitk:2530
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tDesplazar una página hacia abajo la lista de revisiones"
 
-#: gitk:1364
+#: gitk:2531
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Shift-Up>\tBuscar hacia atrás (arriba, revisiones siguientes)"
 
-#: gitk:1365
+#: gitk:2532
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Shift-Down>\tBuscar hacia adelante (abajo, revisiones anteriores)"
 
-#: gitk:1366
+#: gitk:2533
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Delete>, b\tDesplaza hacia arriba una página la vista de diferencias"
 
-#: gitk:1367
+#: gitk:2534
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Backspace>\tDesplaza hacia arriba una página la vista de diferencias"
 
-#: gitk:1368
+#: gitk:2535
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Space>\t\tDesplaza hacia abajo una página la vista de diferencias"
 
-#: gitk:1369
+#: gitk:2536
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tDesplaza hacia arriba 18 líneas la vista de diferencias"
 
-#: gitk:1370
+#: gitk:2537
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tDesplaza hacia abajo 18 líneas la vista de diferencias"
 
-#: gitk:1371
+#: gitk:2538
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tBuscar"
 
-#: gitk:1372
+#: gitk:2539
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tBuscar el siguiente"
 
-#: gitk:1373
+#: gitk:2540
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\tBuscar el siguiente"
 
-#: gitk:1374
+#: gitk:2541
 msgid "/\t\tMove to next find hit, or redo find"
 msgstr "/\t\tBuscar el siguiente, o reiniciar la búsqueda"
 
-#: gitk:1375
+#: gitk:2542
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tBuscar el anterior"
 
-#: gitk:1376
+#: gitk:2543
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tDesplazar la vista de diferencias al archivo siguiente"
 
-#: gitk:1377
+#: gitk:2544
 #, tcl-format
 msgid "<%s-S>\t\tSearch for next hit in diff view"
 msgstr "<%s-S>\t\tBuscar siguiente en la vista de diferencias"
 
-#: gitk:1378
+#: gitk:2545
 #, tcl-format
 msgid "<%s-R>\t\tSearch for previous hit in diff view"
 msgstr "<%s-R>\t\tBuscar anterior en la vista de diferencias"
 
-#: gitk:1379
+#: gitk:2546
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-KP+>\tAumentar tamaño del texto"
 
-#: gitk:1380
+#: gitk:2547
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tAumentar tamaño del texto"
 
-#: gitk:1381
+#: gitk:2548
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-KP->\tDisminuir tamaño del texto"
 
-#: gitk:1382
+#: gitk:2549
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tDisminuir tamaño del texto"
 
-#: gitk:1383
+#: gitk:2550
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tActualizar"
 
-#: gitk:1896
+#: gitk:3065
+#, fuzzy
+msgid "No such commit"
+msgstr "No se han guardado cambios"
+
+#: gitk:3197
 msgid "Gitk view definition"
 msgstr "Definición de vistas de Gitk"
 
-#: gitk:1921
+#: gitk:3222
 msgid "Name"
 msgstr "Nombre"
 
-#: gitk:1924
+#: gitk:3225
 msgid "Remember this view"
 msgstr "Recordar esta vista"
 
-#: gitk:1928
-msgid "Commits to include (arguments to git rev-list):"
+#: gitk:3229
+#, fuzzy
+msgid "Commits to include (arguments to git log):"
 msgstr "Revisiones a incluir (argumentos a git rev-list):"
 
-#: gitk:1935
+#: gitk:3236
 msgid "Command to generate more commits to include:"
 msgstr "Comando que genera más revisiones a incluir:"
 
-#: gitk:1942
+#: gitk:3243
 msgid "Enter files and directories to include, one per line:"
 msgstr "Introducir archivos y directorios a incluir, uno por línea:"
 
-#: gitk:1989
+#: gitk:3290
 msgid "Error in commit selection arguments:"
 msgstr "Error en los argumentos de selección de las revisiones:"
 
-#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8688 gitk:8689
+#: gitk:3344 gitk:3396 gitk:3839 gitk:3853 gitk:5057 gitk:10013 gitk:10014
 msgid "None"
 msgstr "Ninguno"
 
-#: gitk:2531 gitk:4336 gitk:5958 gitk:5973
+#: gitk:3787 gitk:5577 gitk:7251 gitk:7266
 msgid "Date"
 msgstr "Fecha"
 
-#: gitk:2531 gitk:4336
+#: gitk:3787 gitk:5577
 msgid "CDate"
 msgstr "Fecha de creación"
 
-#: gitk:2680 gitk:2685
+#: gitk:3936 gitk:3941
 msgid "Descendant"
 msgstr "Descendiente"
 
-#: gitk:2681
+#: gitk:3937
 msgid "Not descendant"
 msgstr "No descendiente"
 
-#: gitk:2688 gitk:2693
+#: gitk:3944 gitk:3949
 msgid "Ancestor"
 msgstr "Antepasado"
 
-#: gitk:2689
+#: gitk:3945
 msgid "Not ancestor"
 msgstr "No antepasado"
 
-#: gitk:2924
+#: gitk:4184
 msgid "Local changes checked in to index but not committed"
 msgstr "Cambios locales añadidos al índice pero sin completar revisión"
 
-#: gitk:2954
+#: gitk:4217
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Cambios locales sin añadir al índice"
 
-#: gitk:4305
+#: gitk:5546
 msgid "Searching"
 msgstr "Buscando"
 
-#: gitk:4767
+#: gitk:6046
 msgid "Tags:"
 msgstr "Etiquetas:"
 
-#: gitk:4784 gitk:4790 gitk:5951
+#: gitk:6063 gitk:6069 gitk:7244
 msgid "Parent"
 msgstr "Padre"
 
-#: gitk:4795
+#: gitk:6074
 msgid "Child"
 msgstr "Hija"
 
-#: gitk:4804
+#: gitk:6083
 msgid "Branch"
 msgstr "Rama"
 
-#: gitk:4807
+#: gitk:6086
 msgid "Follows"
 msgstr "Sigue-a"
 
-#: gitk:4810
+#: gitk:6089
 msgid "Precedes"
 msgstr "Precede-a"
 
-#: gitk:5093
+#: gitk:6373
 msgid "Error getting merge diffs:"
 msgstr "Error al leer las diferencias de fusión:"
 
-#: gitk:5778
+#: gitk:7077
 msgid "Goto:"
 msgstr "Ir a:"
 
-#: gitk:5780
+#: gitk:7079
 msgid "SHA1 ID:"
 msgstr "SHA1 ID:"
 
-#: gitk:5805
+#: gitk:7098
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "La id SHA1 abreviada %s es ambigua"
 
-#: gitk:5817
+#: gitk:7110
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "La id SHA1 %s es desconocida"
 
-#: gitk:5819
+#: gitk:7112
 #, tcl-format
 msgid "Tag/Head %s is not known"
 msgstr "La etiqueta/rama %s es deconocida"
 
-#: gitk:5961
+#: gitk:7254
 msgid "Children"
 msgstr "Hijas"
 
-#: gitk:6018
+#: gitk:7311
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Poner la rama %s en esta revisión"
 
-#: gitk:6049
+#: gitk:7313
+msgid "Detached head: can't reset"
+msgstr ""
+
+#: gitk:7345
 msgid "Top"
 msgstr "Origen"
 
-#: gitk:6050
+#: gitk:7346
 msgid "From"
 msgstr "De"
 
-#: gitk:6055
+#: gitk:7351
 msgid "To"
 msgstr "A"
 
-#: gitk:6078
+#: gitk:7374
 msgid "Generate patch"
 msgstr "Generar parche"
 
-#: gitk:6080
+#: gitk:7376
 msgid "From:"
 msgstr "De:"
 
-#: gitk:6089
+#: gitk:7385
 msgid "To:"
 msgstr "Para:"
 
-#: gitk:6098
+#: gitk:7394
 msgid "Reverse"
 msgstr "Invertir"
 
-#: gitk:6100 gitk:6269
+#: gitk:7396 gitk:7571
 msgid "Output file:"
 msgstr "Escribir a archivo:"
 
-#: gitk:6106
+#: gitk:7402
 msgid "Generate"
 msgstr "Generar"
 
-#: gitk:6142
+#: gitk:7438
 msgid "Error creating patch:"
 msgstr "Error en la creación del parche:"
 
-#: gitk:6164 gitk:6257 gitk:6311
+#: gitk:7460 gitk:7559 gitk:7613
 msgid "ID:"
 msgstr "ID:"
 
-#: gitk:6173
+#: gitk:7469
 msgid "Tag name:"
 msgstr "Nombre de etiqueta:"
 
-#: gitk:6177 gitk:6320
+#: gitk:7473 gitk:7622
 msgid "Create"
 msgstr "Crear"
 
-#: gitk:6192
+#: gitk:7488
 msgid "No tag name specified"
 msgstr "No se ha especificado etiqueta"
 
-#: gitk:6196
+#: gitk:7492
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "La etiqueta \"%s\" ya existe"
 
-#: gitk:6202
+#: gitk:7498
 msgid "Error creating tag:"
 msgstr "Error al crear la etiqueta:"
 
-#: gitk:6266
+#: gitk:7568
 msgid "Command:"
 msgstr "Comando:"
 
-#: gitk:6274
+#: gitk:7576
 msgid "Write"
 msgstr "Escribir"
 
-#: gitk:6290
+#: gitk:7592
 msgid "Error writing commit:"
 msgstr "Error al escribir revisión:"
 
-#: gitk:6316
+#: gitk:7618
 msgid "Name:"
 msgstr "Nombre:"
 
-#: gitk:6335
+#: gitk:7637
 msgid "Please specify a name for the new branch"
 msgstr "Especifique un nombre para la nueva rama"
 
-#: gitk:6364
+#: gitk:7666
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
 msgstr "La revisión %s ya está incluida en la rama %s -- ¿Volver a aplicarla?"
 
-#: gitk:6369
+#: gitk:7671
 msgid "Cherry-picking"
 msgstr "Eligiendo revisiones (cherry-picking)"
 
-#: gitk:6381
+#: gitk:7683
 msgid "No changes committed"
 msgstr "No se han guardado cambios"
 
-#: gitk:6404
+#: gitk:7708
 msgid "Confirm reset"
 msgstr "Confirmar git reset"
 
-#: gitk:6406
+#: gitk:7710
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "¿Reponer la rama %s a %s?"
 
-#: gitk:6410
+#: gitk:7714
 msgid "Reset type:"
 msgstr "Tipo de reposición:"
 
-#: gitk:6414
+#: gitk:7718
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Suave: No altera la copia de trabajo ni el índice"
 
-#: gitk:6417
+#: gitk:7721
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr "Mixta: Actualiza el índice, no altera la copia de trabajo"
 
-#: gitk:6420
+#: gitk:7724
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -693,19 +740,19 @@ msgstr ""
 "Dura: Actualiza el índice y la copia de trabajo\n"
 "(abandona TODAS las modificaciones locales)"
 
-#: gitk:6436
+#: gitk:7740
 msgid "Resetting"
 msgstr "Reponiendo"
 
-#: gitk:6493
+#: gitk:7797
 msgid "Checking out"
 msgstr "Creando copia de trabajo"
 
-#: gitk:6523
+#: gitk:7848
 msgid "Cannot delete the currently checked-out branch"
 msgstr "No se puede borrar la rama actual"
 
-#: gitk:6529
+#: gitk:7854
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -714,134 +761,142 @@ msgstr ""
 "Las revisiones de la rama %s no están presentes en otras ramas.\n"
 "¿Borrar la rama %s?"
 
-#: gitk:6560
+#: gitk:7885
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Etiquetas y ramas: %s"
 
-#: gitk:6574
+#: gitk:7899
 msgid "Filter"
 msgstr "Filtro"
 
-#: gitk:6868
+#: gitk:8193
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
 msgstr ""
-"Error al leer la topología de revisiones: la información sobre "
-"las ramas y etiquetas precedentes y siguientes será incompleta."
+"Error al leer la topología de revisiones: la información sobre las ramas y "
+"etiquetas precedentes y siguientes será incompleta."
 
-#: gitk:7852
+#: gitk:9179
 msgid "Tag"
 msgstr "Etiqueta"
 
-#: gitk:7852
+#: gitk:9179
 msgid "Id"
 msgstr "Id"
 
-#: gitk:7892
+#: gitk:9225
 msgid "Gitk font chooser"
 msgstr "Selector de tipografías gitk"
 
-#: gitk:7909
+#: gitk:9242
 msgid "B"
 msgstr "B"
 
-#: gitk:7912
+#: gitk:9245
 msgid "I"
 msgstr "I"
 
-#: gitk:8005
+#: gitk:9338
 msgid "Gitk preferences"
 msgstr "Preferencias de gitk"
 
-#: gitk:8006
+#: gitk:9339
 msgid "Commit list display options"
 msgstr "Opciones de visualización de la lista de revisiones"
 
-#: gitk:8009
+#: gitk:9342
 msgid "Maximum graph width (lines)"
 msgstr "Ancho máximo del gráfico (en líneas)"
 
-#: gitk:8013
+#: gitk:9346
 #, tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Ancho máximo del gráfico (en % del panel)"
 
-#: gitk:8018
+#: gitk:9351
 msgid "Show local changes"
 msgstr "Mostrar cambios locales"
 
-#: gitk:8023
+#: gitk:9356
 msgid "Auto-select SHA1"
 msgstr "Seleccionar automáticamente SHA1 hash"
 
-#: gitk:8028
+#: gitk:9361
 msgid "Diff display options"
 msgstr "Opciones de visualización de diferencias"
 
-#: gitk:8030
+#: gitk:9363
 msgid "Tab spacing"
 msgstr "Espaciado de tabulador"
 
-#: gitk:8034
+#: gitk:9367
 msgid "Display nearby tags"
 msgstr "Mostrar etiquetas cercanas"
 
-#: gitk:8039
+#: gitk:9372
 msgid "Limit diffs to listed paths"
 msgstr "Limitar las diferencias a las rutas seleccionadas"
 
-#: gitk:8044
+#: gitk:9379
+msgid "External diff tool"
+msgstr ""
+
+#: gitk:9381
+msgid "Choose..."
+msgstr ""
+
+#: gitk:9386
 msgid "Colors: press to choose"
 msgstr "Colores: pulse para seleccionar"
 
-#: gitk:8047
+#: gitk:9389
 msgid "Background"
 msgstr "Fondo"
 
-#: gitk:8051
+#: gitk:9393
 msgid "Foreground"
 msgstr "Primer plano"
 
-#: gitk:8055
+#: gitk:9397
 msgid "Diff: old lines"
 msgstr "Diff: líneas viejas"
 
-#: gitk:8060
+#: gitk:9402
 msgid "Diff: new lines"
 msgstr "Diff: líneas nuevas"
 
-#: gitk:8065
+#: gitk:9407
 msgid "Diff: hunk header"
 msgstr "Diff: cabecera de fragmento"
 
-#: gitk:8071
+#: gitk:9413
 msgid "Select bg"
 msgstr "Color de fondo de la selección"
 
-#: gitk:8075
+#: gitk:9417
 msgid "Fonts: press to choose"
 msgstr "Tipografías: pulse para elegir"
 
-#: gitk:8077
+#: gitk:9419
 msgid "Main font"
 msgstr "Tipografía principal"
 
-#: gitk:8078
+#: gitk:9420
 msgid "Diff display font"
 msgstr "Tipografía para diferencias"
 
-#: gitk:8079
+#: gitk:9421
 msgid "User interface font"
 msgstr "Tipografía para interfaz de usuario"
 
-#: gitk:8095
+#: gitk:9446
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: elegir color para %s"
 
-#: gitk:8476
+#: gitk:9827
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -849,42 +904,25 @@ msgstr ""
 "Esta versión de Tcl/Tk es demasiado antigua.\n"
 " Gitk requiere Tcl/Tk versión 8.4 o superior."
 
-#: gitk:8565
+#: gitk:9919
 msgid "Cannot find a git repository here."
 msgstr "No hay un repositorio git aquí."
 
-#: gitk:8569
+#: gitk:9923
 #, tcl-format
 msgid "Cannot find the git directory \"%s\"."
 msgstr "No hay directorio git \"%s\"."
 
-#: gitk:8612
+#: gitk:9970
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
-msgstr "Argumento ambiguo: '%s' es tanto una revisión como un nombre de archivo"
+msgstr ""
+"Argumento ambiguo: '%s' es tanto una revisión como un nombre de archivo"
 
-#: gitk:8624
+#: gitk:9982
 msgid "Bad arguments to gitk:"
 msgstr "Argumentos incorrectos a Gitk:"
 
-#: gitk:8636
-msgid "Couldn't get list of unmerged files:"
-msgstr "Imposible obtener la lista de archivos pendientes de fusión:"
-
-#: gitk:8652
-msgid "No files selected: --merge specified but no files are unmerged."
-msgstr ""
-"No hay archivos seleccionados: se seleccionó la opción --merge pero no hay "
-"archivos pendientes de fusión."
-
-#: gitk:8655
-msgid ""
-"No files selected: --merge specified but no unmerged files are within file "
-"limit."
-msgstr ""
-"No hay archivos seleccionados: se seleccionó la opción --merge pero los archivos "
-"especificados no necesitan fusión."
-
-#: gitk:8716
+#: gitk:10042
 msgid "Command line"
 msgstr "Línea de comandos"
diff --git a/po/it.po b/po/it.po
index d0f4c2e..15efe29 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gitk\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-13 17:29+0100\n"
+"POT-Creation-Date: 2008-10-07 23:06+0200\n"
 "PO-Revision-Date: 2008-03-13 17:34+0100\n"
 "Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n"
 "Language-Team: Italian\n"
@@ -16,250 +16,287 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: gitk:111
-msgid "Error executing git rev-list:"
+#: gitk:113
+msgid "Couldn't get list of unmerged files:"
+msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:"
+
+#: gitk:340
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"Nessun file selezionato: è stata specificata l'opzione --merge ma non ci "
+"sono file in attesa di fusione."
+
+#: gitk:343
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"Nessun file selezionato: è stata specificata l'opzione --merge ma i file "
+"specificati non sono in attesa di fusione."
+
+#: gitk:365
+#, fuzzy
+msgid "Error executing git log:"
 msgstr "Errore nell'esecuzione di git rev-list:"
 
-#: gitk:124
+#: gitk:378
 msgid "Reading"
 msgstr "Lettura in corso"
 
-#: gitk:151 gitk:2191
+#: gitk:438 gitk:3459
 msgid "Reading commits..."
 msgstr "Lettura delle revisioni in corso..."
 
-#: gitk:275
-msgid "Can't parse git log output:"
-msgstr "Impossibile elaborare i dati di git log:"
-
-#: gitk:386 gitk:2195
+#: gitk:441 gitk:1528 gitk:3462
 msgid "No commits selected"
 msgstr "Nessuna revisione selezionata"
 
-#: gitk:500
+#: gitk:1399
+msgid "Can't parse git log output:"
+msgstr "Impossibile elaborare i dati di git log:"
+
+#: gitk:1605
 msgid "No commit information available"
 msgstr "Nessuna informazione disponibile sulle revisioni"
 
-#: gitk:599 gitk:621 gitk:1955 gitk:6423 gitk:7923 gitk:8082
+#: gitk:1709 gitk:1731 gitk:3256 gitk:7727 gitk:9256 gitk:9424
 msgid "OK"
 msgstr "OK"
 
-#: gitk:623 gitk:1956 gitk:6107 gitk:6178 gitk:6275 gitk:6321 gitk:6425
-#: gitk:7924 gitk:8083
+#: gitk:1733 gitk:3257 gitk:7403 gitk:7474 gitk:7577 gitk:7623 gitk:7729
+#: gitk:9257 gitk:9425
 msgid "Cancel"
 msgstr "Annulla"
 
-#: gitk:661
+#: gitk:1798
 msgid "File"
 msgstr "File"
 
-#: gitk:663
+#: gitk:1800
 msgid "Update"
 msgstr "Aggiorna"
 
-#: gitk:664
+#: gitk:1801
+#, fuzzy
+msgid "Reload"
+msgstr "Lettura in corso"
+
+#: gitk:1802
 msgid "Reread references"
 msgstr "Rileggi riferimenti"
 
-#: gitk:665
+#: gitk:1803
 msgid "List references"
 msgstr "Elenca riferimenti"
 
-#: gitk:666
+#: gitk:1804
 msgid "Quit"
 msgstr "Esci"
 
-#: gitk:668
+#: gitk:1806
 msgid "Edit"
 msgstr "Modifica"
 
-#: gitk:669
+#: gitk:1807
 msgid "Preferences"
 msgstr "Preferenze"
 
-#: gitk:672 gitk:1892
+#: gitk:1810 gitk:3193
 msgid "View"
 msgstr "Vista"
 
-#: gitk:673
+#: gitk:1811
 msgid "New view..."
 msgstr "Nuova vista..."
 
-#: gitk:674 gitk:2133 gitk:8722
+#: gitk:1812
 msgid "Edit view..."
 msgstr "Modifica vista..."
 
-#: gitk:676 gitk:2134 gitk:8723
+#: gitk:1814
 msgid "Delete view"
 msgstr "Elimina vista"
 
-#: gitk:678
+#: gitk:1816
 msgid "All files"
 msgstr "Tutti i file"
 
-#: gitk:682
+#: gitk:1820
 msgid "Help"
 msgstr "Aiuto"
 
-#: gitk:683 gitk:1317
+#: gitk:1821 gitk:2484
 msgid "About gitk"
 msgstr "Informazioni su gitk"
 
-#: gitk:684
+#: gitk:1822
 msgid "Key bindings"
 msgstr "Scorciatoie da tastiera"
 
-#: gitk:741
+#: gitk:1879
 msgid "SHA1 ID: "
 msgstr "SHA1 ID: "
 
-#: gitk:791
+#: gitk:1910
+msgid "Row"
+msgstr ""
+
+#: gitk:1941
 msgid "Find"
 msgstr "Trova"
 
-#: gitk:792
+#: gitk:1942
 msgid "next"
 msgstr "succ"
 
-#: gitk:793
+#: gitk:1943
 msgid "prev"
 msgstr "prec"
 
-#: gitk:794
+#: gitk:1944
 msgid "commit"
 msgstr "revisione"
 
-#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369
+#: gitk:1947 gitk:1949 gitk:3614 gitk:3637 gitk:3661 gitk:5547 gitk:5618
 msgid "containing:"
 msgstr "contenente:"
 
-#: gitk:800 gitk:1778 gitk:1783 gitk:2431
+#: gitk:1950 gitk:2951 gitk:2956 gitk:3689
 msgid "touching paths:"
 msgstr "che riguarda i percorsi:"
 
-#: gitk:801 gitk:2436
+#: gitk:1951 gitk:3694
 msgid "adding/removing string:"
 msgstr "che aggiunge/rimuove la stringa:"
 
-#: gitk:810 gitk:812
+#: gitk:1960 gitk:1962
 msgid "Exact"
 msgstr "Esatto"
 
-#: gitk:812 gitk:2514 gitk:4274
+#: gitk:1962 gitk:3770 gitk:5515
 msgid "IgnCase"
 msgstr ""
 
-#: gitk:812 gitk:2405 gitk:2512 gitk:4270
+#: gitk:1962 gitk:3663 gitk:3768 gitk:5511
 msgid "Regexp"
 msgstr ""
 
-#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436
+#: gitk:1964 gitk:1965 gitk:3789 gitk:3819 gitk:3826 gitk:5638 gitk:5705
 msgid "All fields"
 msgstr "Tutti i campi"
 
-#: gitk:815 gitk:2531 gitk:2563 gitk:4336
+#: gitk:1965 gitk:3787 gitk:3819 gitk:5577
 msgid "Headline"
 msgstr "Titolo"
 
-#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827
+#: gitk:1966 gitk:3787 gitk:5577 gitk:5705 gitk:6106
 msgid "Comments"
 msgstr "Commenti"
 
-#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5956
-#: gitk:5971
+#: gitk:1966 gitk:3787 gitk:3791 gitk:3826 gitk:5577 gitk:6042 gitk:7249
+#: gitk:7264
 msgid "Author"
 msgstr "Autore"
 
-#: gitk:816 gitk:2531 gitk:4336 gitk:4765
+#: gitk:1966 gitk:3787 gitk:5577 gitk:6044
 msgid "Committer"
 msgstr "Revisione creata da"
 
-#: gitk:845
+#: gitk:1995
 msgid "Search"
 msgstr "Cerca"
 
-#: gitk:852
+#: gitk:2002
 msgid "Diff"
 msgstr ""
 
-#: gitk:854
+#: gitk:2004
 msgid "Old version"
 msgstr "Vecchia versione"
 
-#: gitk:856
+#: gitk:2006
 msgid "New version"
 msgstr "Nuova versione"
 
-#: gitk:858
+#: gitk:2008
 msgid "Lines of context"
 msgstr "Linee di contesto"
 
-#: gitk:868
+#: gitk:2018
 msgid "Ignore space change"
 msgstr "Ignora modifiche agli spazi"
 
-#: gitk:926
+#: gitk:2076
 msgid "Patch"
 msgstr "Modifiche"
 
-#: gitk:928
+#: gitk:2078
 msgid "Tree"
 msgstr "Directory"
 
-#: gitk:1053 gitk:1068 gitk:6022
+#: gitk:2204 gitk:2219
 msgid "Diff this -> selected"
 msgstr "Diff questo -> selezionato"
 
-#: gitk:1055 gitk:1070 gitk:6023
+#: gitk:2206 gitk:2221
 msgid "Diff selected -> this"
 msgstr "Diff selezionato -> questo"
 
-#: gitk:1057 gitk:1072 gitk:6024
+#: gitk:2208 gitk:2223
 msgid "Make patch"
 msgstr "Crea patch"
 
-#: gitk:1058 gitk:6162
+#: gitk:2209 gitk:7458
 msgid "Create tag"
 msgstr "Crea etichetta"
 
-#: gitk:1059 gitk:6255
+#: gitk:2210 gitk:7557
 msgid "Write commit to file"
 msgstr "Scrivi revisione in un file"
 
-#: gitk:1060 gitk:6309
+#: gitk:2211 gitk:7611
 msgid "Create new branch"
 msgstr "Crea un nuovo ramo"
 
-#: gitk:1061
+#: gitk:2212
 msgid "Cherry-pick this commit"
 msgstr "Porta questa revisione in cima al ramo attuale"
 
-#: gitk:1063
+#: gitk:2214
 msgid "Reset HEAD branch to here"
 msgstr "Aggiorna il ramo HEAD a questa revisione"
 
-#: gitk:1079
+#: gitk:2230
 msgid "Check out this branch"
 msgstr "Attiva questo ramo"
 
-#: gitk:1081
+#: gitk:2232
 msgid "Remove this branch"
 msgstr "Elimina questo ramo"
 
-#: gitk:1087
+#: gitk:2238
 msgid "Highlight this too"
 msgstr "Evidenzia anche questo"
 
-#: gitk:1089
+#: gitk:2240
 msgid "Highlight this only"
 msgstr "Evidenzia solo questo"
 
-#: gitk:1318
+#: gitk:2242
+msgid "External diff"
+msgstr ""
+
+#: gitk:2244
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2485
+#, fuzzy
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
 "\n"
-"Copyright © 2005-2006 Paul Mackerras\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
 "\n"
 "Use and redistribute under the terms of the GNU General Public License"
 msgstr ""
@@ -271,421 +308,431 @@ msgstr ""
 "Utilizzo e redistribuzione permessi sotto i termini della GNU General Public "
 "License"
 
-#: gitk:1326 gitk:1387 gitk:6581
+#: gitk:2493 gitk:2554 gitk:7906
 msgid "Close"
 msgstr "Chiudi"
 
-#: gitk:1345
+#: gitk:2512
 msgid "Gitk key bindings"
 msgstr "Scorciatoie da tastiera di Gitk"
 
-#: gitk:1347
+#: gitk:2514
 msgid "Gitk key bindings:"
 msgstr "Scorciatoie da tastiera di Gitk:"
 
-#: gitk:1349
+#: gitk:2516
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tEsci"
 
-#: gitk:1350
+#: gitk:2517
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Home>\t\tVai alla prima revisione"
 
-#: gitk:1351
+#: gitk:2518
 msgid "<End>\t\tMove to last commit"
 msgstr "<End>\t\tVai all'ultima revisione"
 
-#: gitk:1352
+#: gitk:2519
 msgid "<Up>, p, i\tMove up one commit"
 msgstr "<Up>, p, i\tVai più in alto di una revisione"
 
-#: gitk:1353
+#: gitk:2520
 msgid "<Down>, n, k\tMove down one commit"
 msgstr "<Down>, n, k\tVai più in basso di una revisione"
 
-#: gitk:1354
+#: gitk:2521
 msgid "<Left>, z, j\tGo back in history list"
 msgstr "<Left>, z, j\tTorna indietro nella cronologia"
 
-#: gitk:1355
+#: gitk:2522
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Right>, x, l\tVai avanti nella cronologia"
 
-#: gitk:1356
+#: gitk:2523
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tVai più in alto di una pagina nella lista delle revisioni"
 
-#: gitk:1357
+#: gitk:2524
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tVai più in basso di una pagina nella lista delle revisioni"
 
-#: gitk:1358
+#: gitk:2525
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Home>\tScorri alla cima della lista delle revisioni"
 
-#: gitk:1359
+#: gitk:2526
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tScorri alla fine della lista delle revisioni"
 
-#: gitk:1360
+#: gitk:2527
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Up>\tScorri la lista delle revisioni in alto di una riga"
 
-#: gitk:1361
+#: gitk:2528
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Down>\tScorri la lista delle revisioni in basso di una riga"
 
-#: gitk:1362
+#: gitk:2529
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tScorri la lista delle revisioni in alto di una pagina"
 
-#: gitk:1363
+#: gitk:2530
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tScorri la lista delle revisioni in basso di una pagina"
 
-#: gitk:1364
+#: gitk:2531
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Shift-Up>\tTrova all'indietro (verso l'alto, revisioni successive)"
 
-#: gitk:1365
+#: gitk:2532
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Shift-Down>\tTrova in avanti (verso il basso, revisioni precedenti)"
 
-#: gitk:1366
+#: gitk:2533
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Delete>, b\tScorri la vista delle differenze in alto di una pagina"
 
-#: gitk:1367
+#: gitk:2534
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Backspace>\tScorri la vista delle differenze in alto di una pagina"
 
-#: gitk:1368
+#: gitk:2535
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Space>\t\tScorri la vista delle differenze in basso di una pagina"
 
-#: gitk:1369
+#: gitk:2536
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tScorri la vista delle differenze in alto di 18 linee"
 
-#: gitk:1370
+#: gitk:2537
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tScorri la vista delle differenze in basso di 18 linee"
 
-#: gitk:1371
+#: gitk:2538
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tTrova"
 
-#: gitk:1372
+#: gitk:2539
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tTrova in avanti"
 
-#: gitk:1373
+#: gitk:2540
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\tTrova in avanti"
 
-#: gitk:1374
+#: gitk:2541
 msgid "/\t\tMove to next find hit, or redo find"
 msgstr "/\t\tTrova in avanti, o cerca di nuovo"
 
-#: gitk:1375
+#: gitk:2542
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tTrova all'indietro"
 
-#: gitk:1376
+#: gitk:2543
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tScorri la vista delle differenze al file successivo"
 
-#: gitk:1377
+#: gitk:2544
 #, tcl-format
 msgid "<%s-S>\t\tSearch for next hit in diff view"
 msgstr "<%s-S>\t\tCerca in avanti nella vista delle differenze"
 
-#: gitk:1378
+#: gitk:2545
 #, tcl-format
 msgid "<%s-R>\t\tSearch for previous hit in diff view"
 msgstr "<%s-R>\t\tCerca all'indietro nella vista delle differenze"
 
-#: gitk:1379
+#: gitk:2546
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-KP+>\tAumenta grandezza carattere"
 
-#: gitk:1380
+#: gitk:2547
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tAumenta grandezza carattere"
 
-#: gitk:1381
+#: gitk:2548
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-KP->\tDiminuisci grandezza carattere"
 
-#: gitk:1382
+#: gitk:2549
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tDiminuisci grandezza carattere"
 
-#: gitk:1383
+#: gitk:2550
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tAggiorna"
 
-#: gitk:1896
+#: gitk:3065
+#, fuzzy
+msgid "No such commit"
+msgstr "Nessuna modifica archiviata"
+
+#: gitk:3197
 msgid "Gitk view definition"
 msgstr "Scelta vista Gitk"
 
-#: gitk:1921
+#: gitk:3222
 msgid "Name"
 msgstr "Nome"
 
-#: gitk:1924
+#: gitk:3225
 msgid "Remember this view"
 msgstr "Ricorda questa vista"
 
-#: gitk:1928
-msgid "Commits to include (arguments to git rev-list):"
+#: gitk:3229
+#, fuzzy
+msgid "Commits to include (arguments to git log):"
 msgstr "Revisioni da includere (argomenti di git rev-list):"
 
-#: gitk:1935
+#: gitk:3236
 msgid "Command to generate more commits to include:"
 msgstr "Comando che genera altre revisioni da visualizzare:"
 
-#: gitk:1942
+#: gitk:3243
 msgid "Enter files and directories to include, one per line:"
 msgstr "Inserire file e directory da includere, uno per riga:"
 
-#: gitk:1989
+#: gitk:3290
 msgid "Error in commit selection arguments:"
 msgstr "Errore negli argomenti di selezione delle revisioni:"
 
-#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8688 gitk:8689
+#: gitk:3344 gitk:3396 gitk:3839 gitk:3853 gitk:5057 gitk:10013 gitk:10014
 msgid "None"
 msgstr "Nessuno"
 
-#: gitk:2531 gitk:4336 gitk:5958 gitk:5973
+#: gitk:3787 gitk:5577 gitk:7251 gitk:7266
 msgid "Date"
 msgstr "Data"
 
-#: gitk:2531 gitk:4336
+#: gitk:3787 gitk:5577
 msgid "CDate"
 msgstr ""
 
-#: gitk:2680 gitk:2685
+#: gitk:3936 gitk:3941
 msgid "Descendant"
 msgstr "Discendente"
 
-#: gitk:2681
+#: gitk:3937
 msgid "Not descendant"
 msgstr "Non discendente"
 
-#: gitk:2688 gitk:2693
+#: gitk:3944 gitk:3949
 msgid "Ancestor"
 msgstr "Ascendente"
 
-#: gitk:2689
+#: gitk:3945
 msgid "Not ancestor"
 msgstr "Non ascendente"
 
-#: gitk:2924
+#: gitk:4184
 msgid "Local changes checked in to index but not committed"
 msgstr "Modifiche locali presenti nell'indice ma non nell'archivio"
 
-#: gitk:2954
+#: gitk:4217
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Modifiche locali non presenti né nell'archivio né nell'indice"
 
-#: gitk:4305
+#: gitk:5546
 msgid "Searching"
 msgstr "Ricerca in corso"
 
-#: gitk:4767
+#: gitk:6046
 msgid "Tags:"
 msgstr "Etichette:"
 
-#: gitk:4784 gitk:4790 gitk:5951
+#: gitk:6063 gitk:6069 gitk:7244
 msgid "Parent"
 msgstr "Genitore"
 
-#: gitk:4795
+#: gitk:6074
 msgid "Child"
 msgstr "Figlio"
 
-#: gitk:4804
+#: gitk:6083
 msgid "Branch"
 msgstr "Ramo"
 
-#: gitk:4807
+#: gitk:6086
 msgid "Follows"
 msgstr "Segue"
 
-#: gitk:4810
+#: gitk:6089
 msgid "Precedes"
 msgstr "Precede"
 
-#: gitk:5093
+#: gitk:6373
 msgid "Error getting merge diffs:"
 msgstr "Errore nella lettura delle differenze di fusione:"
 
-#: gitk:5778
+#: gitk:7077
 msgid "Goto:"
 msgstr "Vai a:"
 
-#: gitk:5780
+#: gitk:7079
 msgid "SHA1 ID:"
 msgstr "SHA1 ID:"
 
-#: gitk:5805
+#: gitk:7098
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "La SHA1 id abbreviata %s è ambigua"
 
-#: gitk:5817
+#: gitk:7110
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "La SHA1 id %s è sconosciuta"
 
-#: gitk:5819
+#: gitk:7112
 #, tcl-format
 msgid "Tag/Head %s is not known"
 msgstr "L'etichetta/ramo %s è sconosciuto"
 
-#: gitk:5961
+#: gitk:7254
 msgid "Children"
 msgstr "Figli"
 
-#: gitk:6018
+#: gitk:7311
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Aggiorna il ramo %s a questa revisione"
 
-#: gitk:6049
+#: gitk:7313
+msgid "Detached head: can't reset"
+msgstr ""
+
+#: gitk:7345
 msgid "Top"
 msgstr "Inizio"
 
-#: gitk:6050
+#: gitk:7346
 msgid "From"
 msgstr "Da"
 
-#: gitk:6055
+#: gitk:7351
 msgid "To"
 msgstr "A"
 
-#: gitk:6078
+#: gitk:7374
 msgid "Generate patch"
 msgstr "Genera patch"
 
-#: gitk:6080
+#: gitk:7376
 msgid "From:"
 msgstr "Da:"
 
-#: gitk:6089
+#: gitk:7385
 msgid "To:"
 msgstr "A:"
 
-#: gitk:6098
+#: gitk:7394
 msgid "Reverse"
 msgstr "Inverti"
 
-#: gitk:6100 gitk:6269
+#: gitk:7396 gitk:7571
 msgid "Output file:"
 msgstr "Scrivi sul file:"
 
-#: gitk:6106
+#: gitk:7402
 msgid "Generate"
 msgstr "Genera"
 
-#: gitk:6142
+#: gitk:7438
 msgid "Error creating patch:"
 msgstr "Errore nella creazione della patch:"
 
-#: gitk:6164 gitk:6257 gitk:6311
+#: gitk:7460 gitk:7559 gitk:7613
 msgid "ID:"
 msgstr "ID:"
 
-#: gitk:6173
+#: gitk:7469
 msgid "Tag name:"
 msgstr "Nome etichetta:"
 
-#: gitk:6177 gitk:6320
+#: gitk:7473 gitk:7622
 msgid "Create"
 msgstr "Crea"
 
-#: gitk:6192
+#: gitk:7488
 msgid "No tag name specified"
 msgstr "Nessuna etichetta specificata"
 
-#: gitk:6196
+#: gitk:7492
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "L'etichetta \"%s\" esiste già"
 
-#: gitk:6202
+#: gitk:7498
 msgid "Error creating tag:"
 msgstr "Errore nella creazione dell'etichetta:"
 
-#: gitk:6266
+#: gitk:7568
 msgid "Command:"
 msgstr "Comando:"
 
-#: gitk:6274
+#: gitk:7576
 msgid "Write"
 msgstr "Scrivi"
 
-#: gitk:6290
+#: gitk:7592
 msgid "Error writing commit:"
 msgstr "Errore nella scrittura della revisione:"
 
-#: gitk:6316
+#: gitk:7618
 msgid "Name:"
 msgstr "Nome:"
 
-#: gitk:6335
+#: gitk:7637
 msgid "Please specify a name for the new branch"
 msgstr "Specificare un nome per il nuovo ramo"
 
-#: gitk:6364
+#: gitk:7666
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
 msgstr "La revisione %s è già inclusa nel ramo %s -- applicarla di nuovo?"
 
-#: gitk:6369
+#: gitk:7671
 msgid "Cherry-picking"
 msgstr ""
 
-#: gitk:6381
+#: gitk:7683
 msgid "No changes committed"
 msgstr "Nessuna modifica archiviata"
 
-#: gitk:6404
+#: gitk:7708
 msgid "Confirm reset"
 msgstr "Conferma git reset"
 
-#: gitk:6406
+#: gitk:7710
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Aggiornare il ramo %s a %s?"
 
-#: gitk:6410
+#: gitk:7714
 msgid "Reset type:"
 msgstr "Tipo di aggiornamento:"
 
-#: gitk:6414
+#: gitk:7718
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Soft: Lascia la direcory di lavoro e l'indice come sono"
 
-#: gitk:6417
+#: gitk:7721
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr "Mixed: Lascia la directory di lavoro come è, aggiorna l'indice"
 
-#: gitk:6420
+#: gitk:7724
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -693,19 +740,19 @@ msgstr ""
 "Hard: Aggiorna la directory di lavoro e l'indice\n"
 "(abbandona TUTTE le modifiche locali)"
 
-#: gitk:6436
+#: gitk:7740
 msgid "Resetting"
 msgstr "git reset in corso"
 
-#: gitk:6493
+#: gitk:7797
 msgid "Checking out"
 msgstr "Attivazione in corso"
 
-#: gitk:6523
+#: gitk:7848
 msgid "Cannot delete the currently checked-out branch"
 msgstr "Impossibile cancellare il ramo attualmente attivo"
 
-#: gitk:6529
+#: gitk:7854
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -714,16 +761,16 @@ msgstr ""
 "Le revisioni nel ramo %s non sono presenti su altri rami.\n"
 "Cancellare il ramo %s?"
 
-#: gitk:6560
+#: gitk:7885
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Etichette e rami: %s"
 
-#: gitk:6574
+#: gitk:7899
 msgid "Filter"
 msgstr "Filtro"
 
-#: gitk:6868
+#: gitk:8193
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -731,117 +778,125 @@ msgstr ""
 "Errore nella lettura della topologia delle revisioni: le informazioni sul "
 "ramo e le etichette precedenti e seguenti saranno incomplete."
 
-#: gitk:7852
+#: gitk:9179
 msgid "Tag"
 msgstr "Etichetta"
 
-#: gitk:7852
+#: gitk:9179
 msgid "Id"
 msgstr "Id"
 
-#: gitk:7892
+#: gitk:9225
 msgid "Gitk font chooser"
 msgstr "Scelta caratteri gitk"
 
-#: gitk:7909
+#: gitk:9242
 msgid "B"
 msgstr "B"
 
-#: gitk:7912
+#: gitk:9245
 msgid "I"
 msgstr "I"
 
-#: gitk:8005
+#: gitk:9338
 msgid "Gitk preferences"
 msgstr "Preferenze gitk"
 
-#: gitk:8006
+#: gitk:9339
 msgid "Commit list display options"
 msgstr "Opzioni visualizzazione dell'elenco revisioni"
 
-#: gitk:8009
+#: gitk:9342
 msgid "Maximum graph width (lines)"
 msgstr "Larghezza massima del grafico (in linee)"
 
-#: gitk:8013
+#: gitk:9346
 #, tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Larghezza massima del grafico (% del pannello)"
 
-#: gitk:8018
+#: gitk:9351
 msgid "Show local changes"
 msgstr "Mostra modifiche locali"
 
-#: gitk:8023
+#: gitk:9356
 msgid "Auto-select SHA1"
 msgstr "Seleziona automaticamente SHA1 hash"
 
-#: gitk:8028
+#: gitk:9361
 msgid "Diff display options"
 msgstr "Opzioni di visualizzazione delle differenze"
 
-#: gitk:8030
+#: gitk:9363
 msgid "Tab spacing"
 msgstr "Spaziatura tabulazioni"
 
-#: gitk:8034
+#: gitk:9367
 msgid "Display nearby tags"
 msgstr "Mostra etichette vicine"
 
-#: gitk:8039
+#: gitk:9372
 msgid "Limit diffs to listed paths"
 msgstr "Limita le differenze ai percorsi elencati"
 
-#: gitk:8044
+#: gitk:9379
+msgid "External diff tool"
+msgstr ""
+
+#: gitk:9381
+msgid "Choose..."
+msgstr ""
+
+#: gitk:9386
 msgid "Colors: press to choose"
 msgstr "Colori: premere per scegliere"
 
-#: gitk:8047
+#: gitk:9389
 msgid "Background"
 msgstr "Sfondo"
 
-#: gitk:8051
+#: gitk:9393
 msgid "Foreground"
 msgstr "Primo piano"
 
-#: gitk:8055
+#: gitk:9397
 msgid "Diff: old lines"
 msgstr "Diff: vecchie linee"
 
-#: gitk:8060
+#: gitk:9402
 msgid "Diff: new lines"
 msgstr "Diff: nuove linee"
 
-#: gitk:8065
+#: gitk:9407
 msgid "Diff: hunk header"
 msgstr "Diff: intestazione della sezione"
 
-#: gitk:8071
+#: gitk:9413
 msgid "Select bg"
 msgstr "Sfondo selezione"
 
-#: gitk:8075
+#: gitk:9417
 msgid "Fonts: press to choose"
 msgstr "Carattere: premere per scegliere"
 
-#: gitk:8077
+#: gitk:9419
 msgid "Main font"
 msgstr "Carattere principale"
 
-#: gitk:8078
+#: gitk:9420
 msgid "Diff display font"
 msgstr "Carattere per differenze"
 
-#: gitk:8079
+#: gitk:9421
 msgid "User interface font"
 msgstr "Carattere per interfaccia utente"
 
-#: gitk:8095
+#: gitk:9446
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: scegliere un colore per %s"
 
-#: gitk:8476
+#: gitk:9827
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -849,42 +904,24 @@ msgstr ""
 "Questa versione di Tcl/Tk non può avviare gitk.\n"
 " Gitk richiede Tcl/Tk versione 8.4 o superiore."
 
-#: gitk:8565
+#: gitk:9919
 msgid "Cannot find a git repository here."
 msgstr "Archivio git non trovato."
 
-#: gitk:8569
+#: gitk:9923
 #, tcl-format
 msgid "Cannot find the git directory \"%s\"."
 msgstr "Directory git \"%s\" non trovata."
 
-#: gitk:8612
+#: gitk:9970
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Argomento ambiguo: '%s' è sia revisione che nome di file"
 
-#: gitk:8624
+#: gitk:9982
 msgid "Bad arguments to gitk:"
 msgstr "Gitk: argomenti errati:"
 
-#: gitk:8636
-msgid "Couldn't get list of unmerged files:"
-msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:"
-
-#: gitk:8652
-msgid "No files selected: --merge specified but no files are unmerged."
-msgstr ""
-"Nessun file selezionato: è stata specificata l'opzione --merge ma non ci "
-"sono file in attesa di fusione."
-
-#: gitk:8655
-msgid ""
-"No files selected: --merge specified but no unmerged files are within file "
-"limit."
-msgstr ""
-"Nessun file selezionato: è stata specificata l'opzione --merge ma i file "
-"specificati non sono in attesa di fusione."
-
-#: gitk:8716
+#: gitk:10042
 msgid "Command line"
 msgstr "Linea di comando"
diff --git a/po/sv.po b/po/sv.po
index e1ecfb7..85b65dd 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-10-07 23:06+0200\n"
 "PO-Revision-Date: 2008-08-03 19:03+0200\n"
 "Last-Translator: Mikael Magnusson <mikachu@gmail.com>\n"
 "Language-Team: Swedish <sv@li.org>\n"
@@ -16,17 +16,17 @@ 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: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 +34,261 @@ msgstr ""
 "Inga filer valdes: --merge angavs men det finns inga filer inom "
 "filbegränsningen."
 
-#: gitk:354
+#: gitk:365
 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:3459
 msgid "Reading commits..."
 msgstr "Läser incheckningar..."
 
-#: gitk:403 gitk:1480 gitk:3359
+#: gitk:441 gitk:1528 gitk:3462
 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:3256 gitk:7727 gitk:9256 gitk:9424
 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:3257 gitk:7403 gitk:7474 gitk:7577 gitk:7623 gitk:7729
+#: gitk:9257 gitk:9425
 msgid "Cancel"
 msgstr "Avbryt"
 
-#: gitk:1716
+#: gitk:1798
 msgid "File"
 msgstr "Arkiv"
 
-#: gitk:1718
+#: gitk:1800
 msgid "Update"
 msgstr "Uppdatera"
 
-#: gitk:1719
+#: gitk:1801
 msgid "Reload"
 msgstr "Ladda om"
 
-#: gitk:1720
+#: gitk:1802
 msgid "Reread references"
 msgstr "Läs om referenser"
 
-#: gitk:1721
+#: gitk:1803
 msgid "List references"
 msgstr "Visa referenser"
 
-#: gitk:1722
+#: gitk:1804
 msgid "Quit"
 msgstr "Avsluta"
 
-#: gitk:1724
+#: gitk:1806
 msgid "Edit"
 msgstr "Redigera"
 
-#: gitk:1725
+#: gitk:1807
 msgid "Preferences"
 msgstr "Inställningar"
 
-#: gitk:1728 gitk:3087
+#: gitk:1810 gitk:3193
 msgid "View"
 msgstr "Visa"
 
-#: gitk:1729
+#: gitk:1811
 msgid "New view..."
 msgstr "Ny vy..."
 
-#: gitk:1730 gitk:3298 gitk:9932
+#: gitk:1812
 msgid "Edit view..."
 msgstr "Ändra vy..."
 
-#: gitk:1732 gitk:3299 gitk:9933
+#: gitk:1814
 msgid "Delete view"
 msgstr "Ta bort vy"
 
-#: gitk:1734
+#: gitk:1816
 msgid "All files"
 msgstr "Alla filer"
 
-#: gitk:1738
+#: gitk:1820
 msgid "Help"
 msgstr "Hjälp"
 
-#: gitk:1739 gitk:2399
+#: gitk:1821 gitk:2484
 msgid "About gitk"
 msgstr "Om gitk"
 
-#: gitk:1740
+#: gitk:1822
 msgid "Key bindings"
 msgstr "Tangentbordsbindningar"
 
-#: gitk:1797
+#: gitk:1879
 msgid "SHA1 ID: "
 msgstr "SHA1-id: "
 
-#: gitk:1828
+#: gitk:1910
 msgid "Row"
 msgstr "Rad"
 
-#: gitk:1859
+#: gitk:1941
 msgid "Find"
 msgstr "Sök"
 
-#: gitk:1860
+#: gitk:1942
 msgid "next"
 msgstr "nästa"
 
-#: gitk:1861
+#: gitk:1943
 msgid "prev"
 msgstr "föreg"
 
-#: gitk:1862
+#: gitk:1944
 msgid "commit"
 msgstr "incheckning"
 
-#: gitk:1865 gitk:1867 gitk:3511 gitk:3534 gitk:3558 gitk:5441 gitk:5512
+#: gitk:1947 gitk:1949 gitk:3614 gitk:3637 gitk:3661 gitk:5547 gitk:5618
 msgid "containing:"
 msgstr "som innehåller:"
 
-#: gitk:1868 gitk:2866 gitk:2871 gitk:3586
+#: gitk:1950 gitk:2951 gitk:2956 gitk:3689
 msgid "touching paths:"
 msgstr "som rör sökväg:"
 
-#: gitk:1869 gitk:3591
+#: gitk:1951 gitk:3694
 msgid "adding/removing string:"
 msgstr "som lägger/till tar bort sträng:"
 
-#: gitk:1878 gitk:1880
+#: gitk:1960 gitk:1962
 msgid "Exact"
 msgstr "Exakt"
 
-#: gitk:1880 gitk:3667 gitk:5409
+#: gitk:1962 gitk:3770 gitk:5515
 msgid "IgnCase"
 msgstr "IgnVersaler"
 
-#: gitk:1880 gitk:3560 gitk:3665 gitk:5405
+#: gitk:1962 gitk:3663 gitk:3768 gitk:5511
 msgid "Regexp"
 msgstr "Reg.uttr."
 
-#: gitk:1882 gitk:1883 gitk:3686 gitk:3716 gitk:3723 gitk:5532 gitk:5599
+#: gitk:1964 gitk:1965 gitk:3789 gitk:3819 gitk:3826 gitk:5638 gitk:5705
 msgid "All fields"
 msgstr "Alla fält"
 
-#: gitk:1883 gitk:3684 gitk:3716 gitk:5471
+#: gitk:1965 gitk:3787 gitk:3819 gitk:5577
 msgid "Headline"
 msgstr "Rubrik"
 
-#: gitk:1884 gitk:3684 gitk:5471 gitk:5599 gitk:6000
+#: gitk:1966 gitk:3787 gitk:5577 gitk:5705 gitk:6106
 msgid "Comments"
 msgstr "Kommentarer"
 
-#: gitk:1884 gitk:3684 gitk:3688 gitk:3723 gitk:5471 gitk:5936 gitk:7142
-#: gitk:7157
+#: gitk:1966 gitk:3787 gitk:3791 gitk:3826 gitk:5577 gitk:6042 gitk:7249
+#: gitk:7264
 msgid "Author"
 msgstr "Författare"
 
-#: gitk:1884 gitk:3684 gitk:5471 gitk:5938
+#: gitk:1966 gitk:3787 gitk:5577 gitk:6044
 msgid "Committer"
 msgstr "Incheckare"
 
-#: gitk:1913
+#: gitk:1995
 msgid "Search"
 msgstr "Sök"
 
-#: gitk:1920
+#: gitk:2002
 msgid "Diff"
 msgstr "Diff"
 
-#: gitk:1922
+#: gitk:2004
 msgid "Old version"
 msgstr "Gammal version"
 
-#: gitk:1924
+#: gitk:2006
 msgid "New version"
 msgstr "Ny version"
 
-#: gitk:1926
+#: gitk:2008
 msgid "Lines of context"
 msgstr "Rader sammanhang"
 
-#: gitk:1936
+#: gitk:2018
 msgid "Ignore space change"
 msgstr "Ignorera ändringar i blanksteg"
 
-#: gitk:1994
+#: gitk:2076
 msgid "Patch"
 msgstr "Patch"
 
-#: gitk:1996
+#: gitk:2078
 msgid "Tree"
 msgstr "Träd"
 
-#: gitk:2121 gitk:2136 gitk:7211
+#: gitk:2204 gitk:2219
 msgid "Diff this -> selected"
 msgstr "Diff denna -> markerad"
 
-#: gitk:2123 gitk:2138 gitk:7212
+#: gitk:2206 gitk:2221
 msgid "Diff selected -> this"
 msgstr "Diff markerad -> denna"
 
-#: gitk:2125 gitk:2140 gitk:7213
+#: gitk:2208 gitk:2223
 msgid "Make patch"
 msgstr "Skapa patch"
 
-#: gitk:2126 gitk:7351
+#: gitk:2209 gitk:7458
 msgid "Create tag"
 msgstr "Skapa tagg"
 
-#: gitk:2127 gitk:7450
+#: gitk:2210 gitk:7557
 msgid "Write commit to file"
 msgstr "Skriv incheckning till fil"
 
-#: gitk:2128 gitk:7504
+#: gitk:2211 gitk:7611
 msgid "Create new branch"
 msgstr "Skapa ny gren"
 
-#: gitk:2129
+#: gitk:2212
 msgid "Cherry-pick this commit"
 msgstr "Plocka denna incheckning"
 
-#: gitk:2131
+#: gitk:2214
 msgid "Reset HEAD branch to here"
 msgstr "Återställ HEAD-grenen hit"
 
-#: gitk:2147
+#: gitk:2230
 msgid "Check out this branch"
 msgstr "Checka ut denna gren"
 
-#: gitk:2149
+#: gitk:2232
 msgid "Remove this branch"
 msgstr "Ta bort denna gren"
 
-#: gitk:2155
+#: gitk:2238
 msgid "Highlight this too"
 msgstr "Markera även detta"
 
-#: gitk:2157
+#: gitk:2240
 msgid "Highlight this only"
 msgstr "Markera bara detta"
 
-#: gitk:2159
+#: gitk:2242
 msgid "External diff"
 msgstr "Extern diff"
 
-#: gitk:2400
+#: gitk:2244
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2485
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
@@ -300,427 +304,432 @@ msgstr ""
 "\n"
 "Använd och vidareförmedla enligt villkoren i GNU General Public License"
 
-#: gitk:2408 gitk:2469 gitk:7799
+#: gitk:2493 gitk:2554 gitk:7906
 msgid "Close"
 msgstr "Stäng"
 
-#: gitk:2427
+#: gitk:2512
 msgid "Gitk key bindings"
 msgstr "Tangentbordsbindningar för Gitk"
 
-#: gitk:2429
+#: gitk:2514
 msgid "Gitk key bindings:"
 msgstr "Tangentbordsbindningar för Gitk:"
 
-#: gitk:2431
+#: gitk:2516
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tAvsluta"
 
-#: gitk:2432
+#: gitk:2517
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Home>\t\tGå till första incheckning"
 
-#: gitk:2433
+#: gitk:2518
 msgid "<End>\t\tMove to last commit"
 msgstr "<End>\t\tGÃ¥ till sista incheckning"
 
-#: gitk:2434
+#: gitk:2519
 msgid "<Up>, p, i\tMove up one commit"
 msgstr "<Upp>, p, i\tGÃ¥ en incheckning upp"
 
-#: gitk:2435
+#: gitk:2520
 msgid "<Down>, n, k\tMove down one commit"
 msgstr "<Ned>, n, k\tGÃ¥ en incheckning ned"
 
-#: gitk:2436
+#: gitk:2521
 msgid "<Left>, z, j\tGo back in history list"
 msgstr "<Vänster>, z, j\tGå bakåt i historiken"
 
-#: gitk:2437
+#: gitk:2522
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Höger>, x, l\tGå framåt i historiken"
 
-#: gitk:2438
+#: gitk:2523
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tGÃ¥ upp en sida i incheckningslistan"
 
-#: gitk:2439
+#: gitk:2524
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tGÃ¥ ned en sida i incheckningslistan"
 
-#: gitk:2440
+#: gitk:2525
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Home>\tRulla till början av incheckningslistan"
 
-#: gitk:2441
+#: gitk:2526
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tRulla till slutet av incheckningslistan"
 
-#: gitk:2442
+#: gitk:2527
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg"
 
-#: gitk:2443
+#: gitk:2528
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg"
 
-#: gitk:2444
+#: gitk:2529
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida"
 
-#: gitk:2445
+#: gitk:2530
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida"
 
-#: gitk:2446
+#: gitk:2531
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Skift-Upp>\tSök bakåt (uppåt, senare incheckningar)"
 
-#: gitk:2447
+#: gitk:2532
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Skift-Ned>\tSök framåt (nedåt, tidigare incheckningar)"
 
-#: gitk:2448
+#: gitk:2533
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Delete>, b\tRulla diffvisningen upp en sida"
 
-#: gitk:2449
+#: gitk:2534
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Baksteg>\tRulla diffvisningen upp en sida"
 
-#: gitk:2450
+#: gitk:2535
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Blanksteg>\tRulla diffvisningen ned en sida"
 
-#: gitk:2451
+#: gitk:2536
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tRulla diffvisningen upp 18 rader"
 
-#: gitk:2452
+#: gitk:2537
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tRulla diffvisningen ned 18 rader"
 
-#: gitk:2453
+#: gitk:2538
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tSök"
 
-#: gitk:2454
+#: gitk:2539
 #, 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:2540
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\t\tGå till nästa sökträff"
 
-#: gitk:2456
+#: gitk:2541
 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:2542
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tGå till föregående sökträff"
 
-#: gitk:2458
+#: gitk:2543
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tRulla diffvisningen till nästa fil"
 
-#: gitk:2459
+#: gitk:2544
 #, 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:2545
 #, 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:2546
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-Num+>\tÖka teckenstorlek"
 
-#: gitk:2462
+#: gitk:2547
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tÖka teckenstorlek"
 
-#: gitk:2463
+#: gitk:2548
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-Num->\tMinska teckenstorlek"
 
-#: gitk:2464
+#: gitk:2549
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tMinska teckenstorlek"
 
-#: gitk:2465
+#: gitk:2550
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tUppdatera"
 
-#: gitk:3091
+#: gitk:3065
+#, fuzzy
+msgid "No such commit"
+msgstr "Inga ändringar incheckade"
+
+#: gitk:3197
 msgid "Gitk view definition"
 msgstr "Definition av Gitk-vy"
 
-#: gitk:3116
+#: gitk:3222
 msgid "Name"
 msgstr "Namn"
 
-#: gitk:3119
+#: gitk:3225
 msgid "Remember this view"
 msgstr "Spara denna vy"
 
-#: gitk:3123
+#: gitk:3229
 msgid "Commits to include (arguments to git log):"
 msgstr "Incheckningar att ta med (argument till git log):"
 
-#: gitk:3130
+#: gitk:3236
 msgid "Command to generate more commits to include:"
 msgstr "Kommando för att generera fler incheckningar att ta med:"
 
-#: gitk:3137
+#: gitk:3243
 msgid "Enter files and directories to include, one per line:"
 msgstr "Ange filer och kataloger att ta med, en per rad:"
 
-#: gitk:3184
+#: gitk:3290
 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:3344 gitk:3396 gitk:3839 gitk:3853 gitk:5057 gitk:10013 gitk:10014
 msgid "None"
 msgstr "Inget"
 
-#: gitk:3684 gitk:5471 gitk:7144 gitk:7159
+#: gitk:3787 gitk:5577 gitk:7251 gitk:7266
 msgid "Date"
 msgstr "Datum"
 
-#: gitk:3684 gitk:5471
+#: gitk:3787 gitk:5577
 msgid "CDate"
 msgstr "Skapat datum"
 
-#: gitk:3833 gitk:3838
+#: gitk:3936 gitk:3941
 msgid "Descendant"
 msgstr "Avkomling"
 
-#: gitk:3834
+#: gitk:3937
 msgid "Not descendant"
 msgstr "Inte avkomling"
 
-#: gitk:3841 gitk:3846
+#: gitk:3944 gitk:3949
 msgid "Ancestor"
 msgstr "Förfader"
 
-#: gitk:3842
+#: gitk:3945
 msgid "Not ancestor"
 msgstr "Inte förfader"
 
-#: gitk:4078
+#: gitk:4184
 msgid "Local changes checked in to index but not committed"
 msgstr "Lokala ändringar sparade i indexet men inte incheckade"
 
-#: gitk:4111
+#: gitk:4217
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Lokala ändringar, ej sparade i indexet"
 
-#: gitk:5440
+#: gitk:5546
 msgid "Searching"
 msgstr "Söker"
 
-#: gitk:5940
+#: gitk:6046
 msgid "Tags:"
 msgstr "Taggar:"
 
-#: gitk:5957 gitk:5963 gitk:7137
+#: gitk:6063 gitk:6069 gitk:7244
 msgid "Parent"
 msgstr "Förälder"
 
-#: gitk:5968
+#: gitk:6074
 msgid "Child"
 msgstr "Barn"
 
-#: gitk:5977
+#: gitk:6083
 msgid "Branch"
 msgstr "Gren"
 
-#: gitk:5980
+#: gitk:6086
 msgid "Follows"
 msgstr "Följer"
 
-#: gitk:5983
+#: gitk:6089
 msgid "Precedes"
 msgstr "Föregår"
 
-#: gitk:6267
+#: gitk:6373
 msgid "Error getting merge diffs:"
 msgstr "Fel vid hämtning av sammanslagningsdiff:"
 
-#: gitk:6970
+#: gitk:7077
 msgid "Goto:"
 msgstr "GÃ¥ till:"
 
-#: gitk:6972
+#: gitk:7079
 msgid "SHA1 ID:"
 msgstr "SHA1-id:"
 
-#: gitk:6991
+#: gitk:7098
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "Förkortat SHA1-id %s är tvetydigt"
 
-#: gitk:7003
+#: gitk:7110
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "SHA-id:t %s är inte känt"
 
-#: gitk:7005
+#: gitk:7112
 #, tcl-format
 msgid "Tag/Head %s is not known"
 msgstr "Tagg/huvud %s är okänt"
 
-#: gitk:7147
+#: gitk:7254
 msgid "Children"
 msgstr "Barn"
 
-#: gitk:7204
+#: gitk:7311
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Återställ grenen %s hit"
 
-#: gitk:7206
+#: gitk:7313
 msgid "Detached head: can't reset"
 msgstr "Frånkopplad head: kan inte återställa"
 
-#: gitk:7238
+#: gitk:7345
 msgid "Top"
 msgstr "Topp"
 
-#: gitk:7239
+#: gitk:7346
 msgid "From"
 msgstr "Från"
 
-#: gitk:7244
+#: gitk:7351
 msgid "To"
 msgstr "Till"
 
-#: gitk:7267
+#: gitk:7374
 msgid "Generate patch"
 msgstr "Generera patch"
 
-#: gitk:7269
+#: gitk:7376
 msgid "From:"
 msgstr "Från:"
 
-#: gitk:7278
+#: gitk:7385
 msgid "To:"
 msgstr "Till:"
 
-#: gitk:7287
+#: gitk:7394
 msgid "Reverse"
 msgstr "Vänd"
 
-#: gitk:7289 gitk:7464
+#: gitk:7396 gitk:7571
 msgid "Output file:"
 msgstr "Utdatafil:"
 
-#: gitk:7295
+#: gitk:7402
 msgid "Generate"
 msgstr "Generera"
 
-#: gitk:7331
+#: gitk:7438
 msgid "Error creating patch:"
 msgstr "Fel vid generering av patch:"
 
-#: gitk:7353 gitk:7452 gitk:7506
+#: gitk:7460 gitk:7559 gitk:7613
 msgid "ID:"
 msgstr "Id:"
 
-#: gitk:7362
+#: gitk:7469
 msgid "Tag name:"
 msgstr "Taggnamn:"
 
-#: gitk:7366 gitk:7515
+#: gitk:7473 gitk:7622
 msgid "Create"
 msgstr "Skapa"
 
-#: gitk:7381
+#: gitk:7488
 msgid "No tag name specified"
 msgstr "Inget taggnamn angavs"
 
-#: gitk:7385
+#: gitk:7492
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "Taggen \"%s\" finns redan"
 
-#: gitk:7391
+#: gitk:7498
 msgid "Error creating tag:"
 msgstr "Fel vid skapande av tagg:"
 
-#: gitk:7461
+#: gitk:7568
 msgid "Command:"
 msgstr "Kommando:"
 
-#: gitk:7469
+#: gitk:7576
 msgid "Write"
 msgstr "Skriv"
 
-#: gitk:7485
+#: gitk:7592
 msgid "Error writing commit:"
 msgstr "Fel vid skrivning av incheckning:"
 
-#: gitk:7511
+#: gitk:7618
 msgid "Name:"
 msgstr "Namn:"
 
-#: gitk:7530
+#: gitk:7637
 msgid "Please specify a name for the new branch"
 msgstr "Ange ett namn för den nya grenen"
 
-#: gitk:7559
+#: gitk:7666
 #, 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:7671
 msgid "Cherry-picking"
 msgstr "Plockar"
 
-#: gitk:7576
+#: gitk:7683
 msgid "No changes committed"
 msgstr "Inga ändringar incheckade"
 
-#: gitk:7601
+#: gitk:7708
 msgid "Confirm reset"
 msgstr "Bekräfta återställning"
 
-#: gitk:7603
+#: gitk:7710
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Återställa grenen %s till %s?"
 
-#: gitk:7607
+#: gitk:7714
 msgid "Reset type:"
 msgstr "Typ av återställning:"
 
-#: gitk:7611
+#: gitk:7718
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Mjuk: Rör inte utcheckning och index"
 
-#: gitk:7614
+#: gitk:7721
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr "Blandad: Rör inte utcheckning, återställ index"
 
-#: gitk:7617
+#: gitk:7724
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -728,19 +737,19 @@ msgstr ""
 "Hård: Återställ utcheckning och index\n"
 "(förkastar ALLA lokala ändringar)"
 
-#: gitk:7633
+#: gitk:7740
 msgid "Resetting"
 msgstr "Återställer"
 
-#: gitk:7690
+#: gitk:7797
 msgid "Checking out"
 msgstr "Checkar ut"
 
-#: gitk:7741
+#: gitk:7848
 msgid "Cannot delete the currently checked-out branch"
 msgstr "Kan inte ta bort den just nu utcheckade grenen"
 
-#: gitk:7747
+#: gitk:7854
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -749,16 +758,16 @@ msgstr ""
 "Incheckningarna på grenen %s existerar inte på någon annan gren.\n"
 "Vill du verkligen ta bort grenen %s?"
 
-#: gitk:7778
+#: gitk:7885
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Taggar och huvuden: %s"
 
-#: gitk:7792
+#: gitk:7899
 msgid "Filter"
 msgstr "Filter"
 
-#: gitk:8086
+#: gitk:8193
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -766,125 +775,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:9179
 msgid "Tag"
 msgstr "Tagg"
 
-#: gitk:9072
+#: gitk:9179
 msgid "Id"
 msgstr "Id"
 
-#: gitk:9118
+#: gitk:9225
 msgid "Gitk font chooser"
 msgstr "Teckensnittsväljare för Gitk"
 
-#: gitk:9135
+#: gitk:9242
 msgid "B"
 msgstr "F"
 
-#: gitk:9138
+#: gitk:9245
 msgid "I"
 msgstr "K"
 
-#: gitk:9231
+#: gitk:9338
 msgid "Gitk preferences"
 msgstr "Inställningar för Gitk"
 
-#: gitk:9232
+#: gitk:9339
 msgid "Commit list display options"
 msgstr "Alternativ för incheckningslistvy"
 
-#: gitk:9235
+#: gitk:9342
 msgid "Maximum graph width (lines)"
 msgstr "Maximal grafbredd (rader)"
 
-#: gitk:9239
+#: gitk:9346
 #, tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Maximal grafbredd (% av ruta)"
 
-#: gitk:9244
+#: gitk:9351
 msgid "Show local changes"
 msgstr "Visa lokala ändringar"
 
-#: gitk:9249
+#: gitk:9356
 msgid "Auto-select SHA1"
 msgstr "Välj SHA1 automatiskt"
 
-#: gitk:9254
+#: gitk:9361
 msgid "Diff display options"
 msgstr "Alternativ för diffvy"
 
-#: gitk:9256
+#: gitk:9363
 msgid "Tab spacing"
 msgstr "Blanksteg för tabulatortecken"
 
-#: gitk:9260
+#: gitk:9367
 msgid "Display nearby tags"
 msgstr "Visa närliggande taggar"
 
-#: gitk:9265
+#: gitk:9372
 msgid "Limit diffs to listed paths"
 msgstr "Begränsa diff till listade sökvägar"
 
-#: gitk:9272
+#: gitk:9379
 msgid "External diff tool"
 msgstr "Externt diff-verktyg"
 
-#: gitk:9274
+#: gitk:9381
 msgid "Choose..."
 msgstr "Välj..."
 
-#: gitk:9279
+#: gitk:9386
 msgid "Colors: press to choose"
 msgstr "Färger: tryck för att välja"
 
-#: gitk:9282
+#: gitk:9389
 msgid "Background"
 msgstr "Bakgrund"
 
-#: gitk:9286
+#: gitk:9393
 msgid "Foreground"
 msgstr "Förgrund"
 
-#: gitk:9290
+#: gitk:9397
 msgid "Diff: old lines"
 msgstr "Diff: gamla rader"
 
-#: gitk:9295
+#: gitk:9402
 msgid "Diff: new lines"
 msgstr "Diff: nya rader"
 
-#: gitk:9300
+#: gitk:9407
 msgid "Diff: hunk header"
 msgstr "Diff: delhuvud"
 
-#: gitk:9306
+#: gitk:9413
 msgid "Select bg"
 msgstr "Markerad bakgrund"
 
-#: gitk:9310
+#: gitk:9417
 msgid "Fonts: press to choose"
 msgstr "Teckensnitt: tryck för att välja"
 
-#: gitk:9312
+#: gitk:9419
 msgid "Main font"
 msgstr "Huvudteckensnitt"
 
-#: gitk:9313
+#: gitk:9420
 msgid "Diff display font"
 msgstr "Teckensnitt för diffvisning"
 
-#: gitk:9314
+#: gitk:9421
 msgid "User interface font"
 msgstr "Teckensnitt för användargränssnitt"
 
-#: gitk:9339
+#: gitk:9446
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: välj färg för %s"
 
-#: gitk:9720
+#: gitk:9827
 msgid ""
 "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
 " Gitk requires at least Tcl/Tk 8.4."
@@ -892,24 +901,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:9919
 msgid "Cannot find a git repository here."
 msgstr "Hittar inget gitk-arkiv här."
 
-#: gitk:9816
+#: gitk:9923
 #, tcl-format
 msgid "Cannot find the git directory \"%s\"."
 msgstr "Hittar inte git-katalogen \"%s\"."
 
-#: gitk:9853
+#: gitk:9970
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Tvetydigt argument \"%s\": både revision och filnamn"
 
-#: gitk:9865
+#: gitk:9982
 msgid "Bad arguments to gitk:"
 msgstr "Felaktiga argument till gitk:"
 
-#: gitk:9925
+#: gitk:10042
 msgid "Command line"
 msgstr "Kommandorad"
-- 
1.6.0.2.308.gef4a

^ permalink raw reply related

* Re: git status options feature suggestion
From: Jeff King @ 2008-10-09  6:11 UTC (permalink / raw)
  To: Caleb Cushing; +Cc: git
In-Reply-To: <81bfc67a0810082234p55e2fb9jb2a10f837eea7de0@mail.gmail.com>

On Thu, Oct 09, 2008 at 01:34:41AM -0400, Caleb Cushing wrote:

> I was just doing a git status for a large add and all I really wanted
> to see was the untracked files maybe git status could have options
> like --new --untracked --modified to only show those.

How about "git ls-files -o"?

-Peff

^ permalink raw reply

* Re: Different svn-id URLs in history
From: Knut Eldhuset @ 2008-10-09  6:16 UTC (permalink / raw)
  To: git; +Cc: Michael J Gruber
In-Reply-To: <48EC7022.7030707@drmicha.warpmail.net>

Michael J Gruber wrote:
> svn is typically "abused" in the sense that one svn repo is used for
> separate projects (your subtrees). git-svn can deal with non-standard
> repo layouts.
> 

I've decided to give up on cloning the whole svn repo. Cloning just our 
src folder is sufficient for now, and it does follow a sensible repo layout.

Maybe I'll get back to this if I manage to find a way of reproducing the 
previously described behavior.

Regards,
Knut

^ permalink raw reply

* Fwd: git status options feature suggestion
From: Caleb Cushing @ 2008-10-09  6:27 UTC (permalink / raw)
  To: git
In-Reply-To: <81bfc67a0810082327p421ca4e9v84f4b33023bc6fe6@mail.gmail.com>

> How about "git ls-files -o"?

doh... hadn't even heard of that command.

-- 
Caleb Cushing

^ permalink raw reply

* Re: [PATCH] Implement git clone -v
From: Alex Riesen @ 2008-10-08  6:25 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Miklos Vajna, Constantine Plotnikov, git
In-Reply-To: <20081008060257.GA15240@spearce.org>

Shawn O. Pearce, Wed, Oct 08, 2008 08:02:57 +0200:
> Miklos Vajna <vmiklos@frugalware.org> wrote:
> > On Tue, Oct 07, 2008 at 08:21:28AM +0200, Alex Riesen <raa.lkml@gmail.com> wrote:
> > > Yes. Does it work? :)
> > 
> > Yes, it does. I'm not sure how to test it from the testsuite, maybe
> > redirect the output to a file and grep in it? It's ugly, that's why I
> > did not do so, but if you think a testcase is a musthave for this
> > feature then that's the way to go, I guess.
> 
> Actually its not a bad way to test the feature.  Normally we disable
> progress if stdout is not a tty.  If you redirect to a file then
> -v should be needed to get anything at all on stderr.
> 
> You may be able to just test the size of the file:
> 
> 	git fetch -v ... >out 2>err &&

git clone

> 	test -s err

Right, but I don't think you need tests for progress bar. As a typical
eye candy, it tends to change often enough to be too annoying to test.

^ permalink raw reply

* Re: [PATCH 5/7] gitk: Make cherry-pick call git-citool on conflicts.
From: Paul Mackerras @ 2008-10-09  7:42 UTC (permalink / raw)
  To: Alexander Gavrilov; +Cc: git
In-Reply-To: <1223449540-20457-6-git-send-email-angavrilov@gmail.com>

Alexander Gavrilov writes:

> Now that git-gui has facilities to help users resolve
> conflicts, it makes sense to launch it from other gui
> tools when they happen.

Nice idea...

> +proc exec_citool {args {baseid {}}} {

I'm a little nervous about you having a parameter called "args", since
that specific name has a special meaning in Tcl; it's how Tcl handles
variable-length argument lists.

> +    global commitinfo env
> +
> +    if {[info exists env(GIT_AUTHOR_NAME)]} {
> +	set old_name $env(GIT_AUTHOR_NAME)
> +    }
> +    if {[info exists env(GIT_AUTHOR_EMAIL)]} {
> +	set old_email $env(GIT_AUTHOR_EMAIL)
> +    }
> +    if {[info exists env(GIT_AUTHOR_DATE)]} {
> +	set old_date $env(GIT_AUTHOR_DATE)
> +    }
> +
> +    if {$baseid ne {}} {
> +	if {![info exists commitinfo($baseid)]} {
> +	    getcommit $baseid
> +	}
> +	set author [lindex $commitinfo($baseid) 1]
> +	set date [lindex $commitinfo($baseid) 2]
> +	if {[regexp {^\s*(\S.*\S|\S)\s*<(.*)>\s*$} \
> +	            $author author name email]
> +	    && $date ne {}} {
> +	    set env(GIT_AUTHOR_NAME) $name
> +	    set env(GIT_AUTHOR_EMAIL) $email
> +	    set env(GIT_AUTHOR_DATE) $date
> +	}
> +    }
> +
> +    eval exec git citool $args &

If we can assume the existence of a shell (which we do elsewhere), we
can perhaps do this more simply by putting the environment variable
settings in the command before the command name.  It's a pity that git
citool won't take the author name/email/date as command-line arguments
or from a file, since it ends up being pretty verbose doing it the way
you have.

> @@ -7861,7 +7908,17 @@ proc cherrypick {} {
>      # no error occurs, and exec takes that as an indication of error...
>      if {[catch {exec sh -c "git cherry-pick -r $rowmenuid 2>&1"} err]} {
>  	notbusy cherrypick
> -	error_popup $err
> +	if {[regexp -line \
> +	    {Entry '(.*)' would be overwritten by merge} $err msg fname]} {
> +	    error_popup [mc "Cherry-pick failed: file '%s' had local modifications.
> +Your working directory is in an inconsistent state." $fname]

That message seems a bit too scary.  It's not inconsistent, it's just
got local modifications.  If I remember correctly, in this situation
git cherry-pick will back out all the changes it did and leave the
working directory as it was before.

> +	} elseif {[regexp -line {^CONFLICT \(.*\):} $err msg]} {
> +	    # Force citool to read MERGE_MSG
> +	    file delete [file join [gitdir] "GITGUI_MSG"]
> +	    exec_citool [list] $rowmenuid

[list] as an idiom for the empty list is a little unusual (here and
elsewhere in your patches); {} would be more usual.

Paul.

^ permalink raw reply

* Re: [PATCH 1/7] gitk: Enhance UI popup and accelerator handling.
From: Alexander Gavrilov @ 2008-10-09  8:12 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: git
In-Reply-To: <18669.20487.88439.584567@cargo.ozlabs.ibm.com>

On Thu, Oct 9, 2008 at 4:27 AM, Paul Mackerras <paulus@samba.org> wrote:
>> +    catch { bind . <Shift-Key-XF86_Switch_VT_4> {newview 0} }
>
> What is this key, or why is this line needed?

It is a workaround for an apparent bug in interaction between Tk and
XKB on some systems.
XKB configuration files bind those symbols to Ctrl-Alt-F*
combinations, but Tk's keyboard
handiling code sees them when Shift-F* is pressed. I'll be glad to
find a better fix, but that's
all I could do for now.

The catch wrapper is there to avoid erroring out if that keysym does not exist.

>> @@ -2484,10 +2501,10 @@ proc keys {} {
>>
>> -[mc "<%s-Q>          Quit" $M1T]
>>  [mc "<Home>          Move to first commit"]
>>  [mc "<End>           Move to last commit"]
>>  [mc "<Up>, p, i      Move up one commit"]
>> @@ -2521,11 +2538,11 @@ proc keys {} {
>>  [mc "<%s-plus>       Increase font size" $M1T]
>>  [mc "<%s-KP->        Decrease font size" $M1T]
>>  [mc "<%s-minus>      Decrease font size" $M1T]
>> -[mc "<F5>            Update"]
>
> I think it is useful to have the accelerator keys listed in the key
> binding help.

I don't insist on this part of the patch, it just seemed to be redundant now.

>> @@ -7501,6 +7534,7 @@ proc domktag {} {
>>      addedtag $id
>>      dispneartags 0
>>      run refill_reflist
>> +    return 1
>>  }
>>
>>  proc redrawtags {id} {
>> @@ -7539,7 +7573,7 @@ proc mktagcan {} {
>>  }
>>
>>  proc mktaggo {} {
>> -    domktag
>> +    if {![domktag]} return
>
> You need to change the error returns in domktag to say "return 0",
> otherwise this will give a "can't use empty string as operand of "!""
> Tcl error.

I did not know this. I'm not that familiar with Tcl...

Alexander

^ permalink raw reply

* Re: [PATCH 5/7] gitk: Make cherry-pick call git-citool on conflicts.
From: Alexander Gavrilov @ 2008-10-09  8:24 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: git
In-Reply-To: <18669.46569.45285.170033@cargo.ozlabs.ibm.com>

On Thu, Oct 9, 2008 at 11:42 AM, Paul Mackerras <paulus@samba.org> wrote:
>> +proc exec_citool {args {baseid {}}} {
>
> I'm a little nervous about you having a parameter called "args", since
> that specific name has a special meaning in Tcl; it's how Tcl handles
> variable-length argument lists.

Yes, I'd better change that. Probably it works only because that name is
special only as the last parameter.

> If we can assume the existence of a shell (which we do elsewhere), we
> can perhaps do this more simply by putting the environment variable
> settings in the command before the command name.  It's a pity that git
> citool won't take the author name/email/date as command-line arguments
> or from a file, since it ends up being pretty verbose doing it the way
> you have.

If I understand correctly, using a shell would require composing the
command as a string, which itself requires quoting the author name & email,
and other argument strings. I did not feel confident enough to do that, so
chose a dumb but safe solution.

>> @@ -7861,7 +7908,17 @@ proc cherrypick {} {
>>      # no error occurs, and exec takes that as an indication of error...
>>      if {[catch {exec sh -c "git cherry-pick -r $rowmenuid 2>&1"} err]} {
>>       notbusy cherrypick
>> -     error_popup $err
>> +     if {[regexp -line \
>> +         {Entry '(.*)' would be overwritten by merge} $err msg fname]} {
>> +         error_popup [mc "Cherry-pick failed: file '%s' had local modifications.
>> +Your working directory is in an inconsistent state." $fname]
>
> That message seems a bit too scary.  It's not inconsistent, it's just
> got local modifications.  If I remember correctly, in this situation
> git cherry-pick will back out all the changes it did and leave the
> working directory as it was before.

Yes, I'll have to reword it.

> [list] as an idiom for the empty list is a little unusual (here and
> elsewhere in your patches); {} would be more usual.

I'm more used to languages where lists and strings are very different types...
Even in perl you have to use [] for an empty list ref, and '' for an
empty string.

Alexander

^ permalink raw reply

* Re: Fwd: git status options feature suggestion
From: Johannes Schindelin @ 2008-10-09  9:03 UTC (permalink / raw)
  To: Caleb Cushing; +Cc: git
In-Reply-To: <81bfc67a0810082327q71b9d6apf2787eb8519031bb@mail.gmail.com>

Hi,

On Thu, 9 Oct 2008, Caleb Cushing wrote:

> > How about "git ls-files -o"?
> 
> doh... hadn't even heard of that command.

Which is good!  As ls-files is listed as plumbing.  Users should not need 
to call ls-files, so I like your idea about adding --new, --untracked etc. 
to "git status" (I do not agree with others that "git status" has to stay 
that non-existant "git commit --dry-run").

Could you list exactly which options you want implemented?

Ciao,
Dscho

^ permalink raw reply

* [StGit PATCH 1/2] Handle "git diff-tree --stdin" error
From: Samuel Tardieu @ 2008-10-09  9:01 UTC (permalink / raw)
  To: git

If, for any reason, one of the SHA1 is not a commit object,
"git diff-tree --stdin" will signal an error on its standard
error and will only issue the requested "end" pattern.

"stg diff" could wait forver for the right references to
happen. With this patch, we now get:

% stg diff
stg diff: error: Object 6daaab2215a3d277a315d6938bdda86b2f75f6af not a commit
---
 stgit/lib/git.py |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/stgit/lib/git.py b/stgit/lib/git.py
index 4f210f8..45c0b32 100644
--- a/stgit/lib/git.py
+++ b/stgit/lib/git.py
@@ -579,10 +579,10 @@ class DiffTreeProcesses(object):
         p.stdin.write(query + end)
         p.stdin.flush()
         s = ''
-        while not (s.endswith('\n' + end) or s.endswith('\0' + end)):
+        while not s.endswith(end):
             s += os.read(p.stdout.fileno(), 4096)
-        assert s.startswith(query)
-        assert s.endswith(end)
+        if not s.startswith(query):
+            raise RepositoryException(os.read(p.stderr.fileno(), 4096))
         return s[len(query):-len(end)]
 
 class Repository(RunWithEnv):

^ permalink raw reply related

* [StGit PATCH 2/2] Always resolve "git describe" to something
From: Samuel Tardieu @ 2008-10-09  9:02 UTC (permalink / raw)
  To: git
In-Reply-To: <20081009090157.12637.45887.stgit@arrakis.enst.fr>

Sometimes, "git describe" cannot describe the current version. Use
"--always" so that we have a fallback.
---
 stgit/version.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/stgit/version.py b/stgit/version.py
index d57053d..05fa8e9 100644
--- a/stgit/version.py
+++ b/stgit/version.py
@@ -8,7 +8,7 @@ class VersionUnavailable(StgException):
 def git_describe_version():
     path = sys.path[0]
     try:
-        v = run.Run('git', 'describe', '--tags', '--abbrev=4'
+        v = run.Run('git', 'describe', '--tags', '--abbrev=4', '--always'
                     ).cwd(path).output_one_line()
     except run.RunException, e:
         raise VersionUnavailable(str(e))

^ permalink raw reply related

* Re: [PATCH 5/7] gitk: Make cherry-pick call git-citool on conflicts.
From: Paul Mackerras @ 2008-10-09 10:57 UTC (permalink / raw)
  To: Alexander Gavrilov; +Cc: git
In-Reply-To: <bb6f213e0810090124i62a51e92n45836ee02577331a@mail.gmail.com>

Alexander Gavrilov writes:

> If I understand correctly, using a shell would require composing the
> command as a string, which itself requires quoting the author name & email,
> and other argument strings. I did not feel confident enough to do that, so
> chose a dumb but safe solution.

You're right.  I think we should do it basically the way you suggest,
but the saving/restoring of the environment can be done a bit more
concisely like this:

proc exec_citool {args {baseid {}}} {
    global commitinfo env

    set save_env [array get env GIT_AUTHOR_*]

    if {$baseid ne {}} {
	# as before ...
    }

    eval exec git citool $args &

    catch {array unset env GIT_AUTHOR_*}
    array set env $save_env
}

> I'm more used to languages where lists and strings are very different types...
> Even in perl you have to use [] for an empty list ref, and '' for an
> empty string.

In Tcl, everything is a string. :)

Paul.

^ permalink raw reply

* Re: [PATCH 1/7] gitk: Enhance UI popup and accelerator handling.
From: Paul Mackerras @ 2008-10-09 11:02 UTC (permalink / raw)
  To: Alexander Gavrilov; +Cc: git
In-Reply-To: <bb6f213e0810090112l60d7b4c3v42e42d9d769c6057@mail.gmail.com>

Alexander Gavrilov writes:

> On Thu, Oct 9, 2008 at 4:27 AM, Paul Mackerras <paulus@samba.org> wrote:
> >> +    catch { bind . <Shift-Key-XF86_Switch_VT_4> {newview 0} }
> >
> > What is this key, or why is this line needed?
> 
> It is a workaround for an apparent bug in interaction between Tk and
> XKB on some systems.
> XKB configuration files bind those symbols to Ctrl-Alt-F*
> combinations, but Tk's keyboard
> handiling code sees them when Shift-F* is pressed. I'll be glad to
> find a better fix, but that's
> all I could do for now.

OK, that information should go in the patch description.

> > You need to change the error returns in domktag to say "return 0",
> > otherwise this will give a "can't use empty string as operand of "!""
> > Tcl error.
> 
> I did not know this. I'm not that familiar with Tcl...

Then I am amazed at how much you have been able to accomplish...

There's a lot of information available in the Tcl/Tk man pages.  On
Debian or Ubuntu, you need the tcl8.5-doc and tk8.5-doc packages
installed.  Then you can do e.g. "man 3tcl Tcl" to get a summary of
the Tcl language syntax, etc.

BTW, I haven't forgotten about your encoding support patches.  The
last month has been occupied with travelling for Kernel Summit and the
Linux Plumbers Conference, followed by a vacation, and then catching
up with work that has piled up, so I haven't had much time to spare
for gitk hacking.

Paul.

^ permalink raw reply

* Re: [PATCH] Implement git clone -v
From: Junio C Hamano @ 2008-10-09 11:06 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: Shawn O. Pearce, Alex Riesen, Constantine Plotnikov, git
In-Reply-To: <1223509232-3520-1-git-send-email-vmiklos@frugalware.org>

Miklos Vajna <vmiklos@frugalware.org> writes:

> The new -v option forces the progressbar, even in case the output is not
> a terminal.
>
> Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>

The patch made me wonder why this new feature had to be implemented in the
first place and had me look up the message the patch was an follow-up to.
For somebody who would not recall the original request-for-feature (that
includes you 6 months from now), it would have been easier to understand
the context if the commit message said what the intended purpose of this
(i.e. "have it read by an IDE").

^ permalink raw reply

* Re: [PATCH maint] builtin-merge.c: fix memory under-allocation
From: Junio C Hamano @ 2008-10-09 11:12 UTC (permalink / raw)
  To: Brandon Casey; +Cc: Miklos Vajna, Shawn O. Pearce, Git Mailing List
In-Reply-To: <0LPLRUZaEHuEZTri_v38ySJHqYAhrfOpOkyUviUH9eOrx8IXBEAzYA@cipher.nrlssc.navy.mil>

Brandon Casey <casey@nrlssc.navy.mil> writes:

> Miklos Vajna wrote:
>> On Wed, Oct 08, 2008 at 07:07:54PM -0500, Brandon Casey <casey@nrlssc.navy.mil> wrote:
>>> While we're at it, change the allocation to reference the variable it is
>>> allocating memory for to try to prevent a similar mistake if the type is
>>> changed in the future.
>> 
>> If this is really a problem, then I think it would be good to mention
>> this in Documentation/CodingGuidelines.
>
> That's fine. Though I didn't mean to imply that the memory under-allocation
> was caused by a change in variable type in this case. Re-reading my commit
> message, maybe it sounds like that.

Yeah, it does.  I was scratching my head and had to read the patch three
times until I got it (yes, I am especially slower than usual today, as the
reason I am reading mails right now is because I am jetlagged and cannot
sleep).

^ permalink raw reply

* Re: [PATCH/RFC] Add post-init hook
From: Junio C Hamano @ 2008-10-09 11:24 UTC (permalink / raw)
  To: Jeff King; +Cc: Jonathan del Strother, git
In-Reply-To: <20081009014146.GA14204@coredump.intra.peff.net>

Jeff King <peff@peff.net> writes:

> On Wed, Oct 08, 2008 at 09:16:56AM +0100, Jonathan del Strother wrote:
> ...
>> I want symlinks so I only have to edit my hooks in one place whenever
>> I change them)
>
> This makes a lot of sense to me as a best-practice. I wonder if we
> wouldn't do better to add a core.symlink-templates option?

AFAIR, "git init" copies symlinks in templates as symlinks, so I do not
see why you would even want to have such an option.

Wouldn't it be better if users and installations with such a special
set of templates specified by core.template or --template prepare a
template directory with files and symbolic links of their liking?  If
they want some hooks to point at the latest copy of installation specific
standard hook script, templates/hooks/$that_hook can be a symlink to the
real location, no?

^ permalink raw reply

* Re: [PATCH/RFC] Add post-init hook
From: Jeff King @ 2008-10-09 11:32 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jonathan del Strother, git
In-Reply-To: <7viqs2ovte.fsf@gitster.siamese.dyndns.org>

On Thu, Oct 09, 2008 at 04:24:29AM -0700, Junio C Hamano wrote:

> > This makes a lot of sense to me as a best-practice. I wonder if we
> > wouldn't do better to add a core.symlink-templates option?
> 
> AFAIR, "git init" copies symlinks in templates as symlinks, so I do not
> see why you would even want to have such an option.

Ah, I didn't realize that. In that case, yes, setting up a template
directory of symlinks makes the most sense. I think a core.template
option is still worthwhile, though.

-Peff

^ permalink raw reply

* Re: [PATCH/RFC] Add post-init hook
From: Alex Riesen @ 2008-10-09 11:34 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, Jonathan del Strother, git
In-Reply-To: <7viqs2ovte.fsf@gitster.siamese.dyndns.org>

2008/10/9 Junio C Hamano <gitster@pobox.com>:
> Jeff King <peff@peff.net> writes:
>> On Wed, Oct 08, 2008 at 09:16:56AM +0100, Jonathan del Strother wrote:
>> ...
>>> I want symlinks so I only have to edit my hooks in one place whenever
>>> I change them)
>>
>> This makes a lot of sense to me as a best-practice. I wonder if we
>> wouldn't do better to add a core.symlink-templates option?
>
> AFAIR, "git init" copies symlinks in templates as symlinks, so I do not
> see why you would even want to have such an option.
>
> Wouldn't it be better if users and installations with such a special
> set of templates specified by core.template or --template prepare a
> template directory with files and symbolic links of their liking?  If
> they want some hooks to point at the latest copy of installation specific
> standard hook script, templates/hooks/$that_hook can be a symlink to the
> real location, no?

It will be replaced with a file next time you update your git installation.
Seems like we need ~/.gitconfig/*...

^ permalink raw reply

* [Interdiff] [RFC PATCH v2] Documentation: add manpage about workflows
From: Thomas Rast @ 2008-10-09 11:42 UTC (permalink / raw)
  To: git; +Cc: santi, Dmitry Potapov, Junio C Hamano
In-Reply-To: <1223552537-6918-1-git-send-email-trast@student.ethz.ch>

---

I wrote:
> Interdiff will follow, as before.



diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
index 87c2270..037ace5 100644
--- a/Documentation/gitworkflows.txt
+++ b/Documentation/gitworkflows.txt
@@ -39,24 +39,32 @@ beginning. It is always easier to squash a few commits together than
 to split one big commit into several.  Don't be afraid of making too
 small or imperfect steps along the way. You can always go back later
 and edit the commits with `git rebase \--interactive` before you
-publish them.
+publish them.  You can use `git stash save \--keep-index` to run the
+test suite independent of other uncommitted changes; see the EXAMPLES
+section of linkgit:git-stash[1].
 
 
 MANAGING BRANCHES
 -----------------
 
-Usually a feature (or other change) evolves in stages: it "graduates"
-from patch to the testing branches and on to stable releases.  During
-this process, it may require fixes or improvements.  XXX terrible
-paragraph XXX
+There are two main tools that can be used to include changes from one
+branch on another: linkgit:git-merge[1] and
+linkgit:git-cherry-pick[1].
 
-Merges (as opposed to cherry-picks, see below) greatly simplify
-handling large numbers of commits, so a scalable workflow needs to use
-merges.  Fortunately Git is very good at merging.
+Merges have many advantages, so we try to solve as many problems as
+possible with merges alone.  Cherry-picking is still occasionally
+useful; see "Merging upwards" below for an example.
 
-XXX non sequitur XXX
-In the following sections we discuss some problems that arise from
-such a "change flow", and how to solve them with Git.
+Most importantly, merging works at the branch level, while
+cherry-picking works at the commit level.  This means that a merge can
+carry over the changes from 1, 10, or 1000 commits with equal ease,
+which in turn means the workflow scales much better to a large number
+of contributors (and contributions).  Merges are also easier to
+understand because a merge commit is a "promise" that all changes from
+all its parents are now included.
+
+There is a tradeoff of course: merges require a more careful branch
+management.  The following subsections discuss the important points.
 
 
 Graduation
@@ -66,13 +74,13 @@ As a given feature goes from experimental to stable, it also
 "graduates" between the corresponding branches of the software.
 `git.git` uses the following 'main branches':
 
-* 'master' tracks the commits that should go into the next release;
-
 * 'maint' tracks the commits that should go into the next "maintenance
-  release", i.e., update of the last released stable version; and
+  release", i.e., update of the last released stable version;
 
-* 'next' is intended as a testing branch for people who like to use
-  more experimental stuff.
+* 'master' tracks the commits that should go into the next release;
+
+* 'next' is intended as a testing branch for topics not stable enough
+  for master yet.
 
 There is a fourth official branch that is used slightly differently:
 
@@ -80,6 +88,9 @@ There is a fourth official branch that is used slightly differently:
   not quite ready for inclusion yet (see "Integration Branches"
   below).
 
+Each of the four branches is usually a direct descendant of the one
+above it.
+
 Conceptually, the feature enters at an unstable branch (usually 'next'
 or 'pu'), and "graduates" to 'master' for the next release once it is
 considered stable enough.
@@ -88,10 +99,9 @@ considered stable enough.
 Merging upwards
 ~~~~~~~~~~~~~~~
 
-As explained above, features conceptually "graduate downwards" to
-older releases.  This cannot be done by actually merging downwards,
-however, since that would merge 'all' changes on the unstable branch
-into the stable one.  Hence the following:
+The "downwards graduation" discussed above cannot be done by actually
+merging downwards, however, since that would merge 'all' changes on
+the unstable branch into the stable one.  Hence the following:
 
 .Merge upwards
 [caption="Rule: "]
@@ -187,45 +197,41 @@ into a throw-away branch.
 [caption="Rule: "]
 =====================================
 To test the interaction of several topics, merge them into a
-throw-away branch.
+throw-away branch.  You must never base any work on such a branch!
 =====================================
 
 If you make it (very) clear that this branch is going to be deleted
 right after the testing, you can even publish this branch, for example
 to give the testers a chance to work with it, or other developers a
 chance to see if their in-progress work will be compatible.  `git.git`
-has such an official integration branch called 'pu'.  You must never
-base any work on such a throw-away branch!
+has such an official integration branch called 'pu'.
 
 
-SHARING WORK
-------------
+DISTRIBUTED WORKFLOWS
+---------------------
 
 After the last section, you should know how to manage topics.  In
 general, you will not be the only person working on the project, so
 you will have to share your work.
 
-Roughly speaking, there are two important workflows: push/pull and
-format-patch/am.  The important difference is that push/pull can
-propagate merges, while format-patch cannot.  Medium to large projects
-will typically employ some mixture of the two:
+Roughly speaking, there are two important workflows: merge and patch.
+The important difference is that the merge workflow can propagate full
+history, including merges, while patches cannot.  Both workflows can
+be used in parallel: in `git.git`, only subsystem maintainers use
+the merge workflow, while everyone else sends patches.
 
-* "Upstream" in the most general sense 'pushes' changes to the
-  repositor(ies) holding the official history of the project.
-  Everyone can 'fetch' from there to stay up to date.
+Note that the maintainer(s) may impose restrictions, such as
+"Signed-off-by" requirements, that all commits/patches submitted for
+inclusion must adhere to.  Consult your project's documentation for
+more information.
 
-* Frequent contributors, subsystem maintainers, etc. may push to a
-  public repository to make their changes available to upstream.
-
-* The rest -- typically anyone more than one or two levels away from the
-  main maintainer -- send patches by mail.
-
-None of these boundaries are sharp, so find out what works best for
-you.
 
+Merge workflow
+~~~~~~~~~~~~~~
 
-Push/pull
-~~~~~~~~~
+The merge workflow works by copying branches between upstream and
+downstream.  Upstream can merge contributions into the official
+history; downstream base their work on the official history.
 
 There are three main tools that can be used for this:
 
@@ -267,11 +273,11 @@ explained earlier.
 
 If you are a maintainer and would like to merge other people's topic
 branches to the main branches, they will typically send a request to
-do so by mail.  Such a request might say
+do so by mail.  Such a request looks like
 
 -------------------------------------
 Please pull from
-    git://some.server.somewhere/random/repo.git mytopic
+    <url> <branch>
 -------------------------------------
 
 In that case, 'git-pull' can do the fetch and merge in one go, as
@@ -290,8 +296,8 @@ know better how to resolve them).  It is one of the rare cases where
 downstream 'should' merge from upstream.
 
 
-format-patch/am
-~~~~~~~~~~~~~~~
+Patch workflow
+~~~~~~~~~~~~~~
 
 If you are a contributor that sends changes upstream in the form of
 emails, you should use topic branches as usual (see above).  Then use
@@ -308,9 +314,7 @@ maintainer's life easier).
 =====================================
 
 See the linkgit:git-format-patch[1] and linkgit:git-send-email[1]
-manpages for further usage notes.  Also you should be aware that the
-maintainer may impose further restrictions, such as "Signed-off-by"
-requirements.
+manpages for further usage notes.
 
 If the maintainer tells you that your patch no longer applies to the
 current upstream, you will have to rebase your topic (you cannot use a
@@ -326,11 +330,11 @@ You can then fix the conflicts during the rebase.  Presumably you have
 not published your topic other than by mail, so rebasing it is not a
 problem.
 
-If you receive such a patch (as maintainer, or perhaps as a reader of
-the mailing list it was sent to), save the mail to a file and use
-'git-am':
+If you receive such a patch series (as maintainer, or perhaps as a
+reader of the mailing list it was sent to), save the mails to files,
+create a new topic branch and use 'git-am' to import the commits:
 
-.format-patch/am: Publishing branches/topics
+.format-patch/am: Importing patches
 [caption="Recipe: "]
 =====================================
 `git am < patch`

^ permalink raw reply related

* [RFC PATCH v2] Documentation: add manpage about workflows
From: Thomas Rast @ 2008-10-09 11:42 UTC (permalink / raw)
  To: git; +Cc: santi, Dmitry Potapov, Junio C Hamano
In-Reply-To: <adf1fd3d0810010254k5961b182ked9acda55e2aa57c@mail.gmail.com>

This attempts to make a manpage about workflows that is both handy to
point people at it and as a beginner's introduction.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>

---

[Apologies if some of the Cc's were sent twice; I got a bounce because
of non-ASCII headers and was unable to tell if any were delivered.]

Let's try another iteration.

I decided the "MANAGING BRANCHES" introduction paragraph was a good
place to (finally) mention the points about merge vs. cherry-pick
raised by Dmitry earlier.

I think I've addressed the other concerns, except for the "SHARING
WORK" section, now renamed to "DISTRIBUTED WORKFLOWS":

Santi Béjar wrote:
> Sorry, but I don't see the point explaining how to publish the
> branches, or keep them up to date.

I feel it needs to be explained _somewhere_, since pull is designed to
make the merge workflow as easy as possible, and then push/fetch are
needed to complete the picture (especially so since I'm trying to make
a point of highlighting when not to use pull).  Maybe you can/want to
convince me otherwise.

And note that push is not explained in gittutorial.txt, only linked.
It is explained in gitcore-tutorial.txt, but that says

  However, an understanding of these low-level tools can be helpful if
  you want to understand git's internals.

in the introduction.  I don't really expect any user to read any
further after hearing that everything in there is "low-level".  Maybe
some tutorial cleanup would be in order.

Other than that, I'll wait for some more comments, then polish up the
commit message and submit "for real".

Interdiff will follow, as before.

- Thomas


 Documentation/Makefile         |    2 +-
 Documentation/gitworkflows.txt |  362 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 363 insertions(+), 1 deletions(-)

diff --git a/Documentation/Makefile b/Documentation/Makefile
index ded0e40..e33ddcb 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -6,7 +6,7 @@ MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt githooks.txt \
 	gitrepository-layout.txt
 MAN7_TXT=gitcli.txt gittutorial.txt gittutorial-2.txt \
 	gitcvs-migration.txt gitcore-tutorial.txt gitglossary.txt \
-	gitdiffcore.txt
+	gitdiffcore.txt gitworkflows.txt
 
 MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
 MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT))
diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
new file mode 100644
index 0000000..037ace5
--- /dev/null
+++ b/Documentation/gitworkflows.txt
@@ -0,0 +1,362 @@
+gitworkflows(7)
+===============
+
+NAME
+----
+gitworkflows - An overview of recommended workflows with git
+
+SYNOPSIS
+--------
+git *
+
+
+DESCRIPTION
+-----------
+
+This document attempts to write down and motivate some of the workflow
+elements used for `git.git` itself.  Many ideas apply in general,
+though the full workflow is rarely required for smaller projects with
+fewer people involved.
+
+We formulate a set of 'rules' for quick reference, while the prose
+tries to motivate each of them.  Do not always take them literally;
+you should value good reasons for your actions higher than manpages
+such as this one.
+
+
+SEPARATE CHANGES
+----------------
+
+As a general rule, you should try to split your changes into small
+logical steps, and commit each of them.  They should be consistent,
+working independently of any later commits, pass the test suite, etc.
+This makes the review process much easier, and the history much more
+useful for later inspection and analysis, for example with
+linkgit:git-blame[1] and linkgit:git-bisect[1].
+
+To achieve this, try to split your work into small steps from the very
+beginning. It is always easier to squash a few commits together than
+to split one big commit into several.  Don't be afraid of making too
+small or imperfect steps along the way. You can always go back later
+and edit the commits with `git rebase \--interactive` before you
+publish them.  You can use `git stash save \--keep-index` to run the
+test suite independent of other uncommitted changes; see the EXAMPLES
+section of linkgit:git-stash[1].
+
+
+MANAGING BRANCHES
+-----------------
+
+There are two main tools that can be used to include changes from one
+branch on another: linkgit:git-merge[1] and
+linkgit:git-cherry-pick[1].
+
+Merges have many advantages, so we try to solve as many problems as
+possible with merges alone.  Cherry-picking is still occasionally
+useful; see "Merging upwards" below for an example.
+
+Most importantly, merging works at the branch level, while
+cherry-picking works at the commit level.  This means that a merge can
+carry over the changes from 1, 10, or 1000 commits with equal ease,
+which in turn means the workflow scales much better to a large number
+of contributors (and contributions).  Merges are also easier to
+understand because a merge commit is a "promise" that all changes from
+all its parents are now included.
+
+There is a tradeoff of course: merges require a more careful branch
+management.  The following subsections discuss the important points.
+
+
+Graduation
+~~~~~~~~~~
+
+As a given feature goes from experimental to stable, it also
+"graduates" between the corresponding branches of the software.
+`git.git` uses the following 'main branches':
+
+* 'maint' tracks the commits that should go into the next "maintenance
+  release", i.e., update of the last released stable version;
+
+* 'master' tracks the commits that should go into the next release;
+
+* 'next' is intended as a testing branch for topics not stable enough
+  for master yet.
+
+There is a fourth official branch that is used slightly differently:
+
+* 'pu' (proposed updates) is an integration branch for things that are
+  not quite ready for inclusion yet (see "Integration Branches"
+  below).
+
+Each of the four branches is usually a direct descendant of the one
+above it.
+
+Conceptually, the feature enters at an unstable branch (usually 'next'
+or 'pu'), and "graduates" to 'master' for the next release once it is
+considered stable enough.
+
+
+Merging upwards
+~~~~~~~~~~~~~~~
+
+The "downwards graduation" discussed above cannot be done by actually
+merging downwards, however, since that would merge 'all' changes on
+the unstable branch into the stable one.  Hence the following:
+
+.Merge upwards
+[caption="Rule: "]
+=====================================
+Always commit your fixes to the oldest supported branch that require
+them.  Then (periodically) merge the main branches upwards into each
+other.
+=====================================
+
+This gives a very controlled flow of fixes.  If you notice that you
+have applied a fix to e.g. 'master' that is also required in 'maint',
+you will need to cherry-pick it (using linkgit:git-cherry-pick[1])
+downwards.  This will happen a few times and is nothing to worry about
+unless you do it very frequently.
+
+
+Topic branches
+~~~~~~~~~~~~~~
+
+Any nontrivial feature will require several patches to implement, and
+may get extra bugfixes or improvements during its lifetime.
+
+Committing everything directly on the main branches leads to many
+problems: Bad commits cannot be undone, so they must be reverted one
+by one, which creates confusing histories and further error potential
+when you forget to revert part of a group of changes.  Working in
+parallel mixes up the changes, creating further confusion.
+
+The key concept here is "topic branches".  The name is pretty self
+explanatory, with a caveat that comes from the "merge upwards" rule
+above:
+
+.Topic branches
+[caption="Rule: "]
+=====================================
+Make a side branch for every topic (feature, bugfix, ...). Fork it off
+at the oldest main branch that you will eventually want to merge it
+into.
+=====================================
+
+Many things can then be done very naturally:
+
+* To get the feature/bugfix into a main branch, simply merge it.  If
+  the topic has evolved further in the meantime, merge again.
+
+* If you find you need new features from the branch 'other' to continue
+  working on your topic, merge 'other' to 'topic'.  (However, do not
+  do this "just habitually", see below.)
+
+* If you find you forked off the wrong branch and want to move it
+  "back in time", use linkgit:git-rebase[1].
+
+Note that the last two points clash: a topic that has been merged
+elsewhere should not be rebased.  See the section on RECOVERING FROM
+UPSTREAM REBASE in linkgit:git-rebase[1].
+
+We should point out that "habitually" (regularly for no real reason)
+merging a main branch into your topics -- and by extension, merging
+anything upstream into anything downstream on a regular basis -- is
+frowned upon:
+
+.Merge to downstream only at well-defined points
+[caption="Rule: "]
+=====================================
+Do not merge to downstream except:
+
+* with a good reason: upstream API changes affect your branch; your
+  branch no longer merges to upstream cleanly; etc.
+
+* at well-defined points such as when an upstream release has been tagged.
+=====================================
+
+Otherwise, the many resulting small merges will greatly clutter up
+history.  Anyone who later investigates the history of a file will
+have to find out whether that merge affected the topic in development.
+An upstream might even inadvertently be merged into a "more stable"
+branch.  And so on.
+
+
+Integration branches
+~~~~~~~~~~~~~~~~~~~~
+
+If you followed the last paragraph, you will now have many small topic
+branches, and occasionally wonder how they interact.  Perhaps the
+result of merging them does not even work?  But on the other hand, we
+want to avoid merging them anywhere "stable" because such merges
+cannot easily be undone.
+
+The solution, of course, is to make a merge that we can undo: merge
+into a throw-away branch.
+
+.Integration branches
+[caption="Rule: "]
+=====================================
+To test the interaction of several topics, merge them into a
+throw-away branch.  You must never base any work on such a branch!
+=====================================
+
+If you make it (very) clear that this branch is going to be deleted
+right after the testing, you can even publish this branch, for example
+to give the testers a chance to work with it, or other developers a
+chance to see if their in-progress work will be compatible.  `git.git`
+has such an official integration branch called 'pu'.
+
+
+DISTRIBUTED WORKFLOWS
+---------------------
+
+After the last section, you should know how to manage topics.  In
+general, you will not be the only person working on the project, so
+you will have to share your work.
+
+Roughly speaking, there are two important workflows: merge and patch.
+The important difference is that the merge workflow can propagate full
+history, including merges, while patches cannot.  Both workflows can
+be used in parallel: in `git.git`, only subsystem maintainers use
+the merge workflow, while everyone else sends patches.
+
+Note that the maintainer(s) may impose restrictions, such as
+"Signed-off-by" requirements, that all commits/patches submitted for
+inclusion must adhere to.  Consult your project's documentation for
+more information.
+
+
+Merge workflow
+~~~~~~~~~~~~~~
+
+The merge workflow works by copying branches between upstream and
+downstream.  Upstream can merge contributions into the official
+history; downstream base their work on the official history.
+
+There are three main tools that can be used for this:
+
+* linkgit:git-push[1] copies your branches to a remote repository,
+  usually to one that can be read by all involved parties;
+
+* linkgit:git-fetch[1] that copies remote branches to your repository;
+  and
+
+* linkgit:git-pull[1] that does fetch and merge in one go.
+
+Note the last point.  Do 'not' use 'git-pull' unless you actually want
+to merge the remote branch.
+
+Getting changes out is easy:
+
+.Push/pull: Publishing branches/topics
+[caption="Recipe: "]
+=====================================
+`git push <remote> <branch>` and tell everyone where they can fetch
+from.
+=====================================
+
+You will still have to tell people by other means, such as mail.  (Git
+provides the linkgit:request-pull[1] to send preformatted pull
+requests to upstream maintainers to simplify this task.)
+
+If you just want to get the newest copies of the main branches,
+staying up to date is easy too:
+
+.Push/pull: Staying up to date
+[caption="Recipe: "]
+=====================================
+Use `git fetch <remote>` or `git remote update` to stay up to date.
+=====================================
+
+Then simply fork your topic branches from the stable remotes as
+explained earlier.
+
+If you are a maintainer and would like to merge other people's topic
+branches to the main branches, they will typically send a request to
+do so by mail.  Such a request looks like
+
+-------------------------------------
+Please pull from
+    <url> <branch>
+-------------------------------------
+
+In that case, 'git-pull' can do the fetch and merge in one go, as
+follows.
+
+.Push/pull: Merging remote topics
+[caption="Recipe: "]
+=====================================
+`git pull <url> <branch>`
+=====================================
+
+Occasionally, the maintainer may get merge conflicts when he tries to
+pull changes from downstream.  In this case, he can ask downstream to
+do the merge and resolve the conflicts themselves (perhaps they will
+know better how to resolve them).  It is one of the rare cases where
+downstream 'should' merge from upstream.
+
+
+Patch workflow
+~~~~~~~~~~~~~~
+
+If you are a contributor that sends changes upstream in the form of
+emails, you should use topic branches as usual (see above).  Then use
+linkgit:git-format-patch[1] to generate the corresponding emails
+(highly recommended over manually formatting them because it makes the
+maintainer's life easier).
+
+.format-patch/am: Publishing branches/topics
+[caption="Recipe: "]
+=====================================
+* `git format-patch -M upstream..topic` to turn them into preformatted
+  patch files
+* `git send-email --to=<recipient> <patches>`
+=====================================
+
+See the linkgit:git-format-patch[1] and linkgit:git-send-email[1]
+manpages for further usage notes.
+
+If the maintainer tells you that your patch no longer applies to the
+current upstream, you will have to rebase your topic (you cannot use a
+merge because you cannot format-patch merges):
+
+.format-patch/am: Keeping topics up to date
+[caption="Recipe: "]
+=====================================
+`git pull --rebase <url> <branch>`
+=====================================
+
+You can then fix the conflicts during the rebase.  Presumably you have
+not published your topic other than by mail, so rebasing it is not a
+problem.
+
+If you receive such a patch series (as maintainer, or perhaps as a
+reader of the mailing list it was sent to), save the mails to files,
+create a new topic branch and use 'git-am' to import the commits:
+
+.format-patch/am: Importing patches
+[caption="Recipe: "]
+=====================================
+`git am < patch`
+=====================================
+
+One feature worth pointing out is the three-way merge, which can help
+if you get conflicts: `git am -3` will use index information contained
+in patches to figure out the merge base.  See linkgit:git-am[1] for
+other options.
+
+
+SEE ALSO
+--------
+linkgit:gittutorial[7],
+linkgit:git-push[1],
+linkgit:git-pull[1],
+linkgit:git-merge[1],
+linkgit:git-rebase[1],
+linkgit:git-format-patch[1],
+linkgit:git-send-email[1],
+linkgit:git-am[1]
+
+GIT
+---
+Part of the linkgit:git[1] suite.
-- 
tg: (2de69d4..) t/doc-workflows (depends on: origin/master t/doc-rebase-warn t/doc-rebase-refer)

^ permalink raw reply related

* Re: [RFC PATCH v2] Documentation: add manpage about workflows
From: Junio C Hamano @ 2008-10-09 12:50 UTC (permalink / raw)
  To: Thomas Rast; +Cc: git, santi, Dmitry Potapov, Junio C Hamano
In-Reply-To: <1223552537-6918-1-git-send-email-trast@student.ethz.ch>

Thomas Rast <trast@student.ethz.ch> writes:

> diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
> new file mode 100644
> index 0000000..037ace5
> --- /dev/null
> +++ b/Documentation/gitworkflows.txt
> @@ -0,0 +1,362 @@
> +gitworkflows(7)
> +===============
> ...
> +DESCRIPTION
> +-----------
> +
> +This document attempts to write down and motivate some of the workflow
> +elements used for `git.git` itself.  Many ideas apply in general,
> +though the full workflow is rarely required for smaller projects with
> +fewer people involved.

Hmm.  Even though I have to wonder if the workflow used in git.git should
be treated as a representative BCP.  For one thing, git.git is on the
smaller end of the spectrum (from the point of view of the size of the
codebase, but not from the size of the contributor base), it is something
we know well enough and probably is a good place to take examples from.

> +Graduation
> +~~~~~~~~~~
> +
> +As a given feature goes from experimental to stable, it also
> +"graduates" between the corresponding branches of the software.
> +`git.git` uses the following 'main branches':
> +
> +* 'maint' tracks the commits that should go into the next "maintenance
> +  release", i.e., update of the last released stable version;
> +
> +* 'master' tracks the commits that should go into the next release;
> +
> +* 'next' is intended as a testing branch for topics not stable enough
> +  for master yet.

s/not stable enough/being tested for stability/;s/ yet//;

The point being that commits on next are deemed stable enough from code
inspection but are kept out of master for a while because your maintainer
wants to be extra careful.

> +Topic branches
> +~~~~~~~~~~~~~~
> +
> +Any nontrivial feature will require several patches to implement, and
> +may get extra bugfixes or improvements during its lifetime.
> +
> +Committing everything directly on the main branches leads to many
> +problems: Bad commits cannot be undone, so they must be reverted one
> +by one, which creates confusing histories and further error potential
> +when you forget to revert part of a group of changes.  Working in
> +parallel mixes up the changes, creating further confusion.
> +
> +The key concept here is "topic branches".  The name is pretty self
> +explanatory, with a caveat that comes from the "merge upwards" rule
> +above:

I'd reword the first sentence --- Use of "Topic branches" solves these
problems.

> +We should point out that "habitually" (regularly for no real reason)
> +merging a main branch into your topics -- and by extension, merging
> +anything upstream into anything downstream on a regular basis -- is
> +frowned upon:
> +
> +.Merge to downstream only at well-defined points
> +[caption="Rule: "]
> +=====================================
> +Do not merge to downstream except:
> +
> +* with a good reason: upstream API changes affect your branch; your
> +  branch no longer merges to upstream cleanly; etc.
> +
> +* at well-defined points such as when an upstream release has been tagged.
> +=====================================
> +
> +Otherwise, the many resulting small merges will greatly clutter up
> +history.  Anyone who later investigates the history of a file will
> +have to find out whether that merge affected the topic in development.

This description misses the most important reason why merging into topic
branches is not a good idea.  Once you merge a general purpose integration
branch such as master into a topic branch, the branch ceases to be about
the single topic.  It becomes "the topic and other unrelated changes mixed
together".

> +Integration branches
> +~~~~~~~~~~~~~~~~~~~~

Nomenclature.  I think we use the word "integration branches" to mean the
stable branches such as maint/master/next, not the ones you use for
throw-away test merges.

Always merging upward is a good rule, and this is when used with topic
branches, there is one twist you did not mention but is worth knowing
about.  A topic that is meant to eventually merge into older integration
branch (e.g. maint) does not necessarily have to be merged to its final
destination branch first.  I often do this:

	git checkout tr/maint-fix-bla maint
        git am -s fix-mail-from-thomas.txt
        git checkout next
        git merge tr/maint-fix-bla
        ... cook further, perhaps adding more commits to
        ... tr/maint-fix-bla topic and merging the result to next;
	... and then when the topic appears to be stable do:
	git checkout master
        git merge tr/maint-fix-bla
	... and later
        git checkout maint
        git merge tr/maint-fix-bla
	git branch -d tr/maint-fix-bla

This keeps older integration branches stale, until the topic really gets
proven to be regression-free in the field.  This workflow is safer and
more suitable for a final integration branch to which a known breakage is
better than an unintended regression.  An alternative would be what the
reader would assume from your description of merging upwards, which would
look like this:

	git checkout tr/maint-fix-bla maint
        git am -s fix-mail-from-thomas.txt
        git checkout maint
        git merge tr/maint-fix-bla
	git checkout master
        git merge maint
        git checkout next
	git merge master

This can regress maint unintentionally and then the regression is
propagated upwards to contaminate all integration branches.

^ permalink raw reply

* Re: [PATCH] builtin-apply: fix typo leading to stack corruption
From: Junio C Hamano @ 2008-10-09 12:51 UTC (permalink / raw)
  To: Imre Deak; +Cc: git
In-Reply-To: <48ed30f5.0707d00a.2994.6f1e@mx.google.com>

Looks good and would look better with a sign-off.

^ permalink raw reply

* [RFD] Sparse checkout, unmerged entries and "reset --hard"
From: Nguyen Thai Ngoc Duy @ 2008-10-09 13:45 UTC (permalink / raw)
  To: Git Mailing List

Hi,

There is a problem with those things and I don't know how to handle
it. In brief, in "git reset --hard" (or "git read-tree --reset"),
unmerged entries will be removed from in-memory index, so merge
process does not see them and re-add them like new entries. But with
sparse checkout, "new entries" and "merged entries" are handled
differently. This may lead to stale/orphaned entries.

The detail:

 1. unmerged entries are filtered out from cmd_read_tree() if --reset
is provided.
 2. inside unpack_trees(), [1-3]way_merge() pass src[0] (which is NULL
in unmerged cases) to merged_entry()
 3. merged_entry() sees it as "no old entry so this must be new
entry", it makes sure there is no real file in working directory, but
then the check is ignored in --reset mode.
 4. entries get added as new ones.

With sparse checkout, in the last two steps, it would check if new
entry matches default sparse pattern (which determines if the entry
should be added to working directory). In case it decides the entry
should not be added to working directory, it would remove CE_UPDATE
flag from the entry. This is fine for _true_ new entries. But in
unmerged case, it would leave a stale/orphaned entry in working
directory while it is marked no-checkout in index.

I would expect sparse checkout work correctly even in unmerged case.
That is the entry is removed from working directory (if outside sparse
pattern), staged entries are removed in index, stage 0 entry is added
with no-checkout flag.

Comments? Maybe doing a two-phase merge (unmerged entries first, the
rest later)?
-- 
Duy

^ permalink raw reply

* [PATCH] builtin-apply: fix typo leading to stack corruption
From: Imre Deak @ 2008-10-08 21:24 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

This typo led to stack corruption for lines > 1024 if whitespace fixing
is in effect.

Signed-off-by: Imre Deak <imre.deak@gmail.com>

---
 builtin-apply.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-apply.c b/builtin-apply.c
index 20bef1f..720dc7f 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -1696,7 +1696,7 @@ static int match_fragment(struct image *img,
 		fixlen = ws_fix_copy(buf, orig, oldlen, ws_rule, NULL);
 
 		/* Try fixing the line in the target */
-		if (sizeof(tgtfixbuf) < tgtlen)
+		if (sizeof(tgtfixbuf) > tgtlen)
 			tgtfix = tgtfixbuf;
 		else
 			tgtfix = xmalloc(tgtlen);
-- 
1.6.0.2.308.g754c

^ permalink raw reply related

* Re: [PATCH maint] builtin-merge.c: fix memory under-allocation
From: Brandon Casey @ 2008-10-09 14:15 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Miklos Vajna, Shawn O. Pearce, Git Mailing List
In-Reply-To: <7vmyheowcr.fsf@gitster.siamese.dyndns.org>

Junio C Hamano wrote:
> Brandon Casey <casey@nrlssc.navy.mil> writes:
>> I didn't mean to imply that the memory under-allocation
>> was caused by a change in variable type in this case. Re-reading my commit
>> message, maybe it sounds like that.
> 
> Yeah, it does.  I was scratching my head and had to read the patch three
> times until I got it (yes, I am especially slower than usual today, as the
> reason I am reading mails right now is because I am jetlagged and cannot
> sleep).

If it's not too late, maybe this would make a better commit message:

--->8---
builtin-merge.c: allocate correct amount of memory

Fix two memory allocation errors which allocate space for a pointer rather
than enough space for the structure itself.

This:

    struct commit_list *parent = xmalloc(sizeof(struct commit_list *));

should have been this:

    struct commit_list *parent = xmalloc(sizeof(struct commit_list));
    
But while we're at it, change the allocation to reference the variable it is
allocating memory for to try to prevent a similar mistake, for example if the
type is changed, in the future.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>

^ 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