summaryrefslogtreecommitdiffstats
path: root/project.py
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2013-11-27 11:17:13 -0800
committerJesse Hall <jessehall@google.com>2013-12-03 09:02:16 -0800
commit672cc499b9dce9c18ecd9dfc81fd18094535dc49 (patch)
treefabd598df21d7062baec16bf66a1fca505a968f7 /project.py
parent4534120628a8e3a7f82063757bbcb02107dd14d8 (diff)
downloadgit-repo-672cc499b9dce9c18ecd9dfc81fd18094535dc49.tar.gz
Canonicalize project hooks path before use
If the top-level .repo directory is moved somewhere else (e.g. a different drive) and replaced with a symlink, _InitHooks() will create broken symlinks. Resolving symlinks before computing the relative path for the symlink keeps the path within the repo tree, so the tree can be moved anywhere. Change-Id: Ifa5c07869e3477186ddd2c255c6c607f547bc1fe
Diffstat (limited to 'project.py')
-rw-r--r--project.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/project.py b/project.py
index b01a52ba..1fb5d586 100644
--- a/project.py
+++ b/project.py
@@ -82,7 +82,7 @@ def _ProjectHooks():
82 """ 82 """
83 global _project_hook_list 83 global _project_hook_list
84 if _project_hook_list is None: 84 if _project_hook_list is None:
85 d = os.path.abspath(os.path.dirname(__file__)) 85 d = os.path.realpath(os.path.abspath(os.path.dirname(__file__)))
86 d = os.path.join(d , 'hooks') 86 d = os.path.join(d , 'hooks')
87 _project_hook_list = [os.path.join(d, x) for x in os.listdir(d)] 87 _project_hook_list = [os.path.join(d, x) for x in os.listdir(d)]
88 return _project_hook_list 88 return _project_hook_list
@@ -1955,7 +1955,7 @@ class Project(object):
1955 self._InitHooks() 1955 self._InitHooks()
1956 1956
1957 def _InitHooks(self): 1957 def _InitHooks(self):
1958 hooks = self._gitdir_path('hooks') 1958 hooks = os.path.realpath(self._gitdir_path('hooks'))
1959 if not os.path.exists(hooks): 1959 if not os.path.exists(hooks):
1960 os.makedirs(hooks) 1960 os.makedirs(hooks)
1961 for stock_hook in _ProjectHooks(): 1961 for stock_hook in _ProjectHooks():