Thanks to all who reviewed the patch, here's an updated version which should address all issues. In particular, thanks to Jonas who spotted the missing git_path() before resolve_ref() - this caused git branch to always overwrite existing branches because it failed to resolve the ref. As for the missing reflog functionality - when I first did the shell to C port, git branch didn't have this feature, and this time I just updated the old patch which is how I forgot about the reflog option. The new patch attached here should have the same reflog behavior as the current shell script. Shawn, could you check that it has the correct sematics? I wasn't sure whether git branch -f foo should truncate the old log or just keep appending. The shell script does a 'touch <logfile>' on creation, which means keep appending when forcibly overwriting a branch ref, so I kept that behavior. cheers, Kristian
Attachment:
builtin-branch.patch
Description: Binary data