Breaking changes

UpBack relies on rclone to synchronize files.
I just discovered that some time ago, a new switch has been added (--create-empty-src-dirs) that changes the default semantics (which is a breaking change).
While I can spot the commit that introduced it in the git repo I have not found a way to understand the version of rclone in which the change took place. Can somebody help me with that?
I also have a more general concern: how many more breaking changes have been introduced? Is there a list of them?

All the release info is here:

Each release has notes, I tend to read them before I upgrade so I don't have anything break for me.

I'd say generally, there is a good effort to not break things but it does happen from time to time. All changes / features etc are listed on the github.

The change was done here:

What is the breaking part of the change as I'm not following that bit as it's a new flag as I don't believe any mechanics were changed?

Actually there was a change. The creation of empty directories on the dst used to happen by default before this change and now it happens only if the flag was specified:

Hi @DavideRossi

This is actually an excellent example to illustrate how difficult it is to determine when something is a newly introduced bug, a bug fix or a breaking change.

The above mentioned #2869 (add --create-empty-src-dirs) was a fix/improvement to #1837 (fix empty folders not copied). There are therefore many possible scenarios.

If you consider the documentation to be the baseline then:

  • #1837 was a fix if the documentation at that point in time gave the impression that rclone would copy everything (including empty folders), and then #2869 becomes a breaking change.

  • #1837 was a breaking change if the documentation at that point in time gave the impression that rclone focused on files and therefore didn’t copy empty folders, and then #2869 becomes a fix of a (breaking) bug.

If you consider the current behavior to be the baseline then:

  • any change or bug fix is a breaking change

Things are a little different, to my understaning. #1837 (fix empty folders not copied) was about the fact that the stated behavior was not always respected.
In most cases, in fact, rclone behaved as documented (proof: my test cases regarding this aspect were passing).
The fix would have simply been to make sure that empty folders are always copied.
But then it was decided to fix the bug while introducing a change in the default behavior, I think due to the fact that the previous default behavior was problematic because of some backends not supporting empty directories.
I'm not complaining, at times you realize that a breaking change is the lesser evil.
I'm only trying to understand if, for example, I can relay on semantic versioning when breaking changes are introduced, so that I can tell my users: rclone 1.56.x is supported.
Was that the case? No idea, I still do not know in which version the change appeared.

1.56.2, judging from these two commits on master:

Good. I mean bad. Now I know but we have a problem with semantic versioning.

I somehow cannot understand your issue or what you are missing.

I see this:

v1.47.0 - 2019-04-13

  • ...
  • Add --create-empty-src-dirs flag and default to not creating empty dirs (ishuah)

here: https://rclone.org/changelog/#v1-47-0-2019-04-13

What are you missing?

1 Like

1.56.2, judging from these two commits on master

Sorry, I read the commit info wrong - the commits came with version 1.47.0! :sleepy: Thanks for correcting!

So: Introduced with new minor release, documented in release notes. :+1:

What are you missing?

Speaking for myself: :coffee: :coffee: :coffee:

2 Likes

@Ole there's nothing I'm missing, I was commenting on the fact that a breaking change was introduced between patch releases, which later turned out not to be the case.

Great, and your original issue was that you couldn’t find the changelog. Correct?

Tip:

You can subscribe to release info by clicking the bell in the upper right corner here: https://forum.rclone.org/c/releases/11

then you get a mail notification like this on every release:

Rclone 1.56.2 has been released. Find it here Rclone downloads or use rclone selfupdate to upgrade.

This is a bugfix release containing a couple of little fixes and a security fix.

Unfortunately in v1.56.0 and v1.56.1 rclone serve http was serving everything without authorization, even if authorization was configured. This bug was introduced as part of an ongoing refactor of the HTTP servers in rclone. None of the other servers (webdav, sftp, etc) are affected. Many apologies for this bug.

v1.56.2 - 2021-10-01

See commits

  • Bug Fixes
    • serve http: Re-add missing auth to http service (Nolan Woods)
    • build: Update golang.org/x/sys to fix crash on macOS when compiled with go1.17 (Herby Gillot)
  • FTP
    • Fix deadlock after failed update when concurrency=1 (Ivan Andreev)

Source: https://forum.rclone.org/t/rclone-1-56-2-release/26786

The entire changelog can be found in the drop down under documents on https://rclone.org/ or near the bottom of readme.txt and readme.html included in the release zip.

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.