Bug(let): status reports 'can fast-forward' when not true
I was not really thinking when I get fetched, and ran git status on my pu branch. I was told that pu was behind origin/pu by 104 commits and could be fast-forwarded, so I git merged origin/pu and was mildly surprised when git merge made a commit for me.
A quick investigation revealed that pu had (of course) been rewound, but the only commits that it had that the new pu didn't, were merge commits.
I think that the problem is that in remote.c, a list of non-merge commits is generated for the status report. If it's non-zero, then it's the correct number of 'useful' commits to report, however if it is zero then this is not sufficient for a merge to fast-forward. The total number of commits unique to the local branch, including merges, must also be zero.
Is this a bug?
Signature · 2 lines
Charles Bailey http://ccgi.hashpling.plus.com/blog/
[cc'ing Kjetil, as this is a fallout of 19de5d6]
Quoted 8 lines · Charles Bailey
I was not really thinking when I get fetched, and ran git status on my pu branch. I was told that pu was behind origin/pu by 104 commits and could be fast-forwarded, so I git merged origin/pu and was mildly surprised when git merge made a commit for me.
A quick investigation revealed that pu had (of course) been rewound, but the only commits that it had that the new pu didn't, were merge commits.
I think this is an unintended consequence of 19de5d6 (stat_tracking_info(): only count real commits, 2009-03-04). It is perhaps more useful when seeing the actual numbers to see only the count of real commits, but it makes statements like "can be fast-forwarded" no longer true.
So I think we need to either:
1. reword the "can be fast-forwarded" text to something else
2. revert 19de5d6, since merge commits _can_ be interesting
3. refactor stat_tracking_info to return "real" and "merge" counts,
and change the text for the case of "real == 0 && merge > 0".
-Peff
Quoted 21 lines · Jeff King
[cc'ing Kjetil, as this is a fallout of 19de5d6]
Quoted 8 lines · Charles Bailey
I was not really thinking when I get fetched, and ran git status on my pu branch. I was told that pu was behind origin/pu by 104 commits and could be fast-forwarded, so I git merged origin/pu and was mildly surprised when git merge made a commit for me.
A quick investigation revealed that pu had (of course) been rewound, but the only commits that it had that the new pu didn't, were merge commits.
I think this is an unintended consequence of 19de5d6 (
stat_tracking_info(): only count real commits, 2009-03-04). It is perhaps more useful when seeing the actual numbers to see only the count of real commits, but it makes statements like "can be fast-forwarded" no longer true.So I think we need to either:
Quoted 8 lines
1. reword the "can be fast-forwarded" text to something else
2. revert 19de5d6, since merge commits _can_ be interesting
3. refactor
stat_tracking_infoto return "real" and "merge" counts,and change the text for the case of "real == 0 && merge > 0".-Peff
Let's revert it for now and then try #3 after 1.6.3 final.
Quoted 25 lines · Junio C Hamano
Quoted 23 lines · Jeff King
[cc'ing Kjetil, as this is a fallout of 19de5d6]
Quoted 8 lines · Charles Bailey
I was not really thinking when I get fetched, and ran git status on my pu branch. I was told that pu was behind origin/pu by 104 commits and could be fast-forwarded, so I git merged origin/pu and was mildly surprised when git merge made a commit for me.
A quick investigation revealed that pu had (of course) been rewound, but the only commits that it had that the new pu didn't, were merge commits.
I think this is an unintended consequence of 19de5d6 (
stat_tracking_info(): only count real commits, 2009-03-04). It is perhaps more useful when seeing the actual numbers to see only the count of real commits, but it makes statements like "can be fast-forwarded" no longer true.So I think we need to either:
1. reword the "can be fast-forwarded" text to something else
Quoted 8 lines
Quoted 6 lines
2. revert 19de5d6, since merge commits _can_ be interesting
3. refactor
stat_tracking_infoto return "real" and "merge" counts,and change the text for the case of "real == 0 && merge > 0".-Peff
Let's revert it for now and then try #3 after 1.6.3 final.
OK.
Then I have some time thinking about a solution. Maybe:
4. Introduce an argument "--no-merges", and then only show real commits when used.
-- kjetil