Upload multiple files in a single rsync command.

As with gets, this makes uploads 3x faster at least.

multi_put() is now renamed simply put(), and the old single-path put() is no more.

All tests pass (including the rsync ones), plus I've tried this out on 1000 files in our real repo.
See
https://github.com/foursquare/gitshed/blob/master/src/python/gitshed/content_store.py#L72

On Mon, Dec 29, 2014 at 9:47 PM, Benjy Weinberger <benjyw@gmail.com> wrote:

> Yes. Paths in the content store are logical paths, not filesystem paths. A
> content store implementation is free to interpret them as it wishes. For
> example, a RESTful content store would turn them into URLs, in which case
> they would always use forward slashes, not the filesystem separator.
>
> On Mon, Dec 29, 2014 at 5:04 PM, Jeffrey Jenkins <notifications@github.com
> > wrote:
>
>> In src/python/gitshed/content_store.py
>> <https://github.com/foursquare/gitshed/pull/7#discussion-diff-22335650>:
>>
>> >      pool = ThreadPool(self._put_concurrency)
>> > -    def do_put(src_path):
>> > -      ret = self.put(src_path)
>> > -      progress.increment()
>> > -      return ret
>> > +    def do_put(chunk):
>> > +      cs_dir, work = chunk
>> > +      n = sum(cardinality['{0}/{1}'.format(cs_dir, cs_basename)] for (_, cs_basename) in work)
>>
>> There are a few instances where you do this instead of os.path.join. Is
>> there a reason?
>>
>> —
>> Reply to this email directly or view it on GitHub
>> <https://github.com/foursquare/gitshed/pull/7/files#r22335650>.
>>
>
>