4.4 Exercise 4 - a git conflict

From git’s repo, checkout d9d65e9f6a and merge b57e8119e6. 2.

CB in contrib/completion/git-completion.bash

Listing 4.9:Exercise 4 - CB in contrib/completion/git-completion.bash
2614<<<<<<< HEAD 
2615        local subcommands="add status init deinit update summary foreach sync absorbgitdirs" 
2616||||||| d62dad7a7d 
2617        local subcommands="add status init deinit update summary foreach sync" 
2618======= 
2619        local subcommands="add status init deinit update set-branch summary foreach sync" 
2620>>>>>>> b57e8119e6

Working from UB (keeping markers for clarity)

Listing 4.10:Exercise 4 - UB in contrib/completion/git-completion.bash
2614<<<<<<< HEAD 
2615        local subcommands="add status init deinit update summary foreach sync absorbgitdirs" 
2616||||||| d62dad7a7d

Get dML

Listing 4.11:Exercise 4 - MB and LB in contrib/completion/git-completion.bash
2616||||||| d62dad7a7d 
2617        local subcommands="add status init deinit update summary foreach sync" 
2618======= 
2619        local subcommands="add status init deinit update set-branch summary foreach sync" 
2620>>>>>>> b57e8119e6

dML: set-branch is added between update and summary as a subcommand.

Apply dML on UB

Listing 4.12:Exercise 4 - UB in contrib/completion/git-completion.bash
2614<<<<<<< HEAD 
2615        local subcommands="add status init deinit update set-branch summary foreach sync absorbgitdirs" 
2616||||||| d62dad7a7d

Result

Listing 4.13:Exercise 4 - Conflict Resolution
2610_git_submodule () 
2611
2612        __git_has_doubledash && return 
2613 
2614        local subcommands="add status init deinit update set-branch summary foreach sync absorbgitdirs" 
2615        local subcommand="$(__git_find_on_cmdline "$subcommands")"