driusan / dgit

A Pure Go Git Implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Git Pull command

sirnewton01 opened this issue · comments

Dgit has a push, but not pull command, which causes "go get -u" to fail. Once this is implemented, the go-get-tests.sh has commented out tests for it.

@driusan what would be involved with pull?

I don't think it would involve much. pull is basically just git fetch && git merge, both of which are implemented. The hardest part would probably be parsing the command line in the same way as the real git client and making sure they get passed properly to the right subcommand.

I'm not 100% sure if 3-way merge is working correctly (especially when there's conflicts), but with all the read-tree tests I've been doing lately it should be getting pretty close to reliable and even without it git pull would work with fast-forward pulls if implemented that way.

Thanks, I'll see what I can do with this, even if just simple fast forward is implemented it would satisfy go get -u.

It seems like this would be relatively simple to hook into the existing fetch/merge with some limitations. There are a number of problems encountered with merge. See #99

#106 implements pull well enough to pull from a remote repository such as GitHub, but it lacks the ability to do local repositories. Once the pull request is merged this enhancement should remain probably remain open so that other protocols such as local files is implemented. The go_get_complete tag could be removed at that point.

Is the problem with the pull command, or is the problem with the fetch command? If it's fetch, we should probably make a separate, more specific issue.

Ah, fait point. Ok, I'm closing this and raising a fetch enhancement.