chapel-lang / chapel

a Productive Parallel Programming Language
https://chapel-lang.org
Other
1.79k stars 421 forks source link

Design and implement git2 Chapel interface #15143

Open DmiitriyJarosh opened 4 years ago

DmiitriyJarosh commented 4 years ago

Chapel hasn't implementation of git2 interface now. This issue is needed to design new interface.

DmiitriyJarosh commented 4 years ago

libgit2 -- lib, bindings to which have to be done Why important: allow to build Git functionality into your application and availability of bindings in Chapel gets opportunity to write all code connected with git in this language (instead of using extra C code).

License: as git2 api uses C library libgit2 we have to face with its licence - GPLv2 with a special Linking Exception. (This basically means that you can link it (unmodified) with any kind of software without having to release its source code)

Other languages: there are a lot of other languages which provide bindings to libgit2. In this work I want to look at java bindings - jagged and python bindings - pygit2

API: Full available api of libgit2 can be found here

What have to be implemented: Repository, Blob (like file), Branch, Commit, Tree, Remotes - main parts of git2 interface.

As for the beginning I suggest implementing this main objects with all connected infrastructure (like references, sha-1 bindings and so on). As a base I think we can use jagged and pygit2 source code. Personally, I think that designing a fully new architecture isn’t a great idea. It is better to take pygit2 architecture as a base and try to make it better using ideas from jagged and special Chapel features.