Push to multiple url with datalad

  • Please describe the problem.

I would like to push to two different git urls in one push command. For git this is done by setting both urls as remote for pushing, i.e. the remotes will look like:

> git remote -v
origin  git@github.com:jadecci/cbpp.git (fetch)
origin  git@github.com:inm7/cbpp.git (push)
origin  git@github.com:jadecci/cbpp.git (push)

However, datalad siblings doesn’t allow two urls to be set under the same name. In my case, the sibling origin is set to git@github.com:jadecci/cbpp.git. When I run datalad push --to origin, I get the following error:

datalad push --to origin
Update availability for 'origin':  75%|██████████████████████████▎        | 3.00/4.00 [00:00<00:00, 10.3k Steps/s]
CommandError: 'git -c 'url.('"'"'git@github.com:inm7/cbpp.git'"'"', '"'"'git@github.com:jadecci/cbpp.git'"'"').insteadof=git@github.com:jadecci/cbpp.git' fetch origin git-annex' failed with exitcode 128 under /data/project/cbpp_data/cbpp
('git@github.com: Permission denied (publickey).
ConnectionOpenFailedError: 'ssh -fN -o ControlMaster=auto -o ControlPersist=15m -o ControlPath=/home/jwu/.cache/datalad/sockets/8b52fa02 '('"'"'git@github.com'' failed with exitcode 255 [Failed to open SSH connection (could not start ControlMaster process)]
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
  • What steps will reproduce the problem?

The error occurs when git remote for origin has two urls attached.

  • What version of DataLad are you using (run datalad --version)? On what operating system (consider running datalad plugin wtf)?

I am using datalad 0.13.5

With the siblings command you can declare dependencies, such that pushing to one sibling will push to another first. That works for git remotes and git-annex special remotes alike.