charlesthomas / magpie

Git-backed Evernote replacement
MIT License
645 stars 50 forks source link

Removed dependency on Sh #38

Closed matthewi closed 10 years ago

matthewi commented 10 years ago

First pass at refactoring code to use GitPython instead of Sh or other mechanism to call out to git binary. GitPython provides a pure Python implementation for manipulation git objects and allows use of git binary where available.

TODO: Multiple config_problems messages are generated when the repository is invalid.

I should add that for some operations (repository creation) GitPython still relies on an external binary. But core actions (adding, editing, removing files) operates without it. Another option that I just learned of is Dulwich (https://github.com/jelmer/dulwich). It appears to have no dependency on a git binary, even for repository creation.

charlesthomas commented 10 years ago

I really appreciate that you spent the time on this. I think you absolutely had the right idea trying to get sh out of the requirements. Unfortunately, I don't really see that happening with GitPython, if it can't init a new repo. I think Dulwich is definitely the way to go.

I am planning a new release very soon (hopefully tonight, depending on some pending bug fixes). As soon as that is out, I plan to start migrating to Dulwich. I started playing around with it already, and I think it will be pretty straightforward.