Difference between revisions of "Git"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Requirements/TODO)
(Comparison)
Line 34: Line 34:
  
 
== Comparison ==
 
== Comparison ==
 +
 +
Comparison of git with Mercurial and BitKeeper: http://www.selenic.com/pipermail/mercurial/2005-May/000334.html
 +
 +
Comparison of git with Subversion: http://git.or.cz/gitwiki/GitSvnComparsion
  
 
{| border="1" cellspacing="0" cellpadding="5"
 
{| border="1" cellspacing="0" cellpadding="5"
Line 41: Line 45:
 
!SVN
 
!SVN
 
|-
 
|-
|Sources + history (on the server)
+
|Size [sources + history] on the server
 
|8.5G
 
|8.5G
 
|1.3G
 
|1.3G
 
|Not measured yet
 
|Not measured yet
 
|-
 
|-
|3rd party sources + history (server)
+
|Size [3rd party sources + history] on the server
 
|1.1G
 
|1.1G
 
|591M
 
|591M
 +
| -"-
 +
|-
 +
|Size [sources] locally
 +
|1.6G
 +
|2.8G (with the entire history)
 +
|Not measured yet
 +
|-
 +
|Size [3rd party sources] locally
 +
|98M
 +
|688M (with the entire history)
 +
| -"-
 +
|-
 +
|Checkout time [sources]
 +
|Not measured yet
 +
|1-2 hours [from go-oo.org]
 +
| -"-
 +
|-
 +
|Checkout time [3rd party sources]
 +
| -"-
 +
|Not measured yet
 +
| -"-
 +
|-
 +
|Branch creation
 +
| -"-
 +
|Immediately
 +
| -"-
 +
|-
 +
|Branch switch
 +
| -"-
 +
|<15sec [to newly created], 3min to an old one
 +
| -"-
 +
|-
 +
|Diff
 +
| -"-
 +
|Immediately
 +
| -"-
 +
|-
 +
|Commit
 +
| -"-
 +
|13-25sec
 +
| -"-
 +
|-
 +
|Merge
 +
| -"-
 +
|10sec [new branch with few changes], <3min [long living branch, harder scenario]
 
| -"-
 
| -"-
 
|}
 
|}

Revision as of 12:24, 8 February 2007

Git is a popular version control system designed to handle very large projects with speed and efficiency. See http://git.or.cz/ for more info.

The Windows users might be interested in the MinGW git port.

Git and OpenOffice.org

A functional git tree with the entire OOo history for testing purposes is here: http://go-oo.org/git. It is an imported CVS tree that was split into two parts:

  • The sources themselves - ooo.git
  • The 3rd party stuff (binary mozilla, zlib, berkeleydb, ...) - 3rdparty.git

The size of the sources is about 1.3G, the size of the 3rd party stuff is 591M. Please follow the instructions on http://go-oo.org/git to get the tree.

Transformations

These transformations are done while converting from CVS:

  • The OOo repository is split into the sources and 3rd party sources as described above
  • 'cws_src680_xyz' branches are renamed to simple 'xyz'
  • 'CWS_SRC680_XYZ_ANCHOR' tags are renamed to simple 'XYZ'
  • 'INTEGRATION: CWS xyz' commits are grouped into one commit (they are generated by CWS tooling per-file), and treated as a merge in the git tree
  • Tabs are converted to 4 spaces at the beginning of the lines in .c/.cxx/.h/.hxx/.mk/.src
  • 'RESYNC:.*FILE MERGED', and 'RESYNC:.*FILE REMOVED' are grouped inside branches (with single 'RESYNC' log entry)
    • May result in multiple 'RESYNC' commits inside the branch when a commit happened to another one in the middle of the resync

Requirements/TODO

  • Convert CollabNet account names into real names
    • maybe use the data from DomainDeveloper (complete that where necessary) if there's no easy way to extract the names from CollabNet
  • Delete merged branches (from 'heads', not from history!)
  • Evaluate the speed & compare with SVN (the RE preferred option) - checkout/clone, branch, resync, integration
  • Translations to a separate git tree as well?
  • UDK to a separate git tree?
  • .pdf version of developer's guide consume quite some space as well - any chance to do something with it?

Comparison

Comparison of git with Mercurial and BitKeeper: http://www.selenic.com/pipermail/mercurial/2005-May/000334.html

Comparison of git with Subversion: http://git.or.cz/gitwiki/GitSvnComparsion

What CVS git SVN
Size [sources + history] on the server 8.5G 1.3G Not measured yet
Size [3rd party sources + history] on the server 1.1G 591M -"-
Size [sources] locally 1.6G 2.8G (with the entire history) Not measured yet
Size [3rd party sources] locally 98M 688M (with the entire history) -"-
Checkout time [sources] Not measured yet 1-2 hours [from go-oo.org] -"-
Checkout time [3rd party sources] -"- Not measured yet -"-
Branch creation -"- Immediately -"-
Branch switch -"- <15sec [to newly created], 3min to an old one -"-
Diff -"- Immediately -"-
Commit -"- 13-25sec -"-
Merge -"- 10sec [new branch with few changes], <3min [long living branch, harder scenario] -"-
Personal tools