1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #!/bin/bash
- # This script was converted using cast2script from:
- # docs/casts/seamless_nested_repos.sh
- set -e -u
- export GIT_PAGER=cat
- # DataLad provides seamless management of nested Git repositories...
- # Let's create a dataset
- datalad create demo
- cd demo
- # A DataLad dataset is just a Git repo with some initial configuration
- git log --oneline
- # We can generate nested datasets, by telling DataLad to register a
- # new dataset in a parent dataset
- datalad create -d . sub1
- # A subdataset is nothing more than regular Git submodule
- git submodule
- # Of course subdatasets can be nested
- datalad create -d . sub1/justadir/sub2
- # Unlike Git, DataLad automatically takes care of committing all
- # changes associated with the added subdataset up to the given
- # parent dataset
- git status
- # Let's create some content in the deepest subdataset
- mkdir sub1/justadir/sub2/anotherdir
- touch sub1/justadir/sub2/anotherdir/afile
- # Git can only tell us that something underneath the top-most
- # subdataset was modified
- git status
- # DataLad saves us from further investigation
- datalad diff -r
- # Like Git, it can report individual untracked files, but also across
- # repository boundaries
- datalad diff -r --report-untracked all
- # Adding this new content with Git or git-annex would be an exercise
- git add sub1/justadir/sub2/anotherdir/afile || true
- # DataLad does not require users to determine the correct repository
- # in the tree
- datalad add -d . sub1/justadir/sub2/anotherdir/afile
- # Again, all associated changes in the entire dataset tree, up to
- # the given parent dataset, were committed
- git status
- # DataLad's 'diff' is able to report the changes from these related
- # commits throughout the repository tree
- datalad diff --revision @~1 -r
|