From: Piotr Krukowiecki Date: Wed, 23 Mar 2011 08:11:24 GMT Subject: git cherry improvements suggestions Message-ID: Hi, Short version: 1. The is misleading IMO 2. Please extend the output to show "full diff" 3. Please add numerical/time 4. Would it be possible to use "=" for "equivalent change"? Please tell me your opinions. Long version: I have a branch that have diverged long time ago from main branch. I can't use merge, so I'm using cherry-pick to transplant changes between branches (the other reason is I'm using git-svn...) I noticed I did not transplant a certain commit recently. I wanted to see if there are any other commits I didn't transplant. I tried using git cherry: 1. man page says: git cherry [-v] [ [ []]] $ git cherry -v master 9_1 20 fatal: Unknown commit 20 After reading man page I though the limit is a numeric limit, like "check last 20 commits". I just realized it is a commit sha1. I think man could be improved to explicitly say it's sha1 - maybe change the name from to something else (? ?) 2. The cherry currently shows only changes against one branch: Every commit that doesn’t exist in the branch has its id (sha1) reported[...] The ones that have equivalent change already in the branch are prefixed with a minus (-) sign, and those that only exist in the branch are prefixed with a plus (+) symbol So it will not show commits that exist only in but not in . In my case changes are transplanted both ways (in general), so I have to check both branches. I understand I can switch branch positions, but this requires post-processing to get rid of equivalent commits, maybe something like this:. git cherry upstream head | grep '^[+]' > head_only git cherry head upstream | grep '^[+]' > upstream_only This is not very convenient, and I think you won't be able to see transplanted changes with different ids (e.g. with conflicts) next to each other (such commits would have probably the same commit message and it's possible they were done at the same/close time, so it should be easy to see that although the commits are shown as different, they represent the same change) I think it would be usable to be able to see all changes: - commits in upstream only - commits in head only - equivalent commits (in both upstream and head) Not sure how it should act in case of - maybe it should be illegal to use in this mode. See also next point. 3. I think a numerical limit (or even: time limit etc) of checked commits would be useful, especially in "full diff" mode. Without it would be not possible to do a full diff with a limit, and when switching branch positions you'd have to lookup two commits: git cherry upstream head head_limit | grep '^[+]' > head_only git cherry head upstream upstream_limit | grep '^[+]' > upstream_only In case of numerical it should probably take changes from head and changes from upstream and see what is their status. So the actual output would list from to 2* commits depending if all commits are on both branches, or no commit is equal. 4. The output format uses "-" to show commits that exist in both branches. I find this unnatural. There probably is a reason for this? But maybe it would be possible to change the symbols? For example: - commit in upstream only + commit in head only = equivalent commit Or "<", ">", " " or any other graphic symbol. Thanks for you time reading this long post :) -- Piotr Krukowiecki