927 ) |
924 ) |
928 raise |
925 raise |
929 return ret |
926 return ret |
930 |
927 |
931 |
928 |
932 def _readsharedsourceconfig(ui, path): |
|
933 """if the current repository is shared one, this tries to read |
|
934 .hg/hgrc of shared source if we are in share-safe mode |
|
935 |
|
936 Config read is loaded into the ui object passed |
|
937 |
|
938 This should be called before reading .hg/hgrc or the main repo |
|
939 as that overrides config set in shared source""" |
|
940 try: |
|
941 with open(os.path.join(path, b".hg", b"requires"), "rb") as fp: |
|
942 requirements = set(fp.read().splitlines()) |
|
943 if not ( |
|
944 requirementsmod.SHARESAFE_REQUIREMENT in requirements |
|
945 and requirementsmod.SHARED_REQUIREMENT in requirements |
|
946 ): |
|
947 return |
|
948 hgvfs = vfs.vfs(os.path.join(path, b".hg")) |
|
949 sharedvfs = localrepo._getsharedvfs(hgvfs, requirements) |
|
950 ui.readconfig(sharedvfs.join(b"hgrc"), root=path) |
|
951 except IOError: |
|
952 pass |
|
953 |
|
954 |
|
955 def _getlocal(ui, rpath, wd=None): |
929 def _getlocal(ui, rpath, wd=None): |
956 """Return (path, local ui object) for the given target path. |
930 """Return (path, local ui object) for the given target path. |
957 |
931 |
958 Takes paths in [cwd]/.hg/hgrc into account." |
932 Takes paths in [cwd]/.hg/hgrc into account." |
959 """ |
933 """ |
978 if not path: |
952 if not path: |
979 lui = ui |
953 lui = ui |
980 else: |
954 else: |
981 lui = ui.copy() |
955 lui = ui.copy() |
982 if rcutil.use_repo_hgrc(): |
956 if rcutil.use_repo_hgrc(): |
983 _readsharedsourceconfig(lui, path) |
957 for rc_path in rcutil.repo_components(path): |
984 lui.readconfig(os.path.join(path, b".hg", b"hgrc"), path) |
958 lui.readconfig(rc_path, root=path) |
985 lui.readconfig(os.path.join(path, b".hg", b"hgrc-not-shared"), path) |
|
986 |
959 |
987 if rpath: |
960 if rpath: |
988 # the specified path, might be defined in the [paths] section of the |
961 # the specified path, might be defined in the [paths] section of the |
989 # local repository. So we had to read the local config first even if it |
962 # local repository. So we had to read the local config first even if it |
990 # get overriden here. |
963 # get overriden here. |
991 path_obj = urlutil.get_clone_path_obj(lui, rpath) |
964 path_obj = urlutil.get_clone_path_obj(lui, rpath) |
992 path = path_obj.rawloc |
965 path = path_obj.rawloc |
993 lui = ui.copy() |
966 lui = ui.copy() |
994 if rcutil.use_repo_hgrc(): |
967 if rcutil.use_repo_hgrc(): |
995 _readsharedsourceconfig(lui, path) |
968 for rc_path in rcutil.repo_components(path): |
996 lui.readconfig(os.path.join(path, b".hg", b"hgrc"), path) |
969 lui.readconfig(rc_path, root=path) |
997 lui.readconfig(os.path.join(path, b".hg", b"hgrc-not-shared"), path) |
|
998 |
970 |
999 if oldcwd: |
971 if oldcwd: |
1000 os.chdir(oldcwd) |
972 os.chdir(oldcwd) |
1001 |
973 |
1002 return path, lui |
974 return path, lui |