DATALAD-CREATE-SIBLING(1)

πŸ’… datalad create-sibling(1) β€” the "put ur dataset on a server" era

okay so bestie, welcome to the General Commands Manual entry for datalad create-sibling ✨ this is the one where you take a local dataset and give it a whole remote life on some UNIX-like machine you can reach via a shell (local or over SSH). it's giving "my dataset is moving out and getting its own apartment" πŸ πŸ’–


🌸 NAME 🌸

datalad create-sibling β€” create a dataset sibling on a UNIX-like Shell (local or SSH)-accessible machine πŸ–₯οΈπŸ¦‹


✨ SYNOPSIS ✨

datalad create-sibling [-h] [-s [NAME]] [--target-dir PATH] [--target-url URL]
                       [--target-pushurl URL] [--dataset DATASET] [-r]
                       [-R LEVELS] [--existing MODE]
                       [--shared {false|true|umask|group|all|world|everybody|0xxx}]
                       [--group GROUP] [--ui {false|true|html_filename}]
                       [--as-common-datasrc NAME] [--publish-by-default REFSPEC]
                       [--publish-depends SIBLINGNAME] [--annex-wanted EXPR]
                       [--annex-group EXPR] [--annex-groupwanted EXPR] [--inherit]
                       [--since SINCE] [--version] [SSHURL]

πŸ’– DESCRIPTION πŸ’–

so. you've got a local dataset, and you've got a path or some SSH login info. this command does the iconic thing: it creates a remote dataset repository on that machine and configures it as a dataset sibling β€” aka a publication target, the thing you'll push to with the PUBLISH command πŸ‘‘ literally the glow-up your dataset deserves.

you can configure a bunch of properties of the remote sibling, like... the name, the location on the server, the read and write access URLs, and the access permissions πŸ’… all the good stuff.

and optional bonus: a basic web-viewer for DataLad datasets can be installed at the remote location πŸŽ€ cute right?

this command also supports recursive processing of dataset hierarchies β€” meaning it'll create a remote sibling for each dataset in the hierarchy 🌈 by default those remote siblings get created in a hierarchical structure that mirrors the organization on your local file system (very faithful, very loyal). BUT there's also a simple templating mechanism if you want to produce a flat list of datasets instead β€” peep --target-dir for that one 😌


πŸ› οΈ OPTIONS πŸ› οΈ

  • SSHURL β€” login information for the target server, bestie. this can be given as a URL (ssh://host/path), SSH-style (user@host:path), or just a local path. unless you override it, this also serves as the future dataset's access URL and path on the server. constraints: value must be a string ✨
  • -h, --help, --help-np β€” show this help message. --help-np forcefully disables the use of a pager for displaying the help message (no pager, no drama, no cap πŸ’€)
  • -s [NAME], --name [NAME] β€” sibling name to create for this publication target. if RECURSIVE is set, the same name will be used to label all the subdatasets' siblings 🏷️ and when creating a target dataset fails, no sibling is added (no half-finished situations here, we don't do that). constraints: value must be a string or value must be NONE
  • --target-dir PATH β€” path to the directory on the server where the dataset shall be created. by default this is set to the URL (or local path) specified via SSHURL. if a relative path is provided here, it's interpreted as being relative to the user's home directory on the server (or relative to SSHURL, when that is a local path) 🏑

additional features are relevant for recursive processing of datasets with subdatasets. by default, the local dataset structure is replicated on the server. however, it's possible to provide a template for generating different target directory names for all (sub)datasets 🌟 templates can contain certain placeholders that are substituted for each (sub)dataset. for example: "/mydirectory/dataset%RELNAME". supported placeholders: %RELNAME β€” the name of the datasets, with any slashes replaced by dashes. constraints: value must be a string or value must be NONE

  • --target-url URL β€” the "public" access URL of the to-be-created target dataset(s) (default: SSHURL). accessibility of this URL determines the access permissions of potential consumers of the dataset πŸ‘€ as with target_dir, templates (same set of placeholders) are supported. also, if specified, it is provided as the annex description. constraints: value must be a string or value must be NONE
  • --target-pushurl URL β€” in case the TARGET_URL can't be used to publish to the dataset, this option specifies an alternative URL for this purpose πŸ” as with target_url, templates (same set of placeholders) are supported. constraints: value must be a string or value must be NONE
  • --dataset DATASET, -d DATASET β€” specify the dataset to create the publication target for. if no dataset is given, an attempt is made to identify the dataset based on the current working directory πŸ” constraints: Value must be a Dataset or a valid identifier of a Dataset (e.g. a path) or value must be NONE
  • -r, --recursive β€” if set, recurse into potential subdatasets πŸͺ† (yes, the doll thing)
  • -R LEVELS, --recursion-limit LEVELS β€” limit recursion into subdatasets to the given number of levels. constraints: value must be convertible to type int or value must be NONE
  • --existing MODE β€” action to perform if a sibling is already configured under the given name and/or a target (non-empty) directory already exists πŸ“ in this case, a dataset can be skipped ('skip'), the sibling configuration be updated ('reconfigure'), or process interrupts with error ('error').
⚠️ DANGER ZONE ⚠️ if 'replace' is used, an existing target directory will be forcefully removed, re-initialized, and the sibling (re-)configured (thus implies 'reconfigure'). REPLACE could lead to data loss, so use with care 😭 to minimize possibility of data loss, in interactive mode DataLad will ask for confirmation, but it would raise an exception in non-interactive mode. literally be careful bestie.

constraints: value must be one of ('skip', 'error', 'reconfigure', 'replace') [Default: 'error']

  • --shared {false|true|umask|group|all|world|everybody|0xxx} β€” if given, configures the access permissions on the server for multi-users (this could include access by a webserver! 🌐). possible values for this option are identical to those of git init --shared and are described in its documentation. constraints: value must be a string or value must be convertible to type bool or value must be NONE
  • --group GROUP β€” filesystem group for the repository. specifying the group is particularly important when --shared=group πŸ‘₯ constraints: value must be a string or value must be NONE
  • --ui {false|true|html_filename} β€” publish a web interface for the dataset with an optional user-specified name for the html at publication target. defaults to index.html at dataset root 🌐✨ constraints: value must be convertible to type bool or value must be a string [Default: False]
  • --as-common-datasrc NAME β€” configure the created sibling as a common data source of the dataset that can be automatically used by all consumers of the dataset (technical: git-annex auto-enabled special remote) πŸ”Œ
  • --publish-by-default REFSPEC β€” add a refspec to be published to this sibling by default if nothing specified. constraints: value must be a string or value must be NONE
  • --publish-depends SIBLINGNAME β€” add a dependency such that the given existing sibling is always published prior to the new sibling 🫢 this equals setting a configuration item 'remote.SIBLINGNAME.datalad-publish-depends'. this option can be given more than once to configure multiple dependencies. constraints: value must be a string or value must be NONE
  • --annex-wanted EXPR β€” expression to specify 'wanted' content for the repository/sibling. see https://git-annex.branchable.com/git-annex-wanted/ for more information. constraints: value must be a string or value must be NONE
  • --annex-group EXPR β€” expression to specify a group for the repository. see https://git-annex.branchable.com/git-annex-group/ for more information. constraints: value must be a string or value must be NONE
  • --annex-groupwanted EXPR β€” expression for the groupwanted. makes sense only if --annex-wanted="groupwanted" and annex-group is given too. see https://git-annex.branchable.com/git-annex-groupwanted/ for more information. constraints: value must be a string or value must be NONE
  • --inherit β€” if sibling is missing, inherit settings (git config, git annex wanted/group/groupwanted) from its super-dataset 🧬
  • --since SINCE β€” limit processing to subdatasets that have been changed since a given state (by tag, branch, commit, etc). this can be used to create siblings for recently added subdatasets πŸ†• if '^' is given, the last state of the current branch at the sibling is taken as a starting point. constraints: value must be a string or value must be NONE
  • --version β€” show the module and its version which provides the command πŸ“Œ

🫢 AUTHORS 🫢

datalad is developed by The DataLad Team and Contributors <team@datalad.org> πŸ’œ iconic, honestly.


and that's the whole thing, bestie πŸŽ€ this page is from datalad create-sibling 1.1.5, dated 2025-06-15 β€” go forth and give ur datasets the remote era they deserve πŸ’…βœ¨πŸŒΈ

πŸ“¦ where this page comes from