Codebase list datalad / dd72538
BF/RF: mv is_remote_annex_ignored to AnnexRepo, make siblings command not puke if not yet annex-ignored Yaroslav Halchenko 6 years ago
4 changed file(s) with 35 addition(s) and 20 deletion(s). Raw diff Collapse all Expand all
237237 else:
238238 self._cfg = self.repo.config
239239 return self._cfg
240
241 def is_remote_annex_ignored(self, remote):
242 """Return True if remote is explicitly ignored"""
243 return self.config.getbool(
244 'remote.{}'.format(remote), 'annex-ignore',
245 default=False
246 )
247240
248241 def get_subdatasets(self, pattern=None, fulfilled=None, absolute=False,
249242 recursive=False, recursion_limit=None, edges=False):
6868 is_annex_repo = isinstance(ds.repo, AnnexRepo)
6969
7070 def _publish_data():
71 if ds.is_remote_annex_ignored(remote):
71 if ds.repo.is_remote_annex_ignored(remote):
7272 return [], [] # Cannot publish any data
7373 try:
7474 remote_wanted = ds.repo.get_preferred_content('wanted', remote)
7575 except CommandError as exc:
7676 if "cannot determine uuid" in str(exc):
77 if not ds.is_remote_annex_ignored(remote):
77 if not ds.repo.is_remote_annex_ignored(remote):
7878 lgr.warning(
7979 "Annex failed to determine UUID, skipping publishing data for now: %s",
8080 exc_str(exc)
180180 # if annex_uuid is None:
181181 # # most probably not yet 'known' and might require some annex
182182 knew_remote_uuid = None
183 if is_annex_repo and not ds.is_remote_annex_ignored(remote):
183 if is_annex_repo and not ds.repo.is_remote_annex_ignored(remote):
184184 try:
185185 ds.repo.get_preferred_content('wanted', remote) # could be just checking config.remote.uuid
186186 knew_remote_uuid = True
288288 **dict(
289289 res,
290290 path=path,
291 with_annex='+' if 'annex-uuid' in res else '-',
291 with_annex='+' if 'annex-uuid' in res \
292 else ('-' if res.get('annex-ignore', None) else '?'),
292293 spec=spec)))
293294
294295
614615 if annex_description is not None:
615616 info['annex-description'] = annex_description
616617 if get_annex_info and isinstance(ds.repo, AnnexRepo):
617 if not ds.is_remote_annex_ignored(remote):
618 for prop in ('wanted', 'required', 'group'):
619 var = ds.repo.get_preferred_content(
620 prop, '.' if remote == 'here' else remote)
621 if var:
622 info['annex-{}'.format(prop)] = var
623 groupwanted = ds.repo.get_groupwanted(remote)
624 if groupwanted:
625 info['annex-groupwanted'] = groupwanted
618 if not ds.repo.is_remote_annex_ignored(remote):
619 try:
620 for prop in ('wanted', 'required', 'group'):
621 var = ds.repo.get_preferred_content(
622 prop, '.' if remote == 'here' else remote)
623 if var:
624 info['annex-{}'.format(prop)] = var
625 groupwanted = ds.repo.get_groupwanted(remote)
626 if groupwanted:
627 info['annex-groupwanted'] = groupwanted
628 except CommandError as exc:
629 if 'cannot determine uuid' in str(exc):
630 # not an annex (or no connection), would be marked as
631 # annex-ignore
632 msg = "Failed to determine if %s carries annex." % remote
633 ds.repo.config.reload()
634 if ds.repo.is_remote_annex_ignored(remote):
635 msg += " Remote was marked by annex as annex-ignore. " \
636 "Edit .git/config to reset if you think that was done by mistake due to absent connection etc"
637 lgr.warning(msg)
638 info['annex-ignore'] = True
639 else:
640 raise
626641 else:
627642 info['annex-ignore'] = True
628643
866866 """Announce to annex that remote is "dead"
867867 """
868868 return self._annex_custom_command([], ["git", "annex", "dead", name])
869
870 def is_remote_annex_ignored(self, remote):
871 """Return True if remote is explicitly ignored"""
872 return self.config.getbool(
873 'remote.{}'.format(remote), 'annex-ignore',
874 default=False
875 )
869876
870877 def is_special_annex_remote(self, remote, check_if_known=True):
871878 """Return either remote is a special annex remote