Releases: odeke-em/drive
Release v0.3.2(ArmBinaries)
This release features cross compiled ARM binaries on Go1.5.1
$ shasum -a 256 drive-armv5
40990c0a23c06fcf8c27c878ef105a8db69493af423970ebb3d1c36b83f148f9
$ shasum -a 256 drive-armv6
4bdcb4527459882cdeab09b4654ac1a24484902620a821241ed1210a16877196
$ shasum -a 256 drive-armv7
85db9255d5b026088e6a61d6faad0bf969049fbfb75b49854286528933ae3fba
Release v0.3.1(DraftDayPick)
This PR features a whole lot of new features, numerous fixes and contributions.
- added auto-renaming of name/path clashing files. This was a much needed feature due to the numerous issues and questions that users submitted to drive. It was implemented by @kadamski in PR
#418. You can pass in the '--fix-conflicts' flag or checkout the README for more information. - help: shorten lines to fix them to 80 char width: This issue was reported offline by @indragiek in #247. It was addressed by PRs #263 and #419.
- fixed non-canonical path imports: This issue was reported by @pefoley2 in issue #398, advocated for and then addressed also by @pefoley2 in PR #397.
- fixed retry errors always being printed on encountering during retry. This issue was reported in issue #407 and addressed by PR #408.
- added pull to a depth: This feature was requested in issue #409 and addressed in PR #411. This now allows you to pull to a certain depth instead of always pulling deeply nested folders until the root, say we have big files in level 3 of massiveFiles, we can pull only until depth 2
$ drive pull --depth 2 massiveFiles content
- fixed pull matches erroneously putting matches in root instead of relative to the current working directory: this issue was reported by @ikwyl6 in issue #389. It was fixed in PR #430.
- added push to a depth: This feature was requested in issue #410 and then added in PR #411.
- stat now returns "Description" field of a file: This issue was reported by @marcoblancas in issue #412. It was addressed by PR #413.
- added editing of description of file: This feature was requested by @marcoblancas in issue
#414. It was addressed by PR #423. Now you can run
$ drive edit-desc --description "October was here" 2015/10 Photos/October
$ cat description.txt | drive edit-desc --piped 2015/Photos/Winter
- a nice one liner use case for --piped: This was provided by @aerth in PR #425. Basically it involves making a tar of the working directory on the fly without taking up extra disk space and then pushing it up.
$ tar czf - . | drive push -piped backup-$(date +"%m-%d-%Y-"%T"").tar.gz
The power of UNIX filters and pipes. You could even take this a step further and do something else with pipes e.g encrypt your data, let your imagination go free. Please see @l3iggs examples on the wiki here https://github.com/odeke-em/drive/wiki/%5BUse-Case%5D-Backup-a-btrfs-subvolume-to-your-Google-Drive and https://github.com/odeke-em/drive/wiki/%5BUse-Case%5D-Restore-a-btrfs-subvolume-backup-from-your-Google-Drive.
- fixed up depth traversal for mounted push. This issue was reported in #415 and addressed by PR #416.
- fixed up version print output. This issue was reported in #419 and addressed by PR #422.
- fixed up aliases' usage with help. This issue was reported in #421 and addressed by PR #422. Previously 'drive help cp mv ls' retuned the response for an invalid command.
- fixed up stat depth: This issue was reported in #424 and then addressed by PR #426.
This release has had a whole lot of improvements and contributions plus growth. Lots of users are getting familiar with drive, and users are finding new cool ways to make things work for them which to me is a great sign of familiarity and usage of drive, and hopefully easy of use. On boarding of new users has been a lot easier at least from the feedback they have given back in issues.
I would like to thank everyone for the contributions(in the form of code, issues, patience, spreading the word, support etc) but also to the users for using drive. I think we've gained quite a bit of traction and we've learnt a lot.
I'd like to dedicate this release to my newly born little nephew Emmanuel -- if you ever read this in the future: Emmanuel was here and this October 2015 release was lit! Also I'd like to wish Burcu aka @rakyll a happy belated birthday(few hours behind).
Thanks again and enjoy drive v0.3.1
Release v0.3.0(SummerSentinel)
This release is a comb up of the summer and features major bug fixes:
- fixed up the wrong
--ignore-name-clashes
argument in the README. This issue was reported by @cacack in issue #382 and then fixed in PR #381. - fixed wrong warning about quota. This issue was reported by @casperklein in issue #384. It was fixed with PR #385. Basically what was happening was that only additions were being reported, but not deletion nor modification byte counts by an intentional skip.
- ensure noPrompt is respected when quota is exceeded. This issue was reported by @casperklein in issue #386. It was fixed in PR #387.
- fixed bug in pull-matches not yielding results. This issue was reported in #390 and addressed by PR #391. The problem was because a wait to parallel combine results of clashes and change lists, was done only once instead of twice. The fix involved refactoring this code so that no need to manually create and wait for change combines.
- fixed modTime updating after push-piped. This issue was reported by @casperklein in issue #392. It was fixed in PR #393.
- ensuring that move fails exit with a non zero status code. This issue was reported by @wmsvision in issue #379. It was addressed by PR #380.
- fixed up dir for mkdirAll in pull. This issue was reported in #374 and addressed by PR #375.
- fixed up mimetype for pptx to be recognized by the Google Drive Web UI. This was reported in issue #368 and addressed by PR #369.
- fixed pulling of directories on Windows. This issue was reported by @pefoley2 in issue #359 and also addressed by @pefoley2 in PR #367.
- treating large subset of unidentified errors as retryable. This issue was a symptom in reports #345, #358, #371 and they were addressed by PR #395. This treatment of the largest subset of helped solve immediate I/O timeouts, unreliable connection trips and others.
This release has had numerous bug fixes, as well as contributions from lots of users. Things seem to be getting stable as a couple corner cases were noticed e.g with an almost full quota, modTime not being modified during push-piped, treating the unknown as retryable, pull-matches bug etc as you'll see above.
Also this release marks the end of summer #sentinel and let's usher in the rest and keep going.
Thank you to everyone for all the contributions, issues, pull requests, advocacy for issue fixing etc and above all for using drive!
Release v0.2.9 (9Months Gestalt switch)
This release fixes a couple of issues and introduces some new features:
- file opening with drive: This allows you to open up multiple files (either by relative path or by id) both in your web browser and file browser. This was requested in issue #351 and addressed by PR #352. Sample usage:
$ drive open --file-browser=false --web-browser f1/f2/f3 jamaican.mp4
$ drive open --file-browser --id 0Bz8qQkpZAeV9T1PObvs2Y3BMQEj 0Y9
- URLing: This allows you to print out the URLs of selected files. This was requested in issue #348 and addressed by PR #349.
Examples:
$ drive url Photos/2015/07/Releases intros/flux
$ drive url --id 0Bz5qQkvRAeVEV0JtZl4zVUZFWWx 1Pwu8lzYc9RTPTEpwYjhRMnlSbDQ 0Cz5qUrvDBeX4RUFFbFZ5UXhKZm8
- fixed emptyTrash to only preview if canPrompt: This was discovered during tests and addressed by commit 9a4b47f.
- fixed up the serve URL instead of using the hostURL: This was discovered after integrating the
url
andopen
commands. The old hostURL was useful for published files and would present files listed row-wise. The new resourceURL works also for private files given the correct access and also files get presented titled and in a viewer similar to that you'd get after logging into the Google Drive web UI. - coercing csv + tsv files into officedocs so that they can be converted to Google Sheets. Google Drive's web UI and even API recognizes csv files' mimeType as
text/csv
. However when converting these filestext/csv
-->application/vnd.google-apps.document
which is not desired. This means that csv files get converted to Google Docs, yet we'd like them to be converted to Google Sheets instead. This issue was advocated for solving by @canpolat in issue #232. It was solved in PR #357. The fix puts these types of files one step closer to being converted into Google Sheets. The caveat though is that when you finally use the UI to complete the conversion, the Google Sheet gets created alright but as a file with a duplicate name. I reported this issue to some members of the Google Drive teams a couple of months ago but they are probably busy with a backlog of emails. - fixed generated url errors on folders. This was reported in issue #354 and addressed by PR #355. It was fixed by using a resourceURL as mentioned above.
- fixed windows compilation. This issue was reported by @asd-and-Rizzo in issue #238 and addressed by @pefoley2 who educated us on how to build without CGO enabled by using option
CGO_ENABLED=0
e.gCGO_ENABLED=0 go get -u github.com/odeke-em/drive/cmd/drive
. @pefoley2 also created a subsequent wiki entry https://github.com/odeke-em/drive/wiki/Building-on-Windows. - drive now has a website: odeke-em.github.io/drive. This was requested in issue #274 and addressed by the efforts of @shaggytwodope and @Queatz.
This release is the sum of a great journey of learning, interacting with users and problem solving, and trying to see things differently. It is a 9 month milestone for the journey that started in late December with an email exchange with @rakyll and then became official on Thursday 1st January 2015.
The summer just ended and school just began. However this doesn't matter because from the feedback I've been getting, drive appears to be a fruitful venture that will keep going and hopefully will be useful.
Thank you to all the users, supporters, contributors for the motivation, time and the contributions to this project and above all for using drive.
Cheers and enjoy the rest of the year!
Release v0.2.8 Arm Binary
$ go get -u github.com/odeke-em/drive/drive-gen && drive-gen
$ drive version
drive version: 0.2.8
Commit Hash: '906eb82d1bc7662f3c503ca9213980f7523e5199'
Go Version: go1.3.1
OS: linux/arm
BuildTime: 2015-08-28 02:42:01.299545786 +0000 UTC
$ cd $GOPATH/bin && shasum -a 256 drive
bf9ad9cda93af2f05162eb48d92896f7bd5633c9676e805db8ed7070e50cb539 drive
$ uname -a
Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux
Release v0.2.8(Eureka!)
This release features numerous bugs fixed and a couple of enhancements:
-
parallelized uploads:
a) This was requested directly by @Queatz in issue #315.
b) As a remedy to the high target issue #77 reported by @jpambrun, as well as a duplicate issue #158 raised by @sohamm17. Basically what was happening was that if deeply nested folders were encountered, due to the previous sequential uploading behaviour moreover every push required a naive remoteMkdirAll call, the time spent eventually built up. This issue was solved by a combination of an introduction of a cache, plus fix for remoteMkdirAll as well parallel uploads. This was fixed in PR #318. -
added exponential backoff retry mechanism: This was requested in issue #320 and addressed by PR #321. It allows for retrying of uploading on encountering some retryable e.g userRateLimitExceededError, InternalServerError.
-
retry on OAuth errors: This was reported in issue #326 and addressed by PRs #326 and #327.
-
fixed .driveignore for subfolders/children: This issue was reported by @twstdpear in issue #328. What happened was that the ignorePattern checks were not being made for subfolders/children. This was fixed by PR #336.
-
fixed up duplicate directory creation: This issue was reported by @vaiby in #186. Basically what was happening was a race condition to create folders on Google Drive which allows for multiple folders different ids, although your file system ordinarily won't allow for this. A simple scenario to replicate this would be to have two routines r1, r2. r1 -> /test/t1/content.txt, r2 -> /test/t1/content.txt. r1, r2 when both dispatched at time t go through the remoteMkdirAll call and even with latency Google Drive will return that the dirs do not exist and each one of these routines will create their own folders with the exact same names/paths.
The remedy was to serialize and memoize remoteMkdirAll calls with the introduction of an expirable cache. This was fixed by PR #318. -
fixed up pull goroutine rationer to match new pattern: This issue was reported in #332 and addressed by PR #333. It allows for simpler control.
-
Introduction of a verbose option for pull/push: This was introduced in PR #333. It allows for the user to see the on-going operations.
-
removed excessive memory consuming golang/text/collate during build: This was reported in issue #330. This was a show stopper because users on devices with low memory couldn't build drive. Plain string sorting was the remedy at least for now until golang/text/collate is working alright and not consuming a lot of memory. This issue was fixed in PR #331.
-
reverted using of multiple drive sessions: This issue was reported in #337. It was caused by the creation of a DB session to allow for multiple goroutines to write to the DB. However because the DB being used BoltDB locks the DB file, from the time that .Open() is invoked until .Close() is invoked, this meant that no other drive session could access the DB. This issue was fixed by PR #339.
This release has been a long time coming because it solves a whole lot of issues that were show stoppers. Now, drive uses as much concurrency as can be limited during pushes and pulls. This makes uploading/downloading a whole lot faster; the retry mechanism for errors allows for efficient retrying instead of dropping of files on encountering the first error, it also allows for proper uploading and more control. drive feels a lot more reliable and efficient -- qualities that users can hopefully rely on.
Release v0.2.7(CloneIndragie)
Highlights:
- Fixed getting with Go1.5. This issue was raised by @rakyll in #265. What happened was that initially Go tip was a little unstable and tripped out whenever internal packages were used. Reports were made to the Google Go API client googleapis/google-api-go-client#87, and it was a known at the mother ship golang/go#11307. The issue was fixed and all that propagated back, however drive was using my curated clone of the Google Go API because I have previously encountered issues with instability. However, the drive.v2 api is now imported using the official Google Go API switched that over in 8d2cc60.
- Fixed up the coerced mime type for Google Sheeets. This was raised in issue #289. It was addressed by PR #290. In this PR the ability to coerce a script to a Google AppScript was introduced. The mimeType was originally being incorrectly resolved to
- "application/vnd.google-apps.sheet"
// yet it is actually
+ "application/vnd.google-apps.spreadsheet"
- Fixed up
drive about
with no sub command arguments. This was raised in issue #294. Basically it was expecting arguments--features
,--files
,--quota
. This was addressed by PR #295. Now whenever it is invoked without arguments it gives output as a combination of all its sub commands. - documented option
mime-short-key
. This was raised by @canpolat in issue #298. The lack of this documented option was confusing to users and was addressed also by @canpolat in PR #299. - a question was answered concerning drive being able to interact with the new Google Photos. Yes, it can interact with Google Photos. This was raised by @derekxgl in issue #301. The solution to this question was provided by @jonbrock with the following instructions in #301.
You can create a Google Photos folder in your Google Drive now, and then
use drive to manipulate the photos. To set it up, go to drive.google.com,
open settings, scroll down and enable the "Create a Google Photos folder" option.
Once it's created you can rename the folder (if you want) and it continues to work.
- More diagnostic information is provided during pulls and pushes in case of any failures. Previously ignored errors caused users to think they were spurious modifications. This was raised by @pefoley2 in #304. This issue was addressed by PR #305.
- With the need to inform the user of errors encountered ie in PRhttps://github.com//pull/305 , this actually uncovered another bug in #306. This issue was raised by @pefoley2. Basically what was happening was that due to desktop entries being created instead of empty files on every pull of Google Docs + Sheets. However the logic of these being the equivalent for their non *.desktop suffixed files was not working hence always requested downloads. This issue was fixed by PR #307.
- listing of commands and subcommands when
-h
or--help
was passed in now sorted and no longer random. This issue was raised by @da-x. This issue was out of the control of drive. However it was from one of the packages that I have control over so I was able to fix this in PR odeke-em/command#3. - drive-gen always revert gen/generated.go after binary generation: This issue was raised in #310 and became a nuisance every time a user ran
go get github.com/odeke-em/drive/drive-gen && drive-gen
to bundle build information into the binary, always leaving gen/generated.go modified. This was fixed by PR #312. - bundling BuildTime into the binary: It is useful for a user to know when a binary was built. This issue was raised in #311 and addressed by #312. Originally
- $ drive version
- drive version: 0.2.6
- Commit Hash: 'c9fbf001df5eba932ad1f38bcdbf40fc5c5fa6e0'
- Go Version: go1.4.2
- OS: darwin/amd64
// Now
+ drive version: 0.2.7
+ Commit Hash: '9162e93e83571286b4c400e3dcc8cad88f5a172f'
+ Go Version: devel +bd1efd5 Fri Jul 31 16:11:21 2015 +0000
+ OS: darwin/amd64
+ BuildTime: 2015-07-31 20:57:51.548074555 -0600 MDT
- Fixed pull option
--export
. This issue was raised in #313. It was introduced in commit 787e7f0. It was addressed by PR #314.
This release includes a whole bunch of fixes mostly and in this time we've encountered way more interaction with new users. Also new ideas are coming through, and more users are fixing problems for others and answering questions.
This is great news and it shows adoption plus more experimentation.
A quick shoutout to @indragiek who is also a contributor -- congrats on completing a successful 3 month code workout. In the words of the wise person you know, "Let's clone more Indragies!".
Thank you very much to all the contributors, issue raisers, users, observers!
Release v0.2.6(GettingThere)
This release features a bunch of fixes and new features:
-
usage of a database to save indices because previously there were too many files in .gd/indices. This issue was raised by @vrusinov in issue #106. In this discussion, a great suggestion was made by @nkabir to checkout boltdb and that turned out to be a great fit for this project. This was introduced in PR #268.
Note: In case you still have a .gd/indices dir, please remove it as it is no longer necessary.
-
deinit
command -- the counterpart ofinit
. This was introduced after a question by @mgalgs in issue #282. It was introduced by PR #283. -
directory duplication due to multibyte char + space mixes. This issue was raised by @hidehide55 in issue #250. With this discussion and investigation, trying to find a solution spawned some realizations as well as found a bug related to ideographic spaces and quoting with multi-byte characters in Golang itself golang/go#11511. Preceeding discussion here https://twitter.com/odeke_et/status/616492920296751104. This issue was fixed by @hidehide55 in PR #276.
-
acknowledgement of push errors during mkdirAll: this issue was found to be a factor in causing #250 as well as other issues such as ordinary duplication because during MkdirAll errors being ignored got interpreted as "the directory doesn't exist". This issue was fixed by PR #267.
-
exploring all clashes during push. This issue was reported by @js-ojus in issue #261. What happened is that a single clash would cause premature returns. However this is annoying if a user has to discover an infinite number of clashes by trying as many times as the clashes are. This was fixed by PR #266.
-
exploring all clashes during pull. This issue was reported by @js-ojus in issue #262. It was addressed by PR #266.
-
fixed .driveignore to handle absolute paths during listing. This issue was reported by @asmisha in issue #270. What was happening is that only basenames were being compared instead of full absolute path for which the basename is a subset anyways. This issue was addressed by PR #272.
-
drive binary can now be generated with a different name. This issue was raised by @sbrun in issue #271 where Debian packaging requested that the binary's name
drive
be set to something else. This issue involved discussions with @sbrun, @fommil, @rhertzog, @shaggytwodope and myself. This issue was addressed by PR #280. Now you can say
$ go get -u github.com/odeke-em/drive/drive-google # Should create your binary called `drive-google`
$ drive-google version
...
- fixed up local index check residuals. This issue was raised by @cdown in issue #275. What was happening was that in spite of files not existing remotely yet existant locally, the local counterparts do not have the content necessary to create a file index. Every time that such a case was encountered, a warning about not finding the local index was printed. This was addressed by PR #278.
This release features a whole lot of contributions and new features. Thank you to everyone for the ideas, raising issues, pull requests, conversations and for using drive.
Enjoy!
v0.2.6 binaries
Binaires for v0.2.6
For linux/armv6l
$ go get github.com/odeke-em/drive/drive-gen && drive-gen
$ drive version
drive version: 0.2.6
Commit Hash: 'c9fbf001df5eba932ad1f38bcdbf40fc5c5fa6e0'
Go Version: go1.3.1
OS: linux/arm
$ cd $GOPATH/bin && shasum -a 256 drive
5996c941b040df045aa70b4dfcdd856d26029cdcb061c3bec9c1e055f2390f0e drive
For darwin/amd64
$ go get github.com/odeke-em/drive/drive-gen && drive-gen
$ drive version
drive version: 0.2.6
Commit Hash: 'c9fbf001df5eba932ad1f38bcdbf40fc5c5fa6e0'
Go Version: go1.4.2
OS: darwin/amd64
$ cd $GOPATH/bin && shasum -a 256 drive
60aad8799b50a0e7e10a9c4b296d4af9096a9cacecd5961deeb760565a794837 drive
Binaries here.
Binaries
- darwin/amd64
$ cd $GOPATH/bin
$ shasum -a 256 drive
3ce175af973b4b32238190861e364a210033325416cfff64c132b9da9d1ac854 drive
$ drive version
drive version: 0.2.5
Commit Hash: 'b888bb774aed858bf564fec936f13f186f47f449'
Go Version: go1.4.2
OS: darwin/amd64