Make webkitdirs::runGitUpdate() work when invoked in more than one Git checkout
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jun 2015 18:00:11 +0000 (18:00 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jun 2015 18:00:11 +0000 (18:00 +0000)
commitd16123af84f478f8f6fed15dc8fc1bf4f0ee4184
tree5c507a26f6f17eaf04797b011c964052c8806dfc
parent44bb1188d6751f1d54623f190a072b6906490a15
Make webkitdirs::runGitUpdate() work when invoked in more than one Git checkout
https://bugs.webkit.org/show_bug.cgi?id=146082

Reviewed by Darin Adler.

The function webkitdirs::runGitUpdate may not update the Git checkout in the current
working directory after being invoked in a different Git checkout. In particular,
calling runGitUpdate() inside a Git SVN checkout and subsequently calling it inside
a pure Git checkout g will fail to update g.

Currently webkitdirs::runGitUpdate() calls VCSUtils::isGitSVN() to determine whether
the current working directory is a Git SVN checkout. And isGitSVN() caches its result
to speed up subsequent queries. This prevents runGitUpdate() from being used to update
an arbitrary Git checkout (since isGitSVN() may return a cached result for a directory
different than the current working directory). Instead runGitUpdate() should check
whether the current working directory is a Git SVN checkout on each invocation.

* Scripts/VCSUtils.pm: Export function isGitSVNDirectory so that it can be used from webkitdirs::runGitUpdate().
(isGitSVNDirectory): Extracted logic to determine whether a directory is a Git
SVN directory from isGitSVN().
(isGitSVN): Implemented in terms of isGitSVNDirectory().
* Scripts/webkitdirs.pm:
(runGitUpdate): Modified to use isGitSVNDirectory().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185710 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tools/ChangeLog
Tools/Scripts/VCSUtils.pm
Tools/Scripts/webkitdirs.pm