wiki:UsingGitWithWebKit

Version 18 (modified by ddkilzer@apple.com, 17 years ago) ( diff )

--

Tips and Tricks for using Git with WebKit

Install

If you're using Fink:

   fink install git

or if you're using MacPorts:

   port install git-core

or if you're using MacPorts and you want to track the svn repository (e.g., a committer):

   port install git-core +svn

or perhaps you'd like to use a 3rd party Mac OS X git install package

Checkout

To checkout WebKit using git:

   git clone git://git.webkit.org/WebKit.git WebKit

If you'd also like to track the svn repository (the git update-ref command is the secret to reusing the cloned git repository to fast-forward to the tip of the svn repository):

   cd WebKit
   git update-ref refs/remotes/trunk origin/master
   git svn init -T trunk http://svn.webkit.org/repository/webkit

Updating

If you're new to git, this command pulls updates from the repository that you previously cloned:

   git pull

If you are also tracking the svn repository, this will update the svn-based trunk branch in git:

   git svn fetch

If the current branch is based on the svn repository, this command will pull in commits from svn and rebase local commits on top of them:

   git svn rebase

WebKit Script support for Git

The various scripts in WebKitTools/Scripts have been made to work pretty well with Git. Here are some of the specific things you can do with them:

  • Telling the various scripts to append the git branch name to every build. This is especially useful so you don't clobber your previous branch's build when you switch branches
      git config core.webKitBranchBuild (true|false) //the default is off
    
  • Overriding the core.webKitBranchBuild setting for a specific branch
      git config branch.$branchName.webKitBranchBuild (true|false)
    
  • Using prepare-Changelog with git
      WebKitTools/Scripts/prepare-ChangeLog --git-commit=$committish --git-reviewer="Foo Reviewer"
    
  • Using resolve-ChangeLog with git. Assuming you got a conflict merging a ChangeLog file, this tool will reapply the patch using patch --fuzz=3 so that your change lands at the top of the ChangeLog file. If the patch was successfully applied, git-add is run on the ChangeLog file. Note that this tool does not change the date of the ChangeLog entry (unlike svn-apply).
      WebKitTools/Scripts/resolve-ChangeLogs path/to/ChangeLog [path/to/ChangeLog ...]
    
  • Using commit-log-editor with git (assuming WebKitTools/Scripts is in your path)
      git config core.editor commit-log-editor
    

Misc. Tips and Tricks

  • You can setup Git shell completion and branch name in your bash prompt. In your /path/to/git/source/contrib/completion directory you will find a 'git-completion.bash' file. Follow the instructions in that file to enable shell completion. Here is a nice bash prompt for instance
    PS1='\[\033[41;1;37m\]\u@\h:\[\033[40;1;33m\]\W$(__git_ps1 " (%s)")>\[\033[0m\] '
    
  • You can set up multiple working directories to work on more than one branch at a time. In your /path/to/git/source/contrib/workdir directory you will find a 'git-new-workdir' script that can create new working directories. The usage is
    ./git-new-workdir <repository> <new_workdir> [<branch>]
    
  • Colorize various git commands
    git config --global color.status auto
    git config --global color.diff auto
    git config --global color.branch auto
    
  • Important git config settings
    git config --global user.name "Foo Bar"
    git config --global user.email "foo@webkit.org"
    
Note: See TracWiki for help on using the wiki.