{"thread":{"id":"342","subject":"[PATCH] cg-log: Add -f switch to list changed files","startedAt":"2005-04-26T23:03:10Z","lastAt":"2005-04-26T23:03:10Z","messageCount":1,"participants":["Jonas Fonseca"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"1825","messageId":"20050426230310.GD28560@diku.dk","threadId":"342","inReplyTo":null,"subject":"[PATCH] cg-log: Add -f switch to list changed files","fromName":"Jonas Fonseca","fromEmail":"fonseca@diku.dk","sentAt":"2005-04-26T23:03:10Z","receivedAt":"2005-04-26T23:03:10Z","isPatch":true,"sender":{"key":"fonseca@diku.dk","avatar":"https://gravatar.com/avatar/f82f3ad698717c51873b020c750a92438c820a24056dc39fe4d07baa10a92264?d=mp&s=160"},"body":"Add -f switch to show changed files between the commit header and log message.\nIt doesn't do anything fancy like wrapping long lines and can be quite costly.\n\nSigned-off-by: Jonas Fonseca <fonseca@diku.dk>\n\n---\ncommit e5eb91b0a47e1169006034af434312c7f38dc902\ntree bd580d135661ff0bc8eb32cb36025cd1e7bdda13\nparent 580058cf4cbb6c95e5e84480499ca1c635d99376\nauthor Jonas Fonseca <fonseca@diku.dk> 1114556053 +0200\ncommitter Jonas Fonseca <fonseca@diku.dk> 1114556053 +0200\n\n cg-help |    2 +-\n cg-log  |   44 ++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 45 insertions(+), 1 deletion(-)\n\nIndex: cg-help\n===================================================================\n--- 57a559984564e31e79db28d9ad62b8ea3a55dda1/cg-help  (mode:100755 sha1:86f29161aadf15411244db9514a1fdfb03e664bd)\n+++ bd580d135661ff0bc8eb32cb36025cd1e7bdda13/cg-help  (mode:100755 sha1:18cc6a72de1cbe8ad7c66c30485350b5da252f9f)\n@@ -21,7 +21,7 @@\n \tcg-export\tDESTDIR [TREE_ID]\n \tcg-help\n \tcg-init\t\t[SOURCE_LOC]\n-\tcg-log\t\t[-c] [COMMIT_ID | COMMIT_ID:COMMIT_ID]\n+\tcg-log\t\t[-c] [-f] [COMMIT_ID | COMMIT_ID:COMMIT_ID]\n \tcg-ls\t\t[TREE_ID]\n \tcg-merge\t[-c] [-b BASE_ID] FROM_ID\n \tcg-mkpatch\t[COMMIT_ID | COMMIT_ID:COMMIT_ID]\nIndex: cg-log\n===================================================================\n--- 57a559984564e31e79db28d9ad62b8ea3a55dda1/cg-log  (mode:100755 sha1:58dd26ebf549cfb2e8e96fa2128f0dd34561ad55)\n+++ bd580d135661ff0bc8eb32cb36025cd1e7bdda13/cg-log  (mode:100755 sha1:1c53b31a956e7c8cbfe653143cc0f91df02a2f86)\n@@ -13,8 +13,11 @@\n #\theader\t\tGreen\t\n #\tauthor \t\tCyan\n #\tcommitter\tMagenta\n+#\tfiles\t\tBlue\n #\tsignoff\t\tYellow\n #\n+# Takes an -f option to show which files was changed.\n+#\n # Takes an id resolving to a commit to start from (HEAD by default),\n # or id1:id2 representing an (id1;id2] range of commits to show.\n \n@@ -26,16 +29,44 @@\n \tcolheader=\"$(tput setaf 2)\"    # Green\n \tcolauthor=\"$(tput setaf 6)\"    # Cyan\n \tcolcommitter=\"$(tput setaf 5)\" # Magenta\n+\tcolfiles=\"$(tput setaf 4)\"     # Blue\n \tcolsignoff=\"$(tput setaf 3)\"   # Yellow\n \tcoldefault=\"$(tput op)\"        # Restore default\n else\n \tcolheader=\n \tcolauthor=\n \tcolcommitter=\n+\tcolfiles=\n \tcolsignoff=\n \tcoldefault=\n fi\n \n+if [ \"$1\" = \"-f\" ]; then\n+\tshift\n+\tlist_files=1\n+else\n+\tlist_files=\n+fi\n+\n+list_commit_files()\n+{\n+\ttree1=\"$1\"\n+\ttree2=\"$2\"\n+\tsep=\"    * $colfiles\"\n+\t# List all files for for the initial commit\n+\tif [ -z $tree2 ]; then\n+\t\tlist_cmd=\"ls-tree $tree1\"\n+\telse\n+\t\tlist_cmd=\"diff-tree -r $tree1 $tree2\"\n+\tfi\n+\techo\n+\t$list_cmd | while read modes type sha1s file; do\n+\t\techo -n \"$sep$file\"\n+\t\tsep=\", \"\n+\tdone\n+\techo \"$coldefault:\"\n+}\n+\n if echo \"$1\" | grep -q ':'; then\n \tid1=$(commit-id $(echo \"$1\" | cut -d : -f 1)) || exit 1\n \tid2=$(commit-id $(echo \"$1\" | cut -d : -f 2)) || exit 1\n@@ -51,6 +82,8 @@\n \n $revls | $revsort | while read time commit parents; do\n \t[ \"$revfmt\" = \"rev-list\" ] && commit=\"$time\"\n+\ttree1=\n+\ttree2=\n \techo $colheader\"\"commit ${commit%:*} $coldefault;\n \tcat-file commit $commit | \\\n \t\twhile read key rest; do\n@@ -75,11 +108,22 @@\n \t\t\t\tfi\n \t\t\t\t;;\n \t\t\t\"\")\n+\t\t\t\tif [ -n \"$list_files\" ]; then\n+\t\t\t\t\tlist_commit_files \"$tree1\" \"$tree2\"\n+\t\t\t\tfi\n \t\t\t\techo; sed -re '\n \t\t\t\t\t/ *Signed-off-by:.*/Is//'$colsignoff'&'$coldefault'/\n \t\t\t\t\ts/./    &/\n \t\t\t\t'\n \t\t\t\t;;\n+\t\t\t\"tree\"|\"parent\")\n+\t\t\t\tif [ -z $tree1 ]; then\n+\t\t\t\t\ttree1=$rest\n+\t\t\t\telif [ -z $tree2 ]; then\n+\t\t\t\t\ttree2=$rest\n+\t\t\t\tfi\n+\t\t\t\techo $colheader$key $rest $coldefault\n+\t\t\t\t;;\n \t\t\t*)\n \t\t\t\techo $colheader$key $rest $coldefault\n \t\t\t\t;;\n\n\n-- \nJonas Fonseca\n"}]}