bids-standard / bids-examples

A set of BIDS compatible datasets with empty raw data files that can be used for writing lightweight software tests.
http://bids-standard.github.io/bids-examples/
175 stars 135 forks source link

The repository is too big #119

Closed chrisgorgo closed 5 years ago

chrisgorgo commented 6 years ago
remote: warning: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: warning: See http://git.io/iEPt8g for more information.
remote: warning: File ds000246/sub-emptyroom/meg/sub-emptyroom_task-noise_run-01_meg.ds/sub-emptyroom_task-noise_run-01_meg.meg4 is 82.67 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB

We should zero the large MEG files and purge the history.

sappelhoff commented 6 years ago

Perhaps using something like this? --> https://rtyley.github.io/bfg-repo-cleaner/

While searching the .git directory using the method below (stackoverflow), I also found a couple of other large files that might need to be purged.

git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| awk '/^blob/ {print substr($0,6)}' \
| sort --numeric-sort --key=2 \
| cut --complement --characters=13-40 \
| numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

This output is provided by adding | tail -n 20 to the code above:

5c467907f207  3,1MiB ds000246/sub-0001/meg/sub-0001_task-AEF_run-02_meg.ds/sub-0001_task-AEF_run-02_meg.res4
477443f9f473  7,4MiB ieeg_visual/sub-01/ses-01/anat/sub-01_ses-01_T1w_pial.R.surf.gii
5eb83321187d   15MiB ds000117/derivatives/mriqc/reports/sub-11_ses-mri_acq-mprage_T1w.html
0fd32b82227a   15MiB ds000117/derivatives/mriqc/reports/sub-08_ses-mri_acq-mprage_T1w.html
ff7a25de846a   15MiB ds000117/derivatives/mriqc/reports/sub-14_ses-mri_acq-mprage_T1w.html
cc896c93e5b5   16MiB ds000117/derivatives/mriqc/reports/sub-12_ses-mri_acq-mprage_T1w.html
12be3e03924f   16MiB ds000117/derivatives/mriqc/reports/sub-07_ses-mri_acq-mprage_T1w.html
08aeb541f638   16MiB ds000117/derivatives/mriqc/reports/sub-13_ses-mri_acq-mprage_T1w.html
f3dffd12c007   16MiB ds000117/derivatives/mriqc/reports/sub-15_ses-mri_acq-mprage_T1w.html
42cbfd14be3c   16MiB ds000117/derivatives/mriqc/reports/sub-09_ses-mri_acq-mprage_T1w.html
12a27e26f2fe   16MiB ds000117/derivatives/mriqc/reports/sub-03_ses-mri_acq-mprage_T1w.html
448553a5b8ee   16MiB ds000117/derivatives/mriqc/reports/sub-10_ses-mri_acq-mprage_T1w.html
765f03490b18   17MiB ds000117/derivatives/mriqc/reports/sub-05_ses-mri_acq-mprage_T1w.html
aeb918749ffa   17MiB ds000117/derivatives/mriqc/reports/sub-02_ses-mri_acq-mprage_T1w.html
81916e6f48bd   17MiB ds000117/derivatives/mriqc/reports/sub-04_ses-mri_acq-mprage_T1w.html
aed7fb66215c   18MiB ds000117/derivatives/mriqc/reports/sub-06_ses-mri_acq-mprage_T1w.html
4ff87f522bb5   18MiB ds000117/derivatives/mriqc/reports/sub-01_ses-mri_acq-mprage_T1w.html
203ec7f85d65   19MiB ds000117/derivatives/mriqc/reports/sub-16_ses-mri_acq-mprage_T1w.html
015f6c374986   49MiB ieeg_visual/stimuli/sub-01_ses-01_task-visual_run-01_stimuli.mat
00495968804c   83MiB ds000246/sub-emptyroom/meg/sub-emptyroom_task-noise_run-01_meg.ds/sub-emptyroom_task-noise_run-01_meg.meg4
sappelhoff commented 6 years ago

We can also take this opportunity and delete some stale branches: image

I am talking about the lower 4 in the dropdown menu of the image. Any good reason not to clean that up? What exactly are those chrisfilo-patch* branches @chrisfilo ? Also to be cleaned?

sappelhoff commented 6 years ago

I think the purging of the history should be done after the iEEG and EEG branches are merged. This will simplify this whole procedure.

sappelhoff commented 5 years ago

Quick summary:

In the past, we accidentally pushed huge files to the repository. They were purged in #124 ... but they are still in the git history.

Problem

The repository is ~10 times as big as it should be (570MB) ... so it's slow for cloning

I see the following solutions:

This is a big question, so we definitely need input from several people on this.

@effigies @yarikoptic @tyarkoni @robertoostenveld @choldgraf @dorahermes

choldgraf commented 5 years ago

I'm a fan of options 2 and 3 - I think having a repository this large makes it prohibitive for most people to download unless they're really motivated to do so...

tyarkoni commented 5 years ago

Agree with @choldgraf. (2) is pretty extreme though. I guess we could start with (3) and fall back on (2) if things go awry or it turns out to be more difficult than anticipated.

effigies commented 5 years ago

(3) sounds good. There are only two PRs to rebase onto the new history, so helping people (one of them being me...) do that will not be a huge burden.

yarikoptic commented 5 years ago

I wondered (since never used it myself) if "git graft" mechanism could be used in addition to 3 to mark some commit(s) in the past of the old "heavy" history to match corresponding ones in the "new light" history. That should (theoretically, if my understanding is correct) to allow people to proceed with their existing clones/histories as "nothing has happened" while new objects from the new history would come to replace old(er) ones, and new clones would be lightweight. Also not sure how tags would behave etc. There exists an open issue in BFG on that: https://github.com/rtyley/bfg-repo-cleaner/issues/82

BUT given the nature/purpose of bids-examples, I think that pure "3" would be just fine ;)

robertoostenveld commented 5 years ago

I also prefer 3.

If "git graft" does not work, it would be nice (but not required) to give instructions for others how to resolve/clean their clones. The easy solution that I would probably take is to delete my fork and all local clones and make a new one. Instructing the 54 people that now have a fork on github (see members) would already help a lot.

sappelhoff commented 5 years ago

Alright, I'll then attempt number 3 (BFG repo cleaner) in the next days.

I already put a branch protection for master in place, so nobody will be able to accidentally pollute the history by pushing to it.

In addition, I agree with @robertoostenveld that it might be a good idea to notify all people who have forked the repository.

Let's see how this goes!

sappelhoff commented 5 years ago

Progress so far:

  1. git clone https://github.com/bids-standard/bids-examples.git as the backup
  2. git clone --mirror https://github.com/bids-standard/bids-examples.git as the version to be pruned
  3. java -jar bfg-1.13.0.jar --strip-blobs-bigger-than 1M bids-examples.git bfg as downloaded from https://rtyley.github.io/bfg-repo-cleaner/
  4. cd bids-examples.git
  5. git reflog expire --expire=now --all && git gc --prune=now --aggressive
  6. git push

so far so good, the .git directories are

However ...

the push gave some errors, click on details:

``` Text Counting objects: 7439, done. Delta compression using up to 8 threads. Compressing objects: 100% (3200/3200), done. Writing objects: 100% (7439/7439), 55.21 MiB | 684.00 KiB/s, done. Total 7439 (delta 3293), reused 7272 (delta 3163) remote: Resolving deltas: 100% (3293/3293), completed with 71 local objects. remote: error: GH006: Protected branch update failed for refs/heads/master. remote: error: Cannot force-push to a protected branch To https://github.com/bids-standard/bids-examples.git ! [remote rejected] master -> master (protected branch hook declined) ! [remote rejected] refs/pull/10/head -> refs/pull/10/head (deny updating a hidden ref) ! [remote rejected] refs/pull/10/merge -> refs/pull/10/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/101/head -> refs/pull/101/head (deny updating a hidden ref) ! [remote rejected] refs/pull/103/head -> refs/pull/103/head (deny updating a hidden ref) ! [remote rejected] refs/pull/104/head -> refs/pull/104/head (deny updating a hidden ref) ! [remote rejected] refs/pull/105/head -> refs/pull/105/head (deny updating a hidden ref) ! [remote rejected] refs/pull/105/merge -> refs/pull/105/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/107/head -> refs/pull/107/head (deny updating a hidden ref) ! [remote rejected] refs/pull/107/merge -> refs/pull/107/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/108/head -> refs/pull/108/head (deny updating a hidden ref) ! [remote rejected] refs/pull/108/merge -> refs/pull/108/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/109/head -> refs/pull/109/head (deny updating a hidden ref) ! [remote rejected] refs/pull/109/merge -> refs/pull/109/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/11/head -> refs/pull/11/head (deny updating a hidden ref) ! [remote rejected] refs/pull/110/head -> refs/pull/110/head (deny updating a hidden ref) ! [remote rejected] refs/pull/112/head -> refs/pull/112/head (deny updating a hidden ref) ! [remote rejected] refs/pull/113/head -> refs/pull/113/head (deny updating a hidden ref) ! [remote rejected] refs/pull/114/head -> refs/pull/114/head (deny updating a hidden ref) ! [remote rejected] refs/pull/116/head -> refs/pull/116/head (deny updating a hidden ref) ! [remote rejected] refs/pull/117/head -> refs/pull/117/head (deny updating a hidden ref) ! [remote rejected] refs/pull/118/head -> refs/pull/118/head (deny updating a hidden ref) ! [remote rejected] refs/pull/12/head -> refs/pull/12/head (deny updating a hidden ref) ! [remote rejected] refs/pull/120/head -> refs/pull/120/head (deny updating a hidden ref) ! [remote rejected] refs/pull/122/head -> refs/pull/122/head (deny updating a hidden ref) ! [remote rejected] refs/pull/123/head -> refs/pull/123/head (deny updating a hidden ref) ! [remote rejected] refs/pull/124/head -> refs/pull/124/head (deny updating a hidden ref) ! [remote rejected] refs/pull/125/head -> refs/pull/125/head (deny updating a hidden ref) ! [remote rejected] refs/pull/126/head -> refs/pull/126/head (deny updating a hidden ref) ! [remote rejected] refs/pull/13/head -> refs/pull/13/head (deny updating a hidden ref) ! [remote rejected] refs/pull/13/merge -> refs/pull/13/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/130/head -> refs/pull/130/head (deny updating a hidden ref) ! [remote rejected] refs/pull/130/merge -> refs/pull/130/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/133/head -> refs/pull/133/head (deny updating a hidden ref) ! [remote rejected] refs/pull/134/head -> refs/pull/134/head (deny updating a hidden ref) ! [remote rejected] refs/pull/135/head -> refs/pull/135/head (deny updating a hidden ref) ! [remote rejected] refs/pull/136/head -> refs/pull/136/head (deny updating a hidden ref) ! [remote rejected] refs/pull/137/head -> refs/pull/137/head (deny updating a hidden ref) ! [remote rejected] refs/pull/138/head -> refs/pull/138/head (deny updating a hidden ref) ! [remote rejected] refs/pull/139/head -> refs/pull/139/head (deny updating a hidden ref) ! [remote rejected] refs/pull/140/head -> refs/pull/140/head (deny updating a hidden ref) ! [remote rejected] refs/pull/141/head -> refs/pull/141/head (deny updating a hidden ref) ! [remote rejected] refs/pull/142/head -> refs/pull/142/head (deny updating a hidden ref) ! [remote rejected] refs/pull/143/head -> refs/pull/143/head (deny updating a hidden ref) ! [remote rejected] refs/pull/144/head -> refs/pull/144/head (deny updating a hidden ref) ! [remote rejected] refs/pull/145/head -> refs/pull/145/head (deny updating a hidden ref) ! [remote rejected] refs/pull/146/head -> refs/pull/146/head (deny updating a hidden ref) ! [remote rejected] refs/pull/147/head -> refs/pull/147/head (deny updating a hidden ref) ! [remote rejected] refs/pull/148/head -> refs/pull/148/head (deny updating a hidden ref) ! [remote rejected] refs/pull/149/head -> refs/pull/149/head (deny updating a hidden ref) ! [remote rejected] refs/pull/15/head -> refs/pull/15/head (deny updating a hidden ref) ! [remote rejected] refs/pull/151/head -> refs/pull/151/head (deny updating a hidden ref) ! [remote rejected] refs/pull/152/head -> refs/pull/152/head (deny updating a hidden ref) ! [remote rejected] refs/pull/153/head -> refs/pull/153/head (deny updating a hidden ref) ! [remote rejected] refs/pull/155/head -> refs/pull/155/head (deny updating a hidden ref) ! [remote rejected] refs/pull/157/head -> refs/pull/157/head (deny updating a hidden ref) ! [remote rejected] refs/pull/159/head -> refs/pull/159/head (deny updating a hidden ref) ! [remote rejected] refs/pull/17/head -> refs/pull/17/head (deny updating a hidden ref) ! [remote rejected] refs/pull/18/head -> refs/pull/18/head (deny updating a hidden ref) ! [remote rejected] refs/pull/20/head -> refs/pull/20/head (deny updating a hidden ref) ! [remote rejected] refs/pull/21/head -> refs/pull/21/head (deny updating a hidden ref) ! [remote rejected] refs/pull/21/merge -> refs/pull/21/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/22/head -> refs/pull/22/head (deny updating a hidden ref) ! [remote rejected] refs/pull/23/head -> refs/pull/23/head (deny updating a hidden ref) ! [remote rejected] refs/pull/24/head -> refs/pull/24/head (deny updating a hidden ref) ! [remote rejected] refs/pull/27/head -> refs/pull/27/head (deny updating a hidden ref) ! [remote rejected] refs/pull/28/head -> refs/pull/28/head (deny updating a hidden ref) ! [remote rejected] refs/pull/3/head -> refs/pull/3/head (deny updating a hidden ref) ! [remote rejected] refs/pull/30/head -> refs/pull/30/head (deny updating a hidden ref) ! [remote rejected] refs/pull/30/merge -> refs/pull/30/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/33/head -> refs/pull/33/head (deny updating a hidden ref) ! [remote rejected] refs/pull/34/head -> refs/pull/34/head (deny updating a hidden ref) ! [remote rejected] refs/pull/35/head -> refs/pull/35/head (deny updating a hidden ref) ! [remote rejected] refs/pull/36/head -> refs/pull/36/head (deny updating a hidden ref) ! [remote rejected] refs/pull/4/head -> refs/pull/4/head (deny updating a hidden ref) ! [remote rejected] refs/pull/41/head -> refs/pull/41/head (deny updating a hidden ref) ! [remote rejected] refs/pull/41/merge -> refs/pull/41/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/42/head -> refs/pull/42/head (deny updating a hidden ref) ! [remote rejected] refs/pull/43/head -> refs/pull/43/head (deny updating a hidden ref) ! [remote rejected] refs/pull/45/head -> refs/pull/45/head (deny updating a hidden ref) ! [remote rejected] refs/pull/47/head -> refs/pull/47/head (deny updating a hidden ref) ! [remote rejected] refs/pull/48/head -> refs/pull/48/head (deny updating a hidden ref) ! [remote rejected] refs/pull/49/head -> refs/pull/49/head (deny updating a hidden ref) ! [remote rejected] refs/pull/49/merge -> refs/pull/49/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/50/head -> refs/pull/50/head (deny updating a hidden ref) ! [remote rejected] refs/pull/50/merge -> refs/pull/50/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/51/head -> refs/pull/51/head (deny updating a hidden ref) ! [remote rejected] refs/pull/55/head -> refs/pull/55/head (deny updating a hidden ref) ! [remote rejected] refs/pull/58/head -> refs/pull/58/head (deny updating a hidden ref) ! [remote rejected] refs/pull/59/head -> refs/pull/59/head (deny updating a hidden ref) ! [remote rejected] refs/pull/6/head -> refs/pull/6/head (deny updating a hidden ref) ! [remote rejected] refs/pull/60/head -> refs/pull/60/head (deny updating a hidden ref) ! [remote rejected] refs/pull/61/head -> refs/pull/61/head (deny updating a hidden ref) ! [remote rejected] refs/pull/62/head -> refs/pull/62/head (deny updating a hidden ref) ! [remote rejected] refs/pull/62/merge -> refs/pull/62/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/63/head -> refs/pull/63/head (deny updating a hidden ref) ! [remote rejected] refs/pull/64/head -> refs/pull/64/head (deny updating a hidden ref) ! [remote rejected] refs/pull/64/merge -> refs/pull/64/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/65/head -> refs/pull/65/head (deny updating a hidden ref) ! [remote rejected] refs/pull/65/merge -> refs/pull/65/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/66/head -> refs/pull/66/head (deny updating a hidden ref) ! [remote rejected] refs/pull/66/merge -> refs/pull/66/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/67/head -> refs/pull/67/head (deny updating a hidden ref) ! [remote rejected] refs/pull/68/head -> refs/pull/68/head (deny updating a hidden ref) ! [remote rejected] refs/pull/69/head -> refs/pull/69/head (deny updating a hidden ref) ! [remote rejected] refs/pull/70/head -> refs/pull/70/head (deny updating a hidden ref) ! [remote rejected] refs/pull/73/head -> refs/pull/73/head (deny updating a hidden ref) ! [remote rejected] refs/pull/75/head -> refs/pull/75/head (deny updating a hidden ref) ! [remote rejected] refs/pull/76/head -> refs/pull/76/head (deny updating a hidden ref) ! [remote rejected] refs/pull/77/head -> refs/pull/77/head (deny updating a hidden ref) ! [remote rejected] refs/pull/78/head -> refs/pull/78/head (deny updating a hidden ref) ! [remote rejected] refs/pull/79/head -> refs/pull/79/head (deny updating a hidden ref) ! [remote rejected] refs/pull/80/head -> refs/pull/80/head (deny updating a hidden ref) ! [remote rejected] refs/pull/82/head -> refs/pull/82/head (deny updating a hidden ref) ! [remote rejected] refs/pull/82/merge -> refs/pull/82/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/83/head -> refs/pull/83/head (deny updating a hidden ref) ! [remote rejected] refs/pull/83/merge -> refs/pull/83/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/84/head -> refs/pull/84/head (deny updating a hidden ref) ! [remote rejected] refs/pull/85/head -> refs/pull/85/head (deny updating a hidden ref) ! [remote rejected] refs/pull/86/head -> refs/pull/86/head (deny updating a hidden ref) ! [remote rejected] refs/pull/87/head -> refs/pull/87/head (deny updating a hidden ref) ! [remote rejected] refs/pull/87/merge -> refs/pull/87/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/88/head -> refs/pull/88/head (deny updating a hidden ref) ! [remote rejected] refs/pull/88/merge -> refs/pull/88/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/89/head -> refs/pull/89/head (deny updating a hidden ref) ! [remote rejected] refs/pull/89/merge -> refs/pull/89/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/9/head -> refs/pull/9/head (deny updating a hidden ref) ! [remote rejected] refs/pull/9/merge -> refs/pull/9/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/90/head -> refs/pull/90/head (deny updating a hidden ref) ! [remote rejected] refs/pull/91/head -> refs/pull/91/head (deny updating a hidden ref) ! [remote rejected] refs/pull/91/merge -> refs/pull/91/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/92/head -> refs/pull/92/head (deny updating a hidden ref) ! [remote rejected] refs/pull/93/head -> refs/pull/93/head (deny updating a hidden ref) ! [remote rejected] refs/pull/93/merge -> refs/pull/93/merge (deny updating a hidden ref) ! [remote rejected] refs/pull/94/head -> refs/pull/94/head (deny updating a hidden ref) ! [remote rejected] refs/pull/95/head -> refs/pull/95/head (deny updating a hidden ref) ! [remote rejected] refs/pull/96/head -> refs/pull/96/head (deny updating a hidden ref) ! [remote rejected] refs/pull/97/head -> refs/pull/97/head (deny updating a hidden ref) ! [remote rejected] refs/pull/98/head -> refs/pull/98/head (deny updating a hidden ref) ! [remote rejected] refs/pull/99/head -> refs/pull/99/head (deny updating a hidden ref) error: failed to push some refs to 'https://github.com/bids-standard/bids-examples.git' ```

... apparently, this is a known problem, see e.g., this SO post, and this issue on BFG: https://github.com/rtyley/bfg-repo-cleaner/issues/36

The problem is that we cannot clean the history that was introduced to our repo via other remotes (PRs)

I see three solutions:

  1. solution from above: completely eradicate git history and start afresh (new repo, deleting the present one, use the same name)
  2. same as solution 1., however push the BFG-cleaned history to it
  3. ask GitHub for help to clean our history

I am in favor of 1. or 2.

Any opinions, hints, comments? :-)

choldgraf commented 5 years ago

I'm in favor of:

  1. Rename this repository to something like bids-examples-old and keep the history for archival purposes.
  2. Start fresh with a new repository that lives at bids-examples. Create a "what happened to this repository's history?" section that links to the archived version.

Thoughts?

robertoostenveld commented 5 years ago

+1

On 12 May 2019, at 20:18, Chris Holdgraf notifications@github.com wrote:

I'm in favor of:

Rename this repository to something like bids-examples-old and keep the history for archival purposes. Start fresh with a new repository that lives at bids-examples. Create a "what happened to this repository's history?" section that links to the archived version. Thoughts?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bids-standard/bids-examples/issues/119#issuecomment-491617363, or mute the thread https://github.com/notifications/unsubscribe-auth/AAG3PYYGZEC7FVG7ZVUFH4TPVBNQRANCNFSM4FRYSQKA.

effigies commented 5 years ago

@choldgraf That sounds reasonable to me.

There was also discussion in #159 about removing some of the example datasets. Does it make sense to do that during the move, too?

choldgraf commented 5 years ago

@effigies my 2 cents: while I'm a fan of removing some example datasets, I'd decouple that action from the action of cleaning up history and reducing the size of the repo...it's hard enough making decisions in a distributed fashion :-)

sappelhoff commented 5 years ago

Update

TL;DR: BFG worked, repo is now small, history rewritten, everybody delete their forks/clones and make fresh ones

Although I initially liked the suggestion of making a new repo, I got worried because I remembered that this might have some consequences for the bids-validator, which makes use of the releases in this repository.

As a result, I desperately looked at my process again to find issues ... and there you go :man_facepalming:

In https://github.com/bids-standard/bids-examples/issues/119#issuecomment-491607888, it did not work, because the branch protection was set to "on" and the settings didn't allow anyone to push.

On the good side: I disabled branch protection and then the cleaning worked very well. Our git history is ~80MB, and the repository with all files ~130MB --> feel free to check by making a fresh clone: git clone https://github.com/bids-standard/bids-validator

Another good thing: Our tags and releases are not affected.

The only issue that remains is that the GitHub references of all PRs that ever happened to this repository are still intact (albeit now pointing to a re-written history). The only way to solve it is by contacting GitHub support, asking them to delete those refs ... but I don't see a reason to do that, because we don't have sensitive data in these refs. As long as we don't reopen and merge these old PRs, everything will be fine.

On that note: everybody needs to delete their old forks and clones ... and we need to be extra diligent with merging PRs, always making sure that they are based on our new history.

sappelhoff commented 5 years ago

PS: Next up, I'll make a new release of the bids-examples, which will include the EEG and iEEG data

Feel free to comment if you have concerns, see: https://github.com/bids-standard/bids-examples/issues/158