Finishing network support for libgit2 ===================================== Introduction ------------ So far, libgit2 supports fetching objects over http://, git:// and file://. This year's GSoC task is to finish network support for libgit2, namely * fetch over ssh (including an API for SSH key management), * support for packing objects (indispensable for push), * push over http, git and ssh. The existing network code is written in a modular manner and allows to be reused (regarding socket handling for example). Outline ------- 1. Fetch over SSH: Evaluate existing SSH libraries regarding their usability (licence compliant, small, platform independent) with libgit2. Implement a transport module for SSH. 1.1 SSH key managment API: Implement an easy-to-use API for the management of SSH keys. Example: managed keys could be stored within the object database, addressable through special purpose references or config options. 2. Support for packing objects: fully implement (port, where possible) the required code to create packs. This is expected to be both the most challenging and time-consuming part. 3. Push over all four transports: Implement push for libgit2. For all code parts, tests should be written. Timeline -------- 04/24 - 04/30: Discuss implementation details with the mentor(s), finish planning. 05/01 - 05/20: Implement first version of SSH transport and key management, refactor existing network code for future use where needed. 05/21 - 05/31: Start working on the pack-objects part, read / discuss pack details etc. 06/01 - 06/30: Implement pack-objects. 07/01 - 07/31: Implement push over all four transports. 08/01 - 08/13: Finish and polish code where needed, write more tests. About me -------- I study Computer Science at FU Berlin, besides I do a Git-related part time job for a SCM company. As a regular contributor to libgit2 , I'm rather familiar with the community and the bigger part of the code base. GSoC would allow me to both gain experience with "Git's network stack" and to add an important yet missing core part to libgit2. This is the first time I apply for GSoC. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html