firebase-tools: Firebase deploy should not reupload unchanged files

My site is 0.2 MB of html and 9.8 MB of images. I have a slow internet connection. Whenever I change the html, I suffer firebase deploy reuploading all the images—even though they are unchanged.

Good old Divshot was careful to compare sha256 sums so it could skip reuploading unchanged files. This made it usable on a slow connection. You can read a description of its algorithm at https://github.com/divshot/divshot-push/blob/master/lib/sync-tree.js

Whereas Firebase simply creates a tar ball of the entire project firebase-upload-*.tar.gz https://github.com/firebase/firebase-tools/blob/master/lib/prepareUpload.js , including all the unchanged files.

Please think how to conserve bandwidth, for those of us not blessed with high speed internet.

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Reactions: 46
  • Comments: 28 (10 by maintainers)

Commits related to this issue

Most upvoted comments

Yep, this is on the roadmap and we know it’s strongly desired. Can’t give you a timeline, but we’re well aware.

On Tue, May 17, 2016, 9:49 AM Mirth Hickford notifications@github.com wrote:

See also similar feature request for Surge.sh sintaxi/surge#119 https://github.com/sintaxi/surge/issues/119

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/firebase/firebase-tools/issues/133#issuecomment-219780589

This is the 5th most “reacted” open issue on Firebase, so I am really happy to be able to close it!

https://firebase.googleblog.com/2018/08/one-project-multiple-sites-plus-boost.html

If you updated the Firebase CLI recently, you might have noticed that your uploads got a bit faster. You may have also noticed a new .firebase folder in your project. That’s because we rolled up a new deployment system that we call Delta Uploads.

This new system only processes new, modified, or deleted files. You know, the delta. This means any files that are unchanged aren’t uploaded when you run firebase deploy. You may not notice a big improvement in performance if your site is only a few files. However, it will make a huge difference for sites with a large amount of existing unmodified assets.

Make sure to get the newest version of the Firebase CLI (firebase-tools on npm) and you’ll get super fast uploads!

@mbleigh - while you’re all thinking about it, I wanted to mention my use case for consideration as well. I have an “append-only” site where new static content is created on a fairly regular basis. I always know what’s new… there’s never any diffing required in my particular use case. I’d be thrilled to see the ability to tack on new content, even if I had to make the zip/tarball myself, i.e. something like firebase deploy --append ./my.zip. Just food for thought.

Also, if there’s anything I can do to help, let me know. I’m pretty handy with Node and static web hosting 😃

Also looking forward. +1

So is it fixed, @mbleigh ?

+1

Is this still in the works? Any updates?

It’s my first time using firebase hosting and I have to say I was surprised to discover firebase uploads the entire public folder upon calling the firebase deploy command. I’m so used to using tools which calculates file differences (Git, Unity collaborate, etc.) so I thought the firebase deploy command was hanging (or failing) and spent a good 30 minutes searching online for a solution to the ‘problem’. Turns out the process was working fine after all, but just took its time over my slow internet connection.

Just as a FYI, if you want to track the upload progress, simply open an Activity Manager application from your system OS and monitor the ‘node’ process for upload activity:

screen shot 2017-02-17 at 11 21 03

any update on this feature?

@laurenzlong @mbleigh : hi guys, any ETA on this?

@talas9 No problem! It keeps them running as they are.

+1