GitSharp

From eqqon

(Difference between revisions)
Jump to: navigation, search
m (Short how-to)
m (Git# --> Git for .NET and Mono)
Line 66: Line 66:
== News ==
== News ==
 +
* August 15th, 2009: Dan Rigby created the IRC channel #GitSharp on freenode. It's a nice place to chat a little or ask questions about git.
* July 2nd, 2009: Mauricio Scheffer has set up git# on the build and integration service [http://teamcity.codebetter.com/project.html?projectId=project44 teamcity.codebetter.com]
* July 2nd, 2009: Mauricio Scheffer has set up git# on the build and integration service [http://teamcity.codebetter.com/project.html?projectId=project44 teamcity.codebetter.com]
* July 1st, 2009: Writing of blobs, trees and commits works
* July 1st, 2009: Writing of blobs, trees and commits works
Line 134: Line 135:
Changes after that commit can be tracked later after Git# is completely ported.
Changes after that commit can be tracked later after Git# is completely ported.
-
== File a Bug Report ==
+
== Collaborate! ==
 +
;Via the Mailing List:
 +
Feel free to join the [http://groups.google.com/group/gitsharp/ git# mailing list]
-
Please file any bugs at [http://github.com/henon/GitSharp/issues git# issue tracker].
+
We will post status updates regularly to keep you informed about the project status.
-
== Join the mailing list ==
+
;Via IRC:
-
;Feel free to join the [http://groups.google.com/group/gitsharp/ git# mailing list]
+
Visit us on freenode in Channel #GitSharp
-
We will post status updates regularly to keep you informed about the project status.
+
== File a Bug Report ==
 +
 
 +
Please file any bugs at [http://github.com/henon/GitSharp/issues git# issue tracker].
== Screenshots ==
== Screenshots ==

Revision as of 05:09, 17 August 2009


Agreed, git support on Windows could be better ...

... want to improve the situation?


Contribute to Git#, the most advanced open source implementation for .NET


Every little bit helps:

  • Link to the Git# website to promote the project.
  • Tell your friends ...
  • Code! Tackle some of the un-ported jgit classes or unit tests.


So let's all stop complaining about the situation, start rocking and have fun!

What is Git?

Git is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git was initially designed and developed by Linus Torvalds for Linux kernel development.

Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do.

Git is used for version control of files, much like tools such as Mercurial, Bazaar, Subversion, CVS, Perforce, and Visual SourceSafe.

Git's key characteristics make it stand out against the other SCM tools:

  • Strong and efficient support for non-linear development
  • Distributed development
  • Multiple protocol support such as HTTP, FTP, ssh, rsync, etc.
  • Efficient handling of large projects
  • Pluggable merge strategy


Popularity

According to a survey by the git community it is rapidly gaining more users. This is a graph of the survey results :
Git survey responses (1) thumb-2-.png
(borrowed from Mauricio Scheffer)

Git# --> Git for .NET and Mono

... a native Windows version of the fast & free open source version control system


GitSharp is the most advanced CSharp implementation for the .NET framework and Mono. It is aimed to be fully compatible to the original git and shall be a light weight library for cool applications that are based on git as their object database or are reading or manipulating repositories in some way.


What you could do with Git#

Git# as object oriented interface to your git repo
Want to manipulate you git repo from C#? Want to calculate statistics or create a beautiful visualization? Use git#'s well designed object oriented API to access and manipulate repositories.
Git# as object database
Git is an object database with built-in history and branching. If you need to create snapshots of your application's configuration or your user's data with alternative configuration branches then use git. By moving the HEAD in the repository you can easily implement undo/redo operations. For instance, one could build a wiki on top of git# or a distributed content management system. Write-support is already implemented so you could already give it a try.
Git# as (distributed) file system
Git has been designed by Linus Thorwalds to be a file system that is very good at content-tracking and keeping multiple distributed versions of the same content in sync. If your application needs to implement backup and/or content synchronization routines then it can build on top of git to do that. (We still need to implement remote transport for this.)
Git# as peer-to-peer content distribution system
If you need to build a content distribution framework that will easily and efficiently transport content to different machines then you can easily build one on top of git. (We still need to implement remote transport for this.)
Git# as a future replacement of msysGit?
msysGit currently is the most complete and usable native provider for git on Windows. The problem with msysGit is, that it can not be easily extended by or embedded in other applications. Apart from being a lightweight library, in the future git# might also become a real alternative to msysGit but we are still far away from this.

News

  • August 15th, 2009: Dan Rigby created the IRC channel #GitSharp on freenode. It's a nice place to chat a little or ask questions about git.
  • July 2nd, 2009: Mauricio Scheffer has set up git# on the build and integration service teamcity.codebetter.com
  • July 1st, 2009: Writing of blobs, trees and commits works
  • June 15th, 2009: Reading of commit history, trees, blobs and tags works. See the demo browser screenshot below.

Status of the Project

Development Status
Pre-Alpha, "fast-forward" =P, still need to port large portions of java code. Wanna help?

Watch the commit history on github to keep informed!



Test Summary

Windows (as of August the 13th 2009)

408 passed | 18 failed | 426/~1000 tests ported to C#



Porting Status

As of 13th August, 2009
17753 of 24588 lines of code are ported => 73,75% complete (without counting comments, lines with less than three chars and tests)

Get the Source Code

public clone url
git://github.com/henon/GitSharp.git

Contributing

The typical collaborative workflow with git can be described like this: Fork the repository at github clone your local repo and start coding. When you are done with the task, push to your fork on github and send a pull-request to henon. After other contributor's commits have been applied to the main repository your fork needs to be updated by pulling from henon/GitSharp. If you are not familiar with this workflow read the in-depth description with git commands.

If you can't get involved into porting or bug fixing, never mind. Promoting the project, giving feedback and bug reports are also valuable contributions.

Short how-to

  • Join the mailing list and if you like to discuss/ask things in realtime the IRC channel #GitSharp on freenode.
  • Feel free to include your copyright to the files you contributed something to
  • Please *do not* apply any commits via the github fork queue (it may corrupt your branch)
  • When you feel like your contribution should go into the main branch (henon/GitSharp) then post on the ML or file a pull request on github, we will merge your branch.
  • Updating your fork from the main branch: add the main line as a remote "git remote add henon git://github.com/henon/GitSharp.git" and do "git pull henon"
  • When you corrupted your branch read Fixing Corrupt Git Branch


Porting from JGit: clone the jgit repository git://repo.or.cz/egit.git

  • Port small and simple methods with few dependencies first and comment out code that is ported but can not yet compile due to missing dependencies.
  • Please do not rename java classes, methods, constants etc. or else porting of dependent code will be more complicated and error prone. We are going to rename according to .NET conventions as soon as all code is ported.
  • Check out the list of non-trivial Java-to-C# conversions.
  • Please make sure you base your porting work on the same version of the jgit code as all other developers to avoid inconsistencies. The current jgit commit we are based on is
commit c6e3b9fe2da0293f11eae202ec35fb343191a82d
Author: Shawn O. Pearce <spearce@spearce.org>
Date: Wed Jun 3 10:19:00 2009 -0700

To go back to that commit type

git checkout c6e3b9fe2da0293f11eae202ec35fb343191a82d

Changes after that commit can be tracked later after Git# is completely ported.

Collaborate!

Via the Mailing List

Feel free to join the git# mailing list

We will post status updates regularly to keep you informed about the project status.

Via IRC

Visit us on freenode in Channel #GitSharp

File a Bug Report

Please file any bugs at git# issue tracker.

Screenshots

Demo repository browser

Wpf test browser GitSharp.Demo

2009.06.21 browser.png

License

Git# is derived from the Java library jgit and is released under the BSD license like jgit.

Please refer to the LICENSE.txt files for the complete license, and please refer to the individual source file header to determine which license covers it and who contributed and therefor holds copyrights to the files.

Copyright (C) 2007-2009, The Git Development Community See source file headers for specific copyrights of contributors



All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of the Git Development Community nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Thanks

Many thanks go to ...

  • Linus Thorvalds and the git community for creating and maintaining git.
  • Shawn O. Pearce and the jgit dev community. Git# is based on their excellent work.
  • Kevin Thompson who started porting from jgit last year. His code is the most significant contribution so far.

Motto

Brain
Come, Pinky we need to get back to the lab and prepare for tomorrow night.
Pinky
But why, Brain? What are we going to do tomorrow night?
Brain
Try to get Git# done!!