Commit bf4100ea authored by rniwa@webkit.org's avatar rniwa@webkit.org

Add a script to automatically configure a git clone

https://bugs.webkit.org/show_bug.cgi?id=110073

Reviewed by Benjamin Poulain.

Added "webkit-patch setup-git-clone" to setup a brand new Git clone.

This command runs various commands listed on http://trac.webkit.org/wiki/UsingGitWithWebKit

* Scripts/webkitpy/tool/commands/__init__.py:
* Scripts/webkitpy/tool/commands/setupgitclone.py: Added.
(SetupGitClone):
(SetupGitClone.execute):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160039 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 62203aa3
2013-12-03 Ryosuke Niwa <rniwa@webkit.org>
Add a script to automatically configure a git clone
https://bugs.webkit.org/show_bug.cgi?id=110073
Reviewed by Benjamin Poulain.
Added "webkit-patch setup-git-clone" to setup a brand new Git clone.
This command runs various commands listed on http://trac.webkit.org/wiki/UsingGitWithWebKit
* Scripts/webkitpy/tool/commands/__init__.py:
* Scripts/webkitpy/tool/commands/setupgitclone.py: Added.
(SetupGitClone):
(SetupGitClone.execute):
2013-12-03 Anders Carlsson <andersca@apple.com>
Deprecate WKNotificationProvider
......
......@@ -17,6 +17,7 @@ from webkitpy.tool.commands.queries import *
from webkitpy.tool.commands.queues import *
from webkitpy.tool.commands.rebaseline import Rebaseline
from webkitpy.tool.commands.rebaselineserver import RebaselineServer
from webkitpy.tool.commands.setupgitclone import SetupGitClone
from webkitpy.tool.commands.sheriffbot import *
from webkitpy.tool.commands.upload import *
from webkitpy.tool.commands.suggestnominations import *
......
# Copyright (c) 2013 Apple Inc. 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 Google Inc. 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.
from webkitpy.tool.multicommandtool import Command
from webkitpy.common.checkout.scm.git import Git
class SetupGitClone(Command):
name = "setup-git-clone"
help_text = "Configures a new Git clone for the WebKit development"
def execute(self, options, args, tool):
if not isinstance(tool.scm(), Git):
print "This command only works inside a Git checkout."
return
if tool.scm().has_working_directory_changes():
print "There are local changes; aborting the command."
return
# FIXME: We shouldn't be using a privatd method
run_git = tool.scm()._run_git
run_git(["pull"])
run_git(["svn", "init", "--prefix=origin/", "-T", "trunk", "https://svn.webkit.org/repository/webkit"])
run_git(["config", "--replace", "svn-remote.svn.fetch trunk:refs/remotes/origin/master"])
run_git(["svn", "fetch"])
original_path = tool.filesystem.abspath(".")
tool.filesystem.chdir("Tools/Scripts/")
username = tool.executive.run_and_throw_if_fail(["perl", "-e", "use VCSUtils; print STDOUT changeLogName();"], quiet=True)
if not username:
username = tool.user.prompt("Your name:")
email = tool.executive.run_and_throw_if_fail(["perl", "-e", "use VCSUtils; print STDOUT changeLogEmailAddress();"], quiet=True)
if not email:
email = tool.user.prompt("Your email address:")
tool.filesystem.chdir(original_path)
run_git(["config", "user.name", username])
run_git(["config", "user.email", email])
# Better Objective-C diff.
run_git(["config", "diff.objcpp.xfuncname", "^[-+@a-zA-Z_].*$"])
run_git(["config", "diff.objcppheader.xfuncname", "^[@a-zA-Z_].*$"])
if tool.user.confirm("Do you want to auto-color status, diff, and branch? (y/n)"):
run_git(["config", "color.status", "auto"])
run_git(["config", "color.diff", "auto"])
run_git(["config", "color.branch", "auto"])
if tool.user.confirm("Do you use a rebase-based workflow? (y=yes; n=no, I use a merge-based workflow)"):
run_git(["config", "merge.changelog.driver", "perl Tools/Scripts/resolve-ChangeLogs --fix-merged --merge-driver %O %A %B"])
else:
run_git(["config", "merge.changelog.driver", "perl Tools/Scripts/resolve-ChangeLogs --fix-merged --merge-driver %O %B %A"])
if tool.user.confirm("Do you want to append the git branch name to every build? (e.g. WebKitBuild/mybranch/; y/n)"):
run_git(["config", "core.webKitBranchBuild", "true"])
print "You can override this option via git config branch.$branchName.webKitBranchBuild (true|false)"
print "Done"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment