]> source.dussan.org Git - nextcloud-server.git/commit
google: delete original after successful rename
authorAdam Williamson <awilliam@redhat.com>
Mon, 10 Nov 2014 21:32:20 +0000 (13:32 -0800)
committerAdam Williamson <awilliam@redhat.com>
Sun, 30 Nov 2014 23:34:35 +0000 (15:34 -0800)
commit415411a3d5625cf3b13c7e0c0a25d378b1e49a8a
treef118de5e02868f717fa3bf28293832c9930273eb
parent6fa748621f30e7577ebb36487784fee1677e2ba6
google: delete original after successful rename

In GDrive, filenames aren't unique, and directories are just
special files - so you can have multiple files with the same
name, multiple directories with the same name, and even files
with the same names as directories.

OC doesn't handle this at all, though, and just wants to act
as if file and directory names *are* unique. So when renaming,
we must check if there's an existing object with the same
file or directory name before we commit the rename, and
explicitly delete it if the rename is successful. (Other
providers like dropbox do the same for files, but intentionally
don't do it for directories; we really need to do it for
directories too.)

A good way to observe this is to run the storage unit tests
and look at the state of the Drive afterwards. Without this
commit, there will be several copies of all the test files
and directories. After this commit, there's just one of each.

We can't just say "hey, Drive lets us do this, what's the
problem?" because we don't handle multiple-objects, same-name
cases - getDriveFile() just bails and prints an error if it
searches for the file or directory with a given name and gets
multiple results.
apps/files_external/lib/google.php