Troubleshooting DataLad Updates From WebDAV On Windows
Introduction
Hey guys! Are you experiencing issues updating your DataLad datasets from a WebDAV sibling on Windows? You're not alone! This article dives into a specific problem where datalad update --how merge
appears to succeed but doesn't actually apply the changes. We'll break down the issue, explore potential causes, and provide steps to reproduce it. If you're wrestling with DataLad and WebDAV on Windows, you've come to the right place. Let's get started and figure this out together!
The Problem: DataLad Update on Windows Not Applying Changes from WebDAV
The core issue we're tackling is that when running datalad update --how merge
on Windows for a dataset cloned from a WebDAV sibling, the command reports success, but the updates aren't reflected in the local dataset. This means new commits and changes from the WebDAV sibling aren't being merged into your local copy. This can be super frustrating, especially when you're collaborating or trying to keep your data in sync. The problem seems to occur when the local branch is an adjusted branch, which is a special type of branch DataLad uses to manage annexed files. We need to dig deeper to understand why this is happening and how to fix it.
Understanding Adjusted Branches
Before we go further, let's quickly discuss adjusted branches. In DataLad, annexed files (large files managed by Git-annex) are not directly stored in the Git repository. Instead, Git stores pointers to these files, and Git-annex manages the actual file content. Adjusted branches are a mechanism DataLad uses to keep track of these annexed files and their locations. They ensure that the correct versions of the files are available when you check out a specific commit. This is crucial for DataLad's efficient handling of large datasets. So, the issue might be related to how DataLad merges changes into these adjusted branches on Windows.
Steps to Reproduce the Issue
To better understand and address this problem, it's essential to reproduce it consistently. Here are the steps, mirroring the original report, to recreate the issue. Note that these steps assume you're pushing the dataset from a Linux environment and cloning/updating from Windows, although the OS used for pushing might not be a factor.
Linux (Setting Up the WebDAV Sibling and Pushing)
-
Create a WebDAV sibling: First, you'll need to create a WebDAV sibling for your DataLad dataset. This involves using the
datalad create-sibling-webdav
command with the appropriate parameters. Replace the URL with your actual WebDAV URL.datalad create-sibling-webdav -s sciebo --mode git-only https://fz-juelich.sciebo.de/remote.php/dav/files/m.szczepanik%40fz-juelich.de/2025-07-16/test_win_update
Note: The
--mode git-only
flag is crucial here as we are focusing on the Git repository updates, not the annexed file content. -
Push the dataset to the WebDAV sibling: Next, push your dataset to the newly created WebDAV sibling using the
datalad push
command.datalad push --to sciebo
This ensures that your initial dataset state is available on the WebDAV server.
Windows (Cloning and Updating)
-
Clone the dataset from WebDAV: On your Windows machine, clone the dataset from the WebDAV URL using
datalad clone
. Make sure to use thedatalad-annex::
prefix to specify the WebDAV annex type. The parametersencryption=none
andexporttree=no
are important for this setup.datalad clone "datalad-annex::?type=webdav&encryption=none&exporttree=no&url=https%3A//fz-juelich.sciebo.de/remote.php/dav/files/m.szczepanik%2540fz-juelich.de/2025-07-16/test_win_update"
After cloning, you should be on an adjusted branch, which you can verify using
git log
. -
Verify the initial state: Check the Git log to confirm you're on the
adjusted/main
branch and see the commit history.git log --pretty=oneline
You should see something like this:
fe3517e2608d6a14c67845a05f4703d227971042 (HEAD -> adjusted/main(unlocked)) git-annex adjusted branch 9da02e8e4ea922e9e301dce7af2fff943fd7e64e (origin/main, origin/HEAD, main) Add a readme f71f97772b2380c00f90ca9fd7d1d1b7228ce9ae [DATALAD] new dataset
Linux (Making Changes and Pushing)
-
Modify the dataset: On your Linux machine, make some changes to the dataset (e.g., edit a file), save the changes using
datalad save
, and then push the changes to the WebDAV sibling.# Make changes to a file echo