181 Commits

Author SHA1 Message Date
Sybren A. Stüvel
7a7304d7a3 Shaman: Include original filename when uploading file 2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
a2f9a7b484 Shaman changed response does-not-existfile-unknown
Instead of 'does-not-exist' we'll now receive 'file-unknown' (see Shaman
commit 44efa6b39bddc703a14aa68316b092866813c38a)
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
b22b9da5d0 Shaman: Moved URL parsing into a separate function
This allows other code to just call that function, rather than copying
the behaviour.
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
f34bf7c66f When aborting, make sure the reason is available
This allows a GUI to display the reason of abortion.
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
6104bd6078 Shaman: Make checkout location available to the Packer 2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
14417b2d73 Record bytes & files uploaded on Transferer 2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
9074421ec3 Shaman server support
The Shaman server is a file storage system that identifies files by
SHA256sum and file length. BAT can send packs there by only uploading
changed/new files. The BAT pack is reproduced at the Shaman server's
checkout directory by creating symlinks to the files in its file
storage.

Retrying sending files:

When we can defer uploading a file (that is, when we have other files to
upload as well, and we could send the current file at a later moment) we
send an `X-Shaman-Can-Defer-Upload: true` header in the file upload
request. In that case, when someone else is already uploading that file,
a `208 Already Reported` response is sent and the connection is closed.
Python's Requests library unfortunately won't give us that response if
we're still streaming the request, and raise a ConnectionError exception
instead. This exception can mean two things:

- If the `X-Shaman-Can-Defer-Upload: true` header was sent: someone else
  is currently uploading that file, so defer it.
- If that header was not sent: that file is already completely uploaded
  and does not need to be uploaded again.

Instead of retrying each failed file, after a few failures we now just
resend the definition file to get a new list of files to upload, then
send those. This should considerably reduce the number of HTTP calls
when multiple clients are uploading the same set of files.
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
3dd4ff5ba6 Bumped version to 1.1-dev0 2019-03-01 14:07:12 +01:00
Sybren A. Stüvel
c8337f5098 Bumped version to 1.0
This is the same version as 0.99, just released as 1.0 to note the
maturity of the code (it's been used successfully for months at the Blender
Animation Studio).
2019-03-01 14:03:55 +01:00
Sybren A. Stüvel
8dede717c6 Bumped version to 0.99 2019-02-26 16:45:43 +01:00
Sybren A. Stüvel
add5cf930b Include error message with error status 2019-02-26 16:35:55 +01:00
Sybren A. Stüvel
03fb4da583 Convert target path from Path to str & PurePath
The target path is just read as string from the CLI now, to allow more
complex targets (such as URLs) that don't directly map to a path.

The Packer subclass now handles the conversion from that string to a
`pathlib.PurePath`, and specific subclasses & transfer classes can convert
those to a `pathlib.Path` to perform actual filesystem operations when
necessary.
2019-02-26 16:35:08 +01:00
Sybren A. Stüvel
c4a0d5925a Use 'bat-' prefix when creating temporary directories 2019-02-26 16:35:08 +01:00
Sybren A. Stüvel
e9e1cfd8f5 Removed unused imports 2019-02-26 14:49:54 +01:00
Sybren A. Stüvel
d5d9c7f52f Clarified comment 2019-02-12 12:48:02 +01:00
Sybren A. Stüvel
dcc992f1cd Bumped version to 0.9 2019-02-12 12:31:51 +01:00
Sybren A. Stüvel
66681a69df Fixed crash where collection children are ID blocks instead of GR blocks
Not sure when/how that happens, but it happened on a lighting file of the
Spring project, when linking in a nested collection of which parts where
also linked in from other blend files.
2019-02-12 12:31:05 +01:00
Sybren A. Stüvel
ee29184b3c Removed unused FileCopierPool class 2019-02-04 15:34:29 +01:00
Sybren A. Stüvel
1434a9ee5d Added --sha256 and --timing options to bat list
These are only temporary features for aiding in development.
2019-02-04 15:30:52 +01:00
Sybren A. Stüvel
55a14eca1b Removed some extraneous commas 2019-02-04 15:17:14 +01:00
Sybren A. Stüvel
daab1df826 Use a priority queue instead of repeatedly sorting a deque 2019-02-04 15:17:07 +01:00
Sybren A. Stüvel
efbd7c1cb2 Bumped version to 0.8 2019-01-02 16:06:38 +01:00
Sybren A. Stüvel
20d7ea08cc Workaround for Windows failing on glob patterns in path.resolve()
Windows fails with an OSError when `somepath.resolve()` is called and
`somepath` contains a glob pattern. As a workaround, we now `resolve()`
the parent directory, and put the filename at its end. This only works
when the glob pattern is in the filename, which is the case for BAT-
generated globs.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
d222fea960 Explicitly write pack-info.txt as UTF-8 2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
772a5a1b1c Replace → with ->
Apparently Windows still isn't using UTF-8 by default, and fails when
handling these log entries.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
d81fe590db BlendPath: don't use os.path.join() for slash notations
The BlendPath should just use forward slashes, and not be depending on the
current platform.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
0e392f27c9 BlendPath.__repr__ implemented 2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
19216cb12e BlendPath.as_path() now refuses to convert blendfile-relative paths
When a path starts with b'//' it will not be converted to a PurePath, as
the handling of such filenames is platform dependent (Windows handles those
weirdly, like appending a slash to any path).
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
5635895d0c Attempt at making BAT work on Windows
All BlendPath instances will use forward slashes, and there should be
more use of PurePosixPath instead of Path.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
4bc5484c23 Fixed MyPy issue 2018-12-20 14:23:06 +01:00
Sybren A. Stüvel
fd316c4594 Bumped version to 0.7 2018-12-06 10:02:40 +01:00
Sybren A. Stüvel
37ad8f8dfc Added --relative-only option to bat pack command
This makes BAT skip assets that are referred to with an absolute path.
It is assumed that the receiver of the BAT pack can access those assets
at the same path.
2018-12-06 10:02:14 +01:00
Sybren A. Stüvel
041af5d3bb Bumped version to 0.6.1 2018-11-30 14:03:31 +01:00
Sybren A. Stüvel
5fa99981de blocks: Allow choosing number of DNA types shown via --limit CLI arg 2018-11-30 14:03:20 +01:00
Sybren A. Stüvel
595c02a07d Bumped version to 0.6 2018-11-30 13:59:33 +01:00
Sybren A. Stüvel
78981ce9f1 Added 'bat blocks' command that shows the DNA types that use the most data
It's work in progress and maybe not useful for anyone but us.
2018-11-30 13:59:20 +01:00
Sybren A. Stüvel
7b9312b684 Bumped version to 0.5 2018-11-27 15:51:19 +01:00
Sybren A. Stüvel
33512d42cf Multi-threaded compressed file transfers
For regular file transfers (so to a directory, not to a ZIP file or S3
storage), use multi-threaded transfer when compressing. Compressing is
CPU-bound, so using multiple threads speeds things up considerably
(packing a Spring lighting file went from 6min30 single-threaded to
2min13 multi-threaded on my machine).
2018-11-27 15:50:20 +01:00
Sybren A. Stüvel
b6c0d01e45 bat pack --help improvements 2018-11-27 14:37:15 +01:00
Sybren A. Stüvel
521c7e1916 Added --compress option for 'bat pack' command
This compresses all packed Blend files. Other files, as well as already-
compressed Blend files, are left as-is.
2018-11-27 14:29:37 +01:00
Jeroen Bakker
7c80320b30 Support for cloth ptcaches stored on disk
Currently pointcaches on disk for cloth sims were not traced. This patch allows the tracing of pointcaches for cloth sims.

Reviewers: sybren, fsiddi

Reviewed By: sybren

Differential Revision: https://developer.blender.org/D3910
2018-11-08 10:25:45 +01:00
Sybren A. Stüvel
43e8a7e370 Include version in --help output 2018-07-11 12:44:29 +02:00
Sybren A. Stüvel
439f727815 Bumped version to 0.5-dev 2018-07-10 16:03:30 +02:00
Sybren A. Stüvel
0e7411a42b Bumped version to 0.4 2018-07-10 16:03:00 +02:00
Sybren A. Stüvel
d7b06f0644 Blender 2.8 compatibility of image datablock 2018-07-10 16:02:14 +02:00
Sybren A. Stüvel
38b3e2b55c Fixed a whole bunch of MyPy errors
New release of mypy picks up more.
2018-07-10 16:02:14 +02:00
Philipp Oeser
4e1c2d1bbb Fix T55542: BAT doesn't pack smoke cache 2018-07-06 11:01:44 +02:00
Sybren A. Stüvel
893c1f2231 Convert hexified ID name to upper case
Our test case accidentally has a numerical-only hex representation, which
doesn't show this issue.
2018-07-05 11:53:38 +02:00
Sybren A. Stüvel
63118d250c Bumped version to 0.4-dev 2018-07-03 15:07:34 +02:00
Sybren A. Stüvel
8a308ef6e4 Bumped version to 0.3 2018-07-03 15:06:27 +02:00