Releases: odeke-em/drive
Release v0.4.0 (Rona midst)
This release is meant to just publish binaries for the latest features for users unable to compile the code easily.
Since the last release there have been numerous updates, but in the future we'll list them out more.
Thank you to all the contributors, and users! Stay safe.
Binaries and checksums
$ GO111MODULE=off make
CGO_ENABLED=0 GOOS=linux GOARM=5 GOARCH=arm go build -o ./bin/drive_armv5 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARM=6 GOARCH=arm go build -o ./bin/drive_armv6 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARM=7 GOARCH=arm go build -o ./bin/drive_armv7 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o ./bin/drive_armv8 ./cmd/drive
CGO_ENABLED=0 GOOS=darwin go build -o ./bin/drive_darwin ./cmd/drive
CGO_ENABLED=0 GOOS=linux go build -o ./bin/drive_linux ./cmd/drive
rm -f ./bin/md5Sums.txt
find ./bin -type f -name "drive_*" -exec md5 {} >> ./bin/md5Sums.txt \;
cat ./bin/md5Sums.txt
MD5 (./bin/drive_linux) = 01c25e18252cc2090f03ffa636f09c20
MD5 (./bin/drive_armv5) = bda6c82ab14870dbeb1976a07ec5daa3
MD5 (./bin/drive_darwin) = 023baad9cdbc0292423ab8274d77cd4a
MD5 (./bin/drive_armv6) = eb5339e40eefe685836d609fc4c1adcf
MD5 (./bin/drive_armv8) = d9a406d7f5f1b821173529940f8b5393
MD5 (./bin/drive_armv7) = 8adae2737f7510328a755a11335510e1
Release v0.3.9(UltraLightPushes)
This is the first release for 2017, following the last release ~4 months ago.
Lots of bug fixes and updates to this release:
-
fixed a progress bar overflow: This bug was reported in duplicate issues:
- #177 reported by @santirodrigo
- #708 reported by @asd-and-Rizzo
- #758 reported by @malteseunderdog
- #765 reported by @malteseunderdog
The problem was that for deletions, we were always deriving the file size from the Source on disk.
The above issues were fixed by PR #784.
-
fixed up spurious pagination that resulted from asynchronous pagination before children were produced.
This issue was reported by @bjohas in #724.
It was fixed by PR #768. -
unshare no matches found bug when no --type was specified.
This issue was reported by @bjohas in issue #747.
The problem was that if a user made a request such as:$ drive unshare -emails somebody@gmail.com -id some_id
without having specified the
--type
, no default accountType was set, hence the
user would get back an non-intuitive/cryptic errorno matches found!
The change in PR #771 fixed it; it adds User
as the defaultType. -
fixed a regression in which emails were no longer being set. This issue was noticed in #762. It was fixed by PR #763.
-
fixed a bug in which local and remote dirTypes differed. There was a long standing
TODO
in code
to fix this issue and it was high time that the chickens had come home to roost. This issue was fixed
by PR #770.
The result of the fix is that if the types differ, we now get an informative error
$ drive new --mime-key docs share_test
$ mkdir -p share_test
$ drive pull share_test; echo $?
Resolving...
/share_test: local is a directory while remote is a file
8
-
fixed up a README inconsistency in the documentation of the various options. This issue was reported by
@jean-christophe-manciot in issue #772. The issue involved
contributions from @sselph and @shaggytwodope. The cause of confusion is that Go's flag package
accepts both-flag
and--flag
indiscriminately. For folks used to *NIX CLI options get confused
because they are accustomed to-s
and--short
instead where:
+-s
is the short option
+--short
is the long option
The issue was fixed by @shaggytwodope with PR #779. -
added the ability to structure .driverc files. This feature was requested by @jean-christophe-manciot in
issue #778. The need for this feature is that using a single global
configuration for every option is very limiting, because one will want--depth=1
for list and--depth=-1
for push, of which the old style of a single configuration style couldn't accomodate.
The solution was implemented by PR #813 and
package https://github.com/odeke-em/namespace.
The new style .driverc file allows for structure e.gid=true [global] depth=10 [pull/list] depth=2 [push] verbose=true [list] long=true
where a section is a command's verb that can be run on the commandline e.g push, pull, list, delete, trash etc, as well as special global
which indicates the fallback/general-purpose section.
The rules of resolution are:
a) If an option is specified in a section that isn't [global]
, it has precedence over the
[global]
or default options e.g
[push]
no-clobber=true
[global]
no-clobber=false
no-clobber=true
wins
b) for options in the same section, the later the option the higher the overriding precedence e.g
[list]
long=false
depth=-1
long=true
In this case long=true
was declared later so long=true
wins
c) multiple sections can be specified in a section, but separated by "/":
[push/pull/list]
depth=-1
no-clobber=true
will make depth=-1
, no-clobber=true
for push, pull and list.
-
fixed an off by one traversal depth bug for md5sum and stat. This bug was reported by
@jean-christophe-manciot in #783. The problem was that at
the entry of the recursive function, we'd asap check ifdepth=0
and exist. However, if we are traversing
a directory/folder, in order to stop recursion on every step we'll decrement the depth by 1. By the time we
hit a non-directory after starting from a directory, we'd not stat/md5sum it. The fix was to first perform
the desired operations and then only check that condition at the end. It was fixed by PR
#832. -
Updated the README documentation to describe how to use
--notify
for file sharing. This issue was reported by @bjohas in issue #791. It was also fixed by @bjohas
with PR #791. -
fixed an illogical return status code on stat failure. This bug was reported by @aueuaio in issue #801. The problem was that the stat error was getting shadowed and also it was being logged to stdout instead of being recomposed and propagated on exit. It was fixed by PR #804.
-
added a new mode to fix clashes with option
--fix-mode
. This feature was designed and implemented by @iblis17 in PR #810. The feature is a new policy that allows you:- trash clashing files.
The default behavior is to rename them.
We can now do
$ drive clashes --fix --fix-mode trash
In that PR, also @jpambrun gave an alternate view and caution on user expectations.
This is pretty cool, it was @iblis17's first Go code and they knocked it out of the park!!
Congrats @iblis17, we are lucky to have you in the drive community and also in the Go community! - trash clashing files.
-
fixed spurious rename error for non-existent-to-begin-with-file. This error was reported in issue #826. The problem and use case was that I was manipulating
files that only exist on the cloud and not on my local disk because I have no local disk space. However,
on performing a rename of a file that only exists remotely, I'd get a spurious error such as
$ drive rename WINTER2017/h1.s binary.s
rename /Users/emmanuelodeke/odeke@ualberta.ca/ENGINEERING/WINTER2017/h1.s /Users/emmanuelodeke/odeke@ualberta.ca/ENGINEERING/WINTER2017/binary.s: no such file or directory
This issue was fixed by PR #827.
-
introduced a debug print mode.
This feature was implemented in PR #830.
Using environment flagDRIVE_DEBUG=true
(carefully chosen to avoid clashing with
other programs that might rely onDEBUG
), one can get debug information dumped to standard output.
The main purpose of this feature is to aid in easy debugging and particularly to alleviate
#829 in which the reporter could have been informed ASAP
that their directory had a .gd directory instead of them having to use their mental microscope
to figure out what went wrong.Typical output will look like
$ DEBUG=true drive list share-testing/ [/Users/emmanuelodeke/go/src/github.com/odeke-em/drive/cmd/drive/main.go:main.discoverContext:1857] contextPath: /Users/emmanuelodeke/emm.odeke@gmail.com/share-testing [/Users/emmanuelodeke/go/src/github.com/odeke-em/drive/cmd/drive/main.go:main.discoverContext:1867] driveRoot: "/Users/emmanuelodeke/emm.odeke@gmail.com" relToRoot: "" [/Users/emmanuelodeke/go/src/github.com/odeke-em/drive/src/rc.go:github.com/odeke-em/drive/src.ResourceMappings:92] RCPath: /Users/emmanuelodeke/emm.odeke@gmail.com/share-testing/.driverc [/Users/emmanuelodeke/go/src/github.com/odeke-em/drive/src/rc.go:github.com/odeke-em/drive/src.ResourceMappings:108] parsedContent from "/Users/emmanuelodeke/emm.odeke@gmail.com/share-testing/.driverc" { "global": { "depth": -1 } } [Commands.List] #0 "/share-testing" -- owner 175.00B 0Bwu8laYc9RTPa28zVk9Td2hTVWc 2016-06-30 15:32:25 +0000 UTC /share-testing/SciqPCKrhi.go -- owner 309.00B 0Bwu8laYc9RTPTXRYblNqQXBSQzQ 2016-02-03 08:12:15 +0000 UTC /share-testing/outf.go -s owner 39.70KB 0Bwu8laYc9RTPOVNSeElpdFBpS2M 2012-02-02 12:00:00 +0000 UTC /share-testing/ComedyPunchlineDrumSound.mp3
Binaries
$ make
CGO_ENABLED=0 GOOS=linux GOARM=5 GOARCH=arm go build -o ./bin/drive_armv5 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARM=6 GOARCH=arm go build -o ./bin/drive_armv6 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARM=7 GOARCH=arm go build -o ./bin/drive_armv7 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o ./bin/drive_armv8 ./cmd/drive
CGO_ENABLED=0 GOOS=darwin go build -o ./bin/drive_darwin ./cmd/drive
CGO_ENABLED=0 GOOS=linux go build -o ./bin/drive_linux ./cmd/drive
rm -f ./bin/md5Sums.txt
find ./bin -type f -name "drive_*" -exec md5 {} >> ./bin/md5Sums.txt \;
cat ./bin/md5Sums.txt
MD5 (./bin/drive_armv5) = 990d899bdff2e54cd401ece624a4f8be
MD5 (./bin/drive_armv6) = 812689b6bb2113948c8394854bbde47f
MD5 (./bin/drive_armv7) = 222be8926c35353f81baba014d926c71
MD5 (./bin/drive_armv8) = ecc56e8df5af018eab40097d261e862d
MD5 (./bin/drive_darwin) = 4b2528c13a5fb955bf28f48beec197ca
MD5 (./bin/drive_linux) = a192d38419377aa27a45d90055c56a14
...
Release v0.3.8(HiatusReturnIsAComingOfAge)
This release is the end of the summer 2016 release -- a return from a 3 month hiatus, in which a whole lot of bugs were fixed.
It features:
- Travis install fix. After adding a Makefile, the build was broken. PR #666 by @sselph fixed this bug
- share,
--with-link
to avoid public file indexing, but only those with a link can access it.
This feature was requested for in #568 by @RickCogley and the fix was guided by @thebaddie. The problem was that doing
$ drive pub afile
would make Google publicly index the shared file, of which for private files shouldn't be indexed. The fix for it involved ensuring that property WithLink
. It was implemented in PR #674, thus you can now do
$ drive share --with-link release-videos/stewie_dez_nuts.mp4
Provide access for accountType(s)
user
anyone
For roles(s)
reader
Addressees:
+ Anyone with the link
File(s) to share:
+ stewie_dez_nuts.mp4
Proceed with the changes? [Y/n]:y
successful share for stewie_dez_nuts.mp4 with email "", role "reader" accountType "anyone"
$ drive url release-videos/stewie_dez_nuts.mp4
/release-videos/stewie_dez_nuts.mp4: https://drive.google.com/open?id=0By5qQkvRAeV2dHhVaUpiUzFibm8
- Fixed a spurious error when parsing .driverc files, that was caused by function signatures getting changed but variable reuse meant an old error was used. This bug was reported by @dconathan in #677, then duplicate reported by @staltux in #679. It was fixed by PR #678.
- Added the ability to type select during pull/push ie folders only, files only etc. This feature was requested by @brandoncurtis in #670. It was fixed by #673.
You can now do
$ drive push --directories a1/m1
$ drive pull --files tf1/tf2
- Fixed a nil/uninitialized filter dereference. This bug was caused by PR #632. It was reported by @Sjlver in #681. It was fixed by #682.
- Encryption and decryption key variables can now be recognized in the .driverc configuration file. This bug was reported by @quisar in #683. The bug was that the variables for encryption-key and decryption-key were not recognized. It was fixed by #684
$ cat .driverc
hidden=true
encryption-password=bonjour
decryption-password=bonjour
$ drive push test.mp4 # Should be encrypted at rest
$ drive pull --piped test.mp4 > outf && diff outf test.mp4 # Should be decrypted properly
- Fixed up
--no-clobber
description for push. This bug was reported by @kcwu in #685. It was fixed by #688. - Updated the QR code dispensing drive-server to write a png image using the response writer's .Write method instead of going first through fmt.Fprintf(res, "%s", pngImage), the code is clearer and faster. This update was made in #689.
- pull/export can now export to the same directory and level. This feature was requested by @AtcR in #660. The use case is to avoid creating too many exports' directories and to allow your exported files to be placed in one place. It was added in #696.
$ drive pull --explicitly-export --exports-dir ~/Desktop/exp --export pdf,txt,odt --same-exports-dir
Resolving...
+ /test-exports/few.docs
+ /test-exports/few
+ /test-exports/influx
Addition count 3
Proceed with the changes? [Y/n]:y
Exported '/Users/emmanuelodeke/emm.odeke@gmail.com/test-exports/influx' to '/Users/emmanuelodeke/Desktop/exp/influx.pdf'
Exported '/Users/emmanuelodeke/emm.odeke@gmail.com/test-exports/influx' to '/Users/emmanuelodeke/Desktop/exp/influx.txt'
Exported '/Users/emmanuelodeke/emm.odeke@gmail.com/test-exports/few' to '/Users/emmanuelodeke/Desktop/exp/few.pdf'
Exported '/Users/emmanuelodeke/emm.odeke@gmail.com/test-exports/few.docs' to '/Users/emmanuelodeke/Desktop/exp/few.docs.txt'
Exported '/Users/emmanuelodeke/emm.odeke@gmail.com/test-exports/few.docs' to '/Users/emmanuelodeke/Desktop/exp/few.docs.odt'
Exported '/Users/emmanuelodeke/emm.odeke@gmail.com/test-exports/few.docs' to '/Users/emmanuelodeke/Desktop/exp/few.docs.pdf'
- Disable the automatic creation of *.desktop files on Linux. This feature was requested by @chevillet in #697. It was added in #698 and now you can do
$ drive pull --desktop-links=false
and you could keep this behavior turned on in your .driverc by
$ cat << ! >> .driverc
> desktop-links=false
> !
- list --trashed now returns all items in the same current working directory. This bug was reported by @njbbaer in #695. It was also fixed by @njbbaer in #700. The diagnosis of the bug was two fold which you can find by reading #700 (comment).
- --ignore-checksum documentation was made more coherent. This was made by @gjalsem in #703.
- audited open file descriptors to ensure that they closed to avoid running out of open files ie descriptor leakage. This issue was reported in #711 by a quick audit
$ git grep -E 'os.Open\(' src/* config/* drive-gen/*.go
src/misc.go: f, fErr := os.Open(p)
src/remote.go: file, err := os.Open(fsAbsPath)
src/types.go: fh, err := os.Open(f.BlobAt)
in which I noticed some opens but no accompanying closes.
Alas there was a call site that leaked its descriptors ie during file upload. This behavior was fixed by #712. The fix involved avoiding unnecessary opens but also attaching a file.Close handler to clean up after the caller returned. That change results in better performance and less resource exhaustion.
- Fixed push mounted(
push -m
) that always unloaded entries in the root as reported in #641.
This bug was a regression from #616. It was fixed by #713. The fix also ensured that we caught erraneous proceedings after push mounted had returned due to a failure to return when done. - list --sort now accepts multiple sort properties. This bug was reported in #714. It was fixed by #715 that ensures that sorters can be passed in delimited by comma. It also updated the doc on list sorting. So now we can perform composite sorts for example by name in descending order, then modification time in ascending:
order:
$ drive list -sort name_r,modtime
- Fedora package for drive. This was contributed by @agrez in #717. Please see https://github.com/odeke-em/drive/blob/master/platform_packages.md#fedora for how to get drive on Fedora.
- return a non-zero error after fixing clashes so that scripts can refresh and then re-pull. This was reported by @yottabit42 in #720. Given that a call for fixing clashes during pull or push stops the operation, it is necessary that the outside world be relayed to, that the operation can be retried, e.g by a shell script. This behavior was fixed by @sselph in #722.
- touch now allows custom times to be set. This feature was requested by @bjohas in #726. It was implemented in #729.
Now you can set the desired times on your remote files instead of them just always being at the time thatdrive touch
was performed on the remote server. You can do pass in custom times, and custom time formats for example:
$ drive touch --time 20120202120000 ComedyPunchlineDrumSound.mp3
/share-testing/ComedyPunchlineDrumSound.mp3: 2012-02-02 12:00:00 +0000 UTC
$
$ drive touch --format "2006-01-02-15:04:05.0000Z" --time "2016-02-03-08:12:15.0070Z" outf.go
/share-testing/outf.go: 2016-02-03 08:12:15 +0000 UTC
$
$ drive touch --duration -30h ComedyPunchlineDrumSound.mp3 outf.go
/share-testing/outf.go: 2016-09-10 08:06:39 +0000 UTC
/share-testing/ComedyPunchlineDrumSound.mp3: 2016-09-10 08:06:39 +0000 UTC
- Fixed pulling from a deprecated Google Web Hosting URL. This bug was a notice from Google Drive https://support.google.com/drive/answer/2881970?hl=en. However it was reported by @dermesser in #734 (comment) and revealed by @cdown's bug report in #734. It was fixed by @dermesser in #735. It was then updated by #736.
- Fixed unrelayed errors on pulls. This bug was reported by @cdown in #734. It was fixed by #737.
- Documented lone modification time change handling during checksum verification. This request for clarity was made by @tkeith in #690. It was fixed by #742.
- Propagating and handling errors from remote file resolution/pagination. This bug was catastrophic and had plagued drive for a full year and more. The problem was in the design of the pagination where the paginator asynchronously retrieved files and o...
Release v0.3.7(YourDataAreBelongToYourselfE2EEncryption)
This is a special release so that the End-to-End Encryption features are on the top most release. This makes it easier for those that rely on binaries and the most recent release to always have these features. A big shoutout to @sselph for all the work in implementing a library with PRs:
A sample demo of the feature is here https://www.youtube.com/watch?v=22SYefONHZk
Binaries
$ make
CGO_ENABLED=0 GOOS=linux GOARM=5 GOARCH=arm go build -o ./bin/drive_armv5 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARM=6 GOARCH=arm go build -o ./bin/drive_armv6 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARM=7 GOARCH=arm go build -o ./bin/drive_armv7 ./cmd/drive
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o ./bin/drive_armv8 ./cmd/drive
CGO_ENABLED=0 GOOS=darwin go build -o ./bin/drive_darwin ./cmd/drive
CGO_ENABLED=0 GOOS=linux go build -o ./bin/drive_linux ./cmd/drive
rm -f ./bin/md5Sums.txt
find ./bin -type f -name "drive_*" -exec md5 {} >> ./bin/md5Sums.txt \;
cat ./bin/md5Sums.txt
MD5 (./bin/drive_armv5) = 966d98c643564b8c493d3676fccdfad9
MD5 (./bin/drive_armv6) = 23384c0573c529514dde90f2beb41b4b
MD5 (./bin/drive_armv7) = ed335b1fb75bdb9274e63aaa74b75ec5
MD5 (./bin/drive_armv8) = 36ac305fea084f47bff11afdc46769a5
MD5 (./bin/drive_darwin) = 0e09fff26c1daaf93ca2049610e2e1df
MD5 (./bin/drive_linux) = c71bae6edbfa96dddd5bc853f27bef31
$ go version
go version devel +1f7a0d4 Thu May 19 04:37:45 2016 +0000 darwin/amd64
$ date
Sat 11 Jun 2016 01:19:10 PDT
Release v0.3.6(BytesByTheDozen)
This release features the following:
- Added a retry count flag for pull/push failures.
This feature was requested by @canpolat in issue #529. It was addressed by PR #634 and updated by PR #635
$ drive pull --retry-count 14 documents/2016/March videos/2013/September
$ drive push --retry-count 4 a/bc/def terms
- Fixed
edit description
to have proper error handling. This issue was diagnosed and fixed by @thiell in PR #605 by ensuring any thrown errors are recomposed and combined to be returned later on. - Returning error levels/codes to shell on error.
This issue was requested by @pageauc in issue #479. It was addressed by PR #608.
$ drive pull nonExistant
$ echo $?
8
$ mkfifo pxm
$ drive push pxm
Resolving...
–
/pxm (/Users/emmanuelodeke/emm.odeke/pxm) is a named pipe, yet
not reading from it
$ echo $?
22
Sample status codes taken from the commit that fixed the issue. Please see https://github.com/odeke-em/drive/blob/b261a8fdd7ebc72eb057fe8cda96c2e18cca7199/src/errors.go
- Fixed OAuth2.0 Invalid Scope bug. This issue was reported by @Guymer in issue #609. It was fixed by PR #610. This issue was a regression from PR #608.
- Added a flag to specify an exact destination not in the current working directory. This feature was requested in the form of a question by @kevjonesin in issue #612. It was addressed by PR #616.
For example:
- To push the content of music/Travi$+Future, integrals/complex/compilations directly to a1/b2/c3:
$ drive push --destination a1/b2/c3 music/Travi$+Future integrals/complex/compilations
where the sources exist on disk.
- Do not show the progress bar if
--quiet
is set. This issue was identified by @chevillet in issue #636. It was addressed by PR #642. - Bumped up the minimum go version in the README from Go1.3 to Go1.5. This issue was reported by @ManuCart in issue #627. It was addressed by PR #633. This issue manifested because while using below Go1.5 yet pulling the latest from auxilliary dependencies e.g golang.org/x/net requires net/Context would give an error
go get -u github.com/odeke-em/drive/cmd/drive
# golang.org/x/net/context/ctxhttp
../.bin/go/src/golang.org/x/net/context/ctxhttp/ctxhttp.go:35: req.Cancel undefined (type *http.Request has no field or method Cancel)
- Fixed up a data race with appending to a shared(highly contentious between multiple goroutines) internal change list tracker. This issue was reported by @sselph in issue #613. It was also addressed by @sselph in PR #639. The diagnosis of this issue was pretty interesting aside from using the race detector because @sselph noticed this problem only manifested that when the requested number of max goroutines running was 1, the problem disappeared, whereas if it were set above that, all hell broke loose. This observation led him to turn on the race detector and alas the problem was identified!
- Rename now also renames the local file/directory, not just the remote one. This feature was requested by @smblott-github in issue #459. It was fixed by PR #632. Sample usage:
- To turn off local renaming
$ drive rename --local=false a/b/c/d pam
- To turn off remote renaming
$ drive rename --remote=false bcd tkf
It should warn you too if you turn off both local and remote renaming
$ drive rename --local=false --remote=false 5 6
no rename mode set, set either `local` or `remote` mode
$ echo $?
8
Binaries
$ md5 drive_*
MD5 (drive_armv5-cbd052777d5c4fbfb16500606b6f423b) = cbd052777d5c4fbfb16500606b6f423b
MD5 (drive_armv6-a2f6f9d6c1e511766b898efa15ab69c6) = a2f6f9d6c1e511766b898efa15ab69c6
MD5 (drive_armv7-f21ff1ac5ca5f7c0aba980b2594e4a84) = f21ff1ac5ca5f7c0aba980b2594e4a84
MD5 (drive_darwin-48b0c8a426f4e470d9526dbefba78d0c) = 48b0c8a426f4e470d9526dbefba78d0c
MD5 (drive_linux-6cf9c721576fcb777bfd70da766b3729) = 6cf9c721576fcb777bfd70da766b3729
Notes
This release has been at a better pace than the last 2 or 3. More features added, more lessons learned, more bugs fixed. Let's keep this train steam rolling. This release was actually made in anticaption of an upcoming feature that will provide end to end encryption for files, built by @sselph (peek at it here #645), using drive. I can't wait for this 🔥🔥🔥 in the next release.
Release v0.3.5(Encore)
The latest release features:
- A command to handle clashes, list and fix them. This was requested in issue #447 and was fixed by PR #532. Now allows for:
Listing clashes
$ drive clashes dup-tests/a/b/c/d/e
These paths clash
X /dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2Wk9FaEN4ZzNock0
X /dup-tests/a/b/c/d/e/f/g 0By5qQkvRAeV2amN5aFgzc1htVXM
X /dup-tests/a/b/c/d/e/f/g 0By5qQkvRAeV2N21ETkVCTHpkcEE
X /dup-tests/a/b/c/d/e/f/g/h/i 0By5qQkvRAeV2TWdVb29DRlVXR1k
X /dup-tests/a/b/c/d/e/f/g/h/i 0By5qQkvRAeV2Vk9lY3Y2SjFDYlE
X /dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2TzE3LXNWVFNoaHM
X /dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2NmEwUmFQOEZ0dE0
X /dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2bm5ZRVpELXRHTWM
Fixing clashes
$ drive clashes --fix [paths...]
$ drive clashes --fix dup-tests/a/b/c/d/e
Some clashes found, we can fix them by following renames:
/dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2TzE3LXNWVFNoaHM -> f_0
/dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2NmEwUmFQOEZ0dE0 -> f_1
/dup-tests/a/b/c/d/e/f 0By5qQkvRAeV2bm5ZRVpELXRHTWM -> f_2
/dup-tests/a/b/c/d/e/f/g 0By5qQkvRAeV2N21ETkVCTHpkcEE -> g_0
/dup-tests/a/b/c/d/e/f/g/h/i 0By5qQkvRAeV2Vk9lY3Y2SjFDYlE -> i_0
Proceed with the changes [Y/N] ?
- Fixed an extra space from
drive list
output. This bug was reported by @darthcoli in issue #557. It was addressed by PR #578. - Typo fix in code by @eduardofv. This was done in PR #545. Thanks for the good eye.
- A refactor of the code that handles multi job rationing to a common base. This work was done in PR #527.
- Added a command for getting just fileId as requested in issue #533. This command was motivated by e.g @canpolat's comment in #530 (comment) in which he highlighted some difficulty in getting the fileId of a file while resolving a user's issue. It was fixed by PR #534.
$ drive file-id --depth 2 dup-tests bug-reproductions
FileId Relative Path
"0By5qKlgRJeV2NB1OTlpmSkg8TFU" "/dup-tests"
"0Bz5wQlgRJeP2QkRSenBTaUowU3c" "/dup-tests/influx_0"
"0Cu5wQlgRJeV2d2VmY29HV217TFE" "/dup-tests/a"
"0Cy5wQlgRJeX2WXVFMnQyQ2NDRTQ" "/dup-tests/influx"
"0Cy5wQlgRJeP2YGMiOC15OEpUZnM" "/bug-reproductions"
"0Cy5wQlgRJeV2MzFtTm50NVV5NW8" "/bug-reproductions/drive-406"
"1xmXPziMPEgq2dK-JqaUytKz_By8S_7_RVY79ceRoZwv" "info-bulletins"
- Added an include/exclude mechanism in .drive_rc files for ignoring/including files. This feature was requested by @memeplex in issue #535. It was added as a result of the lack of a negative lookahead/double negation/ ignore all but in Go's regex stdlib implemented, at least at "1451307614.785091" and also "1461500703.126929" when this release summary was made.
The utility for it is say you want to ignore all *_rc files except your drive_rc file, or all your mp4s except for mixtape.mp4, you'll write
# Inside my .drive_rc file
\.*_rc
!\drive_rc
mp4
!mixtape.mp4
This feature was added in PR #541.
- Fixed up a regression resulted from PR #528. This issue was reported by @memeplex in comment #535 (comment). It was fixed by PR #537.
- Issue filing directly from your terminal. This feature was added in PR #542 and allows both piping of text or sending it inline e.g
$ cat bugReport | drive report-issue --title "Crash on pushing"
$ drive report-issue --title "Crash on pushing" --body "Similar to #5 but here always crashes only after a timeout"
- Fixed a bug with exporting native Google Presentations to ppt and pptx. This bug was reported by @mirohe in issue #551. It was fixed by PR #559 and then updated by PR #588. The bug was that there was a regex ambiguity between ppt and pptx that is
"ppt": "application/vnd.ms-powerpoint",
"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
meant that the first match for pptx could either be the mimeType for ppt or the right one, undeterministically worsened by the fact that the regexes are in a map and keys don't have a deterministic sorting.
This release is the sum of sparse work on drive.
This release caught me on the move travelling between countries and places, couple of hours after my birthday and also quite heavy during my day job so I didn't have time to make a detailed summary. I finally got the free time today Sun 24 Apr 2016 05:58:15 PDT
to write up a summary of changes.
Aside from that, thank you to all the users and all the contributors. Particularly, I'd like to give a shoutout to @canpolat who has been helping answer questions and matching patches. Enjoy v0.3.5!
Release v0.3.4(StrangerThanFiction)
This release includes a bunch of bug fixes:
- fixed CSV and TSV mime types: This was a remnant of the mitigation #357 to try to fix issue #232. Since as of "Sun 20 Dec 2015 21:31:08 MST",
--convert
doesn't work on Google Drive's remote backend(Please see https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=4198), @canpolat fixed this up with PR #485. - fixed up rc-file entries --exclude-ops and --export: They were mistakenly entered as needing string array conversion yet the front end takes them as csv and splits them. This issue was reported in #488 and addressed by PR #489.
- added unified diff: This feature was requested by @monojp in issue #494. This is useful in cases where you'd like to apply patches to files. It was added in PR #495.
$ drive diff -u [paths...]
- added diff basing: This feature was requested by @monojp as a followup of issue #494. It was raised in issue #506. It allows you to set which is the base. It was added in, in PR #507.
$ drive diff --base-local=false ls.txt
$ drive diff --base-local ls.txt
- allow pulling of exportable documents without a change in checksum, or modified time: This issue was reported by @antton, and advocated by @xezpeleta and @bellera. The problem was that to register a need to download, a checksum difference, modTime difference, size differences have to be reported. However, exportable files such as Google Docs + Sheets cannot be downloaded raw but exported so therefore their checksums are always empty, size always 0 (zero) and in case of no modTime, there was no way to request a download. This was fixed by PR #509.
- fixed --match-mime for pull: This issue was reported by @xezpeleta in #498. It was the result of a mis-spelling in code. It was fixed by PR #499.
- fixed a docs and docx ambiguity resulting from a duplicate character in their different regexes: This issue was reported in #500 and addressed by PR #501.
- fixed up --quiet to log nothing but errors: This was reported by @chevillet in issue #502. Some code hadn't been touched in a while and this had ignored the fact that when
--quiet
was passed in, stdout would have to not be used. It was addressed by PR #522. - fixed up unshare, when no emails were passed in, e.g revoking access to all users: This issue was noticed by @bdlow and then raised in #503. It was addressed by PR #504.
- fixed up the behavior of
pull --starred
to differentiate trashed from untrashed: This issue was noticed by @ManuCart in #515. It was fixed by PR #517. - fixed up a regression where if nil options where passed in e.g during a
drive init
, a panic resulted. This issue was noticed by @Eyjafjallajokull in #524, and advocated by @aerth. It was addressed by PR #525.
ARM-Binaries
$ shasum -a 256 drive-arm*
1b7809bc559ce751d81a9325f508fe6392994ae9d6b5cf5fbe5a0af8e83d52e1 drive-armv5
6c5ce70b12422a02f51ce3c859b985722aa1770649adeb9397b4a61de33d24b8 drive-armv6
298c56d7f1a2407b518218dee920b0f4053c575581e4c92bf8b5e9bafe98a4b9 drive-armv7
This release is close to the checkmark of 365 days as drive was handed over to me on "Thursday, 1st January 2015". It feels so nice to have come this far and along the way lots of lessons have been learnt, lots of interactions, lots of learning. Reflecting on this journey, I'd say it has been 200%+ worth it working on drive. Closer to the holidays, cheers to everyone and thank you all!
Release v0.3.3(IteratingMoreAndWinning)
This release contains a bunch of features and bug fixes:
- pulling starred files: This issue/feature was requested in issue #431 by @ManuCart. The need for pulling starred files was addressed by PRs #476 and #467.
$ drive pull --starred --all
$ drive pull --starred --matches influx png dogm
- return an error code to the env if the user rejects/cancels an operation: This was reported by @smblott-github in issue #460. It was addressed in PR #466.
$ echo "n" | drive push information && echo "done" || echo "never went through"
never went through
- fixed up unequal traversal depths for local and remote traversals. This issue was reported by @csaleman in issue #462. What was happening was that because a decremented traversal depth assignment after getting remote children passed to the local traversal meant that local files would not be found. This issue was fixed by PR #465.
- star + unstar files implemented: This feature was a spin off after the realization from #431 that there wasn't a utility to manage starred files. This feature was added in PR #470.
$ drive star highlights/game10 "Vic Mensa-U-Mad.mp3" Fall2015/ECE_487/assignments
$ drive unstar oldContent influx/p1/p2A
- no need to retry operations on permanently mutable root file: This bug was noticed by @colinkeenan in issue #472. Previously the retry mechanism for errors was relying on unknown errors' error codes, however any mutation on '/' (root) is forbidden.
This made the need to actually catch immutable error reports. This was addressed by PR #473.
Along the way, @colinkeenan figured out how to make proper locales and terminal encoding for Linux and gave me an education, and gave a potential solution to #406 and @colinkeenan then made a wiki entry at https://github.com/odeke-em/drive/wiki#linux-terminal-character-encoding. - ensuring that in trash, users can get a preview of the operations to be performed: This was added in, in #474.
- learnt that any mod inside a directory modifies its modTime and causes spurious changes with drive. This behaviour was firstly noticed by issue #463 and then made apparent by ensuring that even dirModTimes were reported in #464. This behaviour spread over and was also noticed by @cdown in issue #471. It was then fixed in PR #478.
- touch can now take --depth and --verbose: This allows better control for touch. It was requested in issue #481 and addressed by PR #482.
$ drive touch --depth 3 Fall2015 Photos/shared
$ drive touch --verbose --depth -1
- better unshare + share: Previously unsharing only involved
--role
yet sharing involves roles, emails and accountTypes. This awkwardness was reported by @bdlow in issue #484. Also only one role, and one accountType could be applied during share/unshare. This called for a revisit of share/unshare and was addressed by PR #486
$ drive share --emails emm.odeke@gmail.com,odeke@ualberta.ca --role reader,commenter --verbose kevin-hart-roasts.mp4 statistics
$ drive unsahre --emails emm.odeke@gmail.com --role commenter --verbose lattices intro/term1/locks
This release has been a great one, lots of interactions with users and lots of bugs fixed, lots of learning and new engagement. drive continues to mature and this is good news for everyone.
Thank you every one for using drive and for all the issues, bug reports, contributions etc.
Enjoy!
Release v0.3.3-Binaries
$ shasum -a 256 drive-armv5
81a6d67e8cd8a77c8c5c026b1f6e0dc4c109b14366d6327b6be6693ac0b21c7d drive-armv5
$ shasum -a 256 drive-armv6
402985ba698cc43a933cf7eb89d14d44eb7ef19e699412fd4a91a3ebfed23ee5 drive-armv6
$ shasum -a 256 drive-armv7
eec6e2ce1001ea64c04cf9cb70958c1ec94424b207d523b885339a9b04b4e900 drive-armv7
Release v0.3.2(SamuelLJacksonShouldUseDrive)
This release features a bunch of bug fixes and some new cool features:
- qr share now uses a global app and credentials: This feature was requested in PR #453. Since setting up each user's QR server is a cumbersome operation that a huge majority of the users won't bother to attempt, drive now packages credentials that will give every user the ability to run "drive qr share [files....]" and that should get the QR code opened to the browser. I built a web app that allows for this https://github.com/odeke-em/qr-server and restricts the domain https://github.com/odeke-em/qr-server/blob/master/drive-centric.go#L12-L37. This feature was added in #454.
- implementated a "du" command. This feature was requested via an offline email interaction with Chad William Seys. It was implemented with PR #438. "drive du" is similar to the UNIX utility "du" --> disk usage. For example
$ drive du --depth 1 notes
75799 /notes/lecture3.pdf
143461 /notes/lecture8.pdf
143511 /notes/lecture11.pdf
140156 /notes/lecture15.pdf
113252 /notes/lecture10.pdf
105951 /notes/lecture2.pdf
- added a resource configuration setup: This feature was requested by @nkmathew in issue #199. It now allows for a user to define a .driverc file in any location say a specific folder, root folder or global ie ~/.driverc and those locations and traversed in that order. This feature took long to implement due to a few awkward situations with parsing options and then creating defaults. It was added in with PR #259. This issue helped give me a new discovery in Go golang/go#12954. Now you can say
cat << ! >> ~/.driverc
> # My global .driverc, do the same in a specific dir nested within your drive
> no-prompt=true
> verbose=true
> fix-clashes=true
> !
- fixed "no preview of changes when --no-prompt is set". This issue was reported by @rafmeeusen in issue #300. The bug was a reliance mainly on --no-prompt yet --verbose should have been relied on more. This was fixed by PR #439.
- typo fixes by @shaggytwodope that carefully went through the comments and printout statements and fixed them in PR #432.
- added a QR share command: This feature allows for users to get QR codes open in a browser and then they can use their cellphones to get the links. I found the need for this because of difficulty in copying links or having to first email yourself a file, or even open a Google Drive app on mobile. This feature was added in PR #437.
- fixed up a bug with "touch": Previously "drive touch" would only touch the first element and then the head element when running recursively in a directory. This issue was reported in #442 and then addressed by PR #443.
- fixed up "pull"/"push" not respecting "--hidden": This issue was reported in #444 and was the result of a refactor to use a single struct instead of many parameters. This was addressed by PR #445.
- added
--no-prompt
to "delete": This was reported by @fabianhjr in issue #448. The rationale that since this is a destructive operation, yet the user wouldn't get the reasons behind not allowing--no-prompt
without an explanation the user would be lost. The agreed upon option would be to link them to the issue e.g
$ drive delete --no-prompt fox
"no-prompt" is set yet performing a permanent deletion. Please see issue https://github.com/odeke-em/drive/issues/448
This issue was addressed in PR #450.
- fixed mounted-push: This issue was reported in #451. The bug was that the context's absolute path was erraneously obtained by a filepath.Abs(path) and this would only work in the root, however within nested directories it would trip out which was the self diagnosis. The solution was to use a proper filepath.Join(root, path). It was addressed by PR #452.
This release once again has involved great interactions with users. A shoutout to all the contributors, supporters people creating issues, providing ideas, users. Thanks for the patience and for using drive. I hope this issue can make sharing and using your drive files a lot better but also easier on mobile devices as well as making them more accessible, I personally use drive a lot when at school and across machines when I need to share files real quick. One day, hopefully it should be simple enough that Samuel L Jackson should be able to use drive and not be like
or https://drive.google.com/open?id=0Bwu8laYc9RTPYU9BTmZYRkVYOEE
Thank you again and enjoy drive!