Hello community,

here is the log from the commit of package cargo-vendor for openSUSE:Factory 
checked in at 2017-10-28 14:21:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cargo-vendor (Old)
 and      /work/SRC/openSUSE:Factory/.cargo-vendor.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cargo-vendor"

Sat Oct 28 14:21:54 2017 rev:3 rq:535739 version:0.1.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/cargo-vendor/cargo-vendor.changes        
2017-09-07 22:16:21.352411325 +0200
+++ /work/SRC/openSUSE:Factory/.cargo-vendor.new/cargo-vendor.changes   
2017-10-28 14:21:55.163036479 +0200
@@ -1,0 +2,6 @@
+Sat Oct 21 23:59:48 UTC 2017 - [email protected]
+
+- Update to 0.1.12
+  + no changelog provided
+
+-------------------------------------------------------------------

Old:
----
  cargo-vendor-0.1.11.tar.gz

New:
----
  cargo-vendor-0.1.12.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cargo-vendor.spec ++++++
--- /var/tmp/diff_new_pack.1TKtJr/_old  2017-10-28 14:21:58.934898585 +0200
+++ /var/tmp/diff_new_pack.1TKtJr/_new  2017-10-28 14:21:58.938898439 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           cargo-vendor
-Version:        0.1.11
+Version:        0.1.12
 Release:        0
 Summary:        A Cargo subcommand to vendor Rust dependencies
 License:        MIT or Apache-2.0

++++++ cargo-vendor-0.1.11.tar.gz -> cargo-vendor-0.1.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-vendor-0.1.11/Cargo.lock 
new/cargo-vendor-0.1.12/Cargo.lock
--- old/cargo-vendor-0.1.11/Cargo.lock  2017-06-20 19:44:31.000000000 +0200
+++ new/cargo-vendor-0.1.12/Cargo.lock  2017-09-09 20:01:39.000000000 +0200
@@ -1,11 +1,13 @@
 [root]
 name = "cargo-vendor"
-version = "0.1.11"
+version = "0.1.12"
 dependencies = [
- "cargo 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cargo 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-serialize 0.3.24 
(registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -26,83 +28,124 @@
 ]
 
 [[package]]
+name = "atty"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "backtrace-sys 0.1.12 
(registry+https://github.com/rust-lang/crates.io-index)",
+ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-demangle 0.1.5 
(registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "backtrace-sys"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "bitflags"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+
+[[package]]
 name = "bitflags"
 version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "cargo"
-version = "0.19.0"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)",
- "crates-io 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crates-io 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "curl 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "curl 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "docopt 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "error-chain 0.11.0-rc.2 
(registry+https://github.com/rust-lang/crates.io-index)",
  "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
  "flate2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)",
  "fs2 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "git2 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "git2 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "git2-curl 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hex 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "jobserver 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "libgit2-sys 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libgit2-sys 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "psapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-serialize 0.3.24 
(registry+https://github.com/rust-lang/crates.io-index)",
- "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_ignored 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "semver 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_ignored 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "shell-escape 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "tar 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
  "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "term 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "toml 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "termcolor 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "cfg-if"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
-name = "chrono"
-version = "0.2.25"
+name = "cmake"
+version = "0.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "num 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "cmake"
-version = "0.1.24"
+name = "conv"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
+ "custom_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "crates-io"
-version = "0.8.0"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "curl 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "curl 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "error-chain 0.11.0-rc.2 
(registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -112,44 +155,60 @@
 
 [[package]]
 name = "curl"
-version = "0.4.6"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "curl-sys 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "curl-sys 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "openssl-probe 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
+ "socket2 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "curl-sys"
-version = "0.3.12"
+version = "0.3.14"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
+name = "custom_derive"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+
+[[package]]
+name = "dbghelp-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "docopt"
-version = "0.7.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-serialize 0.3.24 
(registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
  "strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "dtoa"
-version = "0.4.1"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
@@ -162,11 +221,19 @@
 ]
 
 [[package]]
+name = "error-chain"
+version = "0.11.0-rc.2"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "backtrace 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "filetime"
 version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -174,7 +241,7 @@
 version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "miniz-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -189,26 +256,26 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gcc"
-version = "0.3.51"
+version = "0.3.53"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "git2"
-version = "0.6.6"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "libgit2-sys 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libgit2-sys 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "openssl-probe 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -216,10 +283,10 @@
 version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "curl 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "git2 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "curl 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "git2 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -228,21 +295,35 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
+name = "hex"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+
+[[package]]
 name = "idna"
-version = "0.1.2"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-bidi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "unicode-normalization 0.1.5 
(registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "itoa"
-version = "0.3.1"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
+name = "jobserver"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "kernel32-sys"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
@@ -258,21 +339,21 @@
 
 [[package]]
 name = "libc"
-version = "0.2.24"
+version = "0.2.30"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "libgit2-sys"
-version = "0.6.12"
+version = "0.6.14"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cmake 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "curl-sys 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cmake 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
+ "curl-sys 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "libssh2-sys 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -281,10 +362,10 @@
 version = "0.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cmake 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cmake 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "libz-sys 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -293,8 +374,8 @@
 version = "1.0.16"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -305,6 +386,23 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
+name = "magenta"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "conv 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "magenta-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "magenta-sys"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "matches"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
@@ -314,7 +412,7 @@
 version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -322,8 +420,8 @@
 version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -332,73 +430,46 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "net2"
-version = "0.2.29"
+version = "0.2.31"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "num"
-version = "0.1.39"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-dependencies = [
- "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-integer"
-version = "0.1.34"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-dependencies = [
- "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-iter"
-version = "0.1.33"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-dependencies = [
- "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
 name = "num-traits"
-version = "0.1.39"
+version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "num_cpus"
-version = "1.5.1"
+version = "1.6.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "openssl"
-version = "0.9.14"
+version = "0.9.17"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -408,12 +479,13 @@
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.14"
+version = "0.9.17"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -442,18 +514,14 @@
 
 [[package]]
 name = "rand"
-version = "0.3.15"
+version = "0.3.16"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "magenta 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "redox_syscall"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-
-[[package]]
 name = "regex"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
@@ -461,7 +529,7 @@
  "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -471,16 +539,22 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
-name = "rustc-serialize"
-version = "0.3.24"
+name = "rustc-demangle"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+
+[[package]]
+name = "scoped-tls"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "semver"
-version = "0.6.0"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -490,66 +564,63 @@
 
 [[package]]
 name = "serde"
-version = "0.9.15"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-
-[[package]]
-name = "serde"
-version = "1.0.8"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
-name = "serde_codegen_internals"
-version = "0.14.2"
+name = "serde_derive"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
+ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive_internals 0.15.1 
(registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "serde_derive"
-version = "0.9.15"
+name = "serde_derive_internals"
+version = "0.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_codegen_internals 0.14.2 
(registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "serde_ignored"
-version = "0.0.2"
+version = "0.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "serde_json"
-version = "0.9.10"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-traits 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "serde_json"
-version = "1.0.2"
+name = "shell-escape"
+version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-dependencies = [
- "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
 
 [[package]]
-name = "shell-escape"
-version = "0.1.3"
+name = "socket2"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
 
 [[package]]
 name = "strsim"
@@ -580,7 +651,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -588,58 +659,37 @@
 version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "term"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "thread-id"
-version = "3.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index";
-dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "thread_local"
+name = "termcolor"
 version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wincolor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
-name = "time"
-version = "0.1.37"
+name = "thread_local"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_syscall 0.1.18 
(registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "toml"
-version = "0.3.2"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.3"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -657,7 +707,7 @@
 
 [[package]]
 name = "unreachable"
-version = "0.1.1"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -665,10 +715,10 @@
 
 [[package]]
 name = "url"
-version = "1.5.0"
+version = "1.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "idna 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "percent-encoding 1.0.0 
(registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -699,6 +749,15 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
+name = "wincolor"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
 name = "ws2_32-sys"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
@@ -710,85 +769,91 @@
 [metadata]
 "checksum advapi32-sys 0.2.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"
 "checksum aho-corasick 0.6.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"
+"checksum atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "d912da0db7fa85514874458ca3651fe2cddace8d0b0505571dbdcd41ab490159"
+"checksum backtrace 0.3.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"
+"checksum backtrace-sys 0.1.12 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"afccc5772ba333abccdf60d55200fa3406f8c59dcf54d5f7998c9107d3799c7c"
+"checksum bitflags 0.7.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
 "checksum bitflags 0.9.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
-"checksum cargo 0.19.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"31e994b6c067b4d2df88ded3e2a2b926c4340e2e473113f9baa77b1f5f9416bd"
-"checksum cfg-if 0.1.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d0c47d456a36ebf0536a6705c83c1cbbcb9255fbc1d905a6ded104f479268a29"
-"checksum chrono 0.2.25 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"9213f7cd7c27e95c2b57c49f0e69b1ea65b27138da84a170133fd21b07659c00"
-"checksum cmake 0.1.24 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"b8ebbb35d3dc9cd09497168f33de1acb79b265d350ab0ac34133b98f8509af1f"
-"checksum crates-io 0.8.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"9e78241ab8c204c0cdf14e634c28136cdc02308e894b3ec47b7117032a34494a"
+"checksum cargo 0.21.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"bff4aca8467ad0cd3153d6ccb3860b16fcb59b7becf020b1a6cdfbe834600812"
+"checksum cfg-if 0.1.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
+"checksum cmake 0.1.25 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"0c8a6541a55bcd72d3de4faee2d101a5a66df29790282c7f797082a7228a9b3d"
+"checksum conv 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" 
= "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
+"checksum crates-io 0.10.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"84b8ef70d98451b2d73bbbe50cb2b64c7a5765cad83ef3dec6ec943b96eac1c2"
 "checksum crossbeam 0.2.10 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"
-"checksum curl 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" 
= "c90e1240ef340dd4027ade439e5c7c2064dd9dc652682117bd50d1486a3add7b"
-"checksum curl-sys 0.3.12 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"f00c8ba847fb0730c293069b4d1203dc01bf3c2e1f90b4e55f426ed8f4a1eeac"
-"checksum docopt 0.7.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"ab32ea6e284d87987066f21a9e809a73c14720571ef34516f0890b3d355ccfd8"
-"checksum dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" 
= "80c8b71fd71146990a9742fc06dcbbde19161a267e0ad4e572c35162f4578c90"
+"checksum curl 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" 
= "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"
+"checksum curl-sys 0.3.14 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d5481162dc4f424d088581db2f979fa7d4c238fe9794595de61d8d7522e277de"
+"checksum custom_derive 0.1.7 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
+"checksum dbghelp-sys 0.2.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"
+"checksum docopt 0.8.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"
+"checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"
 "checksum env_logger 0.4.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"
+"checksum error-chain 0.11.0-rc.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"38d3a55d9a7a456748f2a3912c0941a5d9a68006eb15b3c3c9836b8420dc102d"
 "checksum filetime 0.1.10 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"5363ab8e4139b8568a6237db5248646e5a8a2f89bd5ccb02092182b11fd3e922"
 "checksum flate2 0.2.19 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"36df0166e856739905cd3d7e0b210fe818592211a008862599845e012d8d304c"
 "checksum foreign-types 0.2.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"
 "checksum fs2 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"
-"checksum gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)" 
= "120d07f202dcc3f72859422563522b66fe6463a4c513df062874daad05f85f0a"
-"checksum git2 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" 
= "aa01936ac96555c083c0e8553f672616274408d9d3fc5b8696603fbf63ff43ee"
+"checksum gcc 0.3.53 (registry+https://github.com/rust-lang/crates.io-index)" 
= "e8310f7e9c890398b0e80e301c4f474e9918d2b27fca8f48486ca775fa9ffc5a"
+"checksum git2 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" 
= "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"
 "checksum git2-curl 0.7.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"
 "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" 
= "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
-"checksum idna 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "2233d4940b1f19f0418c158509cd7396b8d70a5db5705ce410914dc8fa603b37"
-"checksum itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" 
= "eb2f404fbc66fd9aac13e998248505e7ecb2ad8e44ab6388684c5fb11c6c251c"
+"checksum hex 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"
+"checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" 
= "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"
+"checksum itoa 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" 
= "ac17257442c2ed77dbc9fd555cf83c58b0c7f7d0e8f2ae08c0ac05c72842e1f6"
+"checksum jobserver 0.1.6 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"
 "checksum kernel32-sys 0.2.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
 "checksum lazy_static 0.2.8 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3b37545ab726dd833ec6420aaba8231c5b320814b9029ad585555d2a03e94fbf"
-"checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" 
= "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc"
-"checksum libgit2-sys 0.6.12 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"df18a822100352d9863b302faf6f8f25c0e77f0e60feb40e5dbe1238b7f13b1d"
+"checksum libc 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)" 
= "2370ca07ec338939e356443dac2296f581453c35fe1e3a3ed06023c49435f915"
+"checksum libgit2-sys 0.6.14 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"c00f6e5bc3fb2b5f87e75e8d0fd4ae6720d55f3ee23d389b7c6cae30f8db8db1"
 "checksum libssh2-sys 0.2.6 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"
 "checksum libz-sys 1.0.16 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3fdd64ef8ee652185674455c1d450b83cbc8ad895625d543b5324d923f82e4d8"
 "checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = 
"880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"
+"checksum magenta 0.1.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"
+"checksum magenta-sys 0.1.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"
 "checksum matches 0.1.6 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
 "checksum memchr 1.0.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"
 "checksum miniz-sys 0.1.9 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"28eaee17666671fa872e567547e8428e83308ebe5808cdf6a0e28397dbe2c726"
 "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" 
= "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
-"checksum net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)" 
= "bc01404e7568680f1259aa5729539f221cb1e6d047a0d9053cab4be8a73b5d67"
-"checksum num 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" 
= "2c3a3dc9f30bf824141521b30c908a859ab190b76e20435fcd89f35eb6583887"
-"checksum num-integer 0.1.34 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"ef1a4bf6f9174aa5783a9b4cc892cacd11aebad6c69ad027a0b65c6ca5f8aa37"
-"checksum num-iter 0.1.33 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"f7d1891bd7b936f12349b7d1403761c8a0b85a18b148e9da4429d5d102c1a41e"
-"checksum num-traits 0.1.39 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"1708c0628602a98b52fad936cf3edb9a107af06e52e49fdf0707e884456a6af6"
-"checksum num_cpus 1.5.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"6e416ba127a4bb3ff398cb19546a8d0414f73352efe2857f4060d36f5fe5983a"
-"checksum openssl 0.9.14 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"11ba043cb65fc9af71a431b8a36ffe8686cd4751cdf70a473ec1d01066ac7e41"
+"checksum net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)" 
= "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"
+"checksum num-traits 0.1.40 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"
+"checksum num_cpus 1.6.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"aec53c34f2d0247c5ca5d32cca1478762f301740468ee9ee6dcb7a0dd7a0c584"
+"checksum openssl 0.9.17 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"085aaedcc89a2fac1eb2bc19cd66f29d4ea99fec60f82a5f3a88a6be7dbd90b5"
 "checksum openssl-probe 0.1.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"
-"checksum openssl-sys 0.9.14 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"236c718c2e2c2b58a546d86ffea5194400bb15dbe01ca85325ffd357b03cf66c"
+"checksum openssl-sys 0.9.17 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"7e3a9845a4c9fdb321931868aae5549e96bb7b979bf9af7de03603d74691b5f3"
 "checksum percent-encoding 1.0.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"
 "checksum pkg-config 0.3.9 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"
 "checksum psapi-sys 0.1.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"
 "checksum quote 0.3.15 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
-"checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" 
= "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d"
-"checksum redox_syscall 0.1.18 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3041aeb6000db123d2c9c751433f526e1f404b23213bd733167ab770c3989b4d"
+"checksum rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" 
= "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"
 "checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"
 "checksum regex-syntax 0.4.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"
-"checksum rustc-serialize 0.3.24 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
-"checksum semver 0.6.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537"
+"checksum rustc-demangle 0.1.5 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"
+"checksum scoped-tls 0.1.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"
+"checksum semver 0.7.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"3fdd61b85a0fa777f7fb7c454b9189b2941b110d1385ce84d7f76efdf1606a85"
 "checksum semver-parser 0.7.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
-"checksum serde 0.9.15 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af"
-"checksum serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" 
= "c2f530d36fb84ec48fb7146936881f026cdbf4892028835fd9398475f82c1bb4"
-"checksum serde_codegen_internals 0.14.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"bc888bd283bd2420b16ad0d860e35ad8acb21941180a83a189bb2046f9d00400"
-"checksum serde_derive 0.9.15 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"978fd866f4d4872084a81ccc35e275158351d3b9fe620074e7d7504b816b74ba"
-"checksum serde_ignored 0.0.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d4b3f5576874721d14690657e9f0ed286e72a52be2f6fdc0cf2f024182bd8f64"
-"checksum serde_json 0.9.10 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"ad8bcf487be7d2e15d3d543f04312de991d631cfe1b43ea0ade69e6a8a5b16a1"
-"checksum serde_json 1.0.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"48b04779552e92037212c3615370f6bd57a40ebba7f20e554ff9f55e41a69a7b"
+"checksum serde 1.0.12 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"7f61b753dd58ec5d4c735f794dbddde1f28b977f652afbcde89d75bc77902216"
+"checksum serde_derive 1.0.12 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"2a169fa5384d751ada1da9f3992b81830151a03c875e40dcb37c9fb31aafc68f"
+"checksum serde_derive_internals 0.15.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"37aee4e0da52d801acfbc0cc219eb1eda7142112339726e427926a6f6ee65d3a"
+"checksum serde_ignored 0.0.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"c10e798e4405d7dcec3658989e35ee6706f730a9ed7c1184d5ebd84317e82f46"
+"checksum serde_json 1.0.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"
 "checksum shell-escape 0.1.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"
+"checksum socket2 0.2.2 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"4daf80fcf54186fac4fe049e0b39d36a5cfde69a11a06413e61e77f553cccf9a"
 "checksum strsim 0.6.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"
 "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" 
= "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
 "checksum synom 0.11.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
 "checksum tar 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" 
= "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"
 "checksum tempdir 0.3.5 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"
-"checksum term 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" 
= "d168af3930b369cfe245132550579d47dfd873d69470755a19c2c6568dbbd989"
-"checksum thread-id 3.1.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"8df7875b676fddfadffd96deea3b1124e5ede707d4884248931077518cf1f773"
-"checksum thread_local 0.3.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"c85048c6260d17cf486ceae3282d9fb6b90be220bf5b28c400f5485ffc29f0c7"
-"checksum time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" 
= "ffd7ccbf969a892bf83f1e441126968a07a3941c24ff522a26af9f9f4585d1a3"
-"checksum toml 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "bd86ad9ebee246fdedd610e0f6d0587b754a3d81438db930a244d0480ed7878f"
-"checksum unicode-bidi 0.3.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"a6a2c4e3710edd365cd7e78383153ed739fa31af19f9172f72d3575060f5a43a"
+"checksum termcolor 0.3.3 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"
+"checksum thread_local 0.3.4 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"
+"checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" 
= "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"
+"checksum unicode-bidi 0.3.4 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
 "checksum unicode-normalization 0.1.5 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"
 "checksum unicode-xid 0.0.4 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
-"checksum unreachable 0.1.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91"
-"checksum url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"a69a2e36a5e5ed3f3063c8c64a3b028c4d50d689fa6c862abd7cfe65f882595c"
+"checksum unreachable 1.0.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
+"checksum url 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"
 "checksum utf8-ranges 1.0.0 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
 "checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"
 "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" 
= "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
 "checksum winapi 0.2.8 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
 "checksum winapi-build 0.1.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+"checksum wincolor 0.1.4 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"
 "checksum ws2_32-sys 0.2.1 
(registry+https://github.com/rust-lang/crates.io-index)" = 
"d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-vendor-0.1.11/Cargo.toml 
new/cargo-vendor-0.1.12/Cargo.toml
--- old/cargo-vendor-0.1.11/Cargo.toml  2017-06-20 19:44:31.000000000 +0200
+++ new/cargo-vendor-0.1.12/Cargo.toml  2017-09-09 20:01:39.000000000 +0200
@@ -1,6 +1,6 @@
 [package]
 name = "cargo-vendor"
-version = "0.1.11"
+version = "0.1.12"
 authors = ["Alex Crichton <[email protected]>"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
@@ -12,7 +12,9 @@
 """
 
 [dependencies]
-cargo = "0.19"
-rustc-serialize = "0.3"
+cargo = "0.21"
 env_logger = "0.4"
+serde = "1.0"
+serde_derive = "1.0"
 serde_json = "1.0"
+toml = "0.4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-vendor-0.1.11/src/main.rs 
new/cargo-vendor-0.1.12/src/main.rs
--- old/cargo-vendor-0.1.11/src/main.rs 2017-06-20 19:44:31.000000000 +0200
+++ new/cargo-vendor-0.1.12/src/main.rs 2017-09-09 20:01:39.000000000 +0200
@@ -1,30 +1,28 @@
 extern crate cargo;
 extern crate env_logger;
-extern crate rustc_serialize;
+#[macro_use]
+extern crate serde_derive;
 #[macro_use]
 extern crate serde_json;
+extern crate toml;
 
-use std::cmp;
 use std::collections::{BTreeMap, HashMap, BTreeSet};
 use std::env;
 use std::fs::{self, File};
 use std::io::{self, Read, Write};
-use std::path::Path;
-
-use rustc_serialize::hex::ToHex;
+use std::path::{PathBuf, Path};
 
-use cargo::core::{SourceId, Dependency, Workspace};
+use cargo::core::{Workspace, GitReference};
 use cargo::CliResult;
-use cargo::util::{human, ChainError, ToUrl, Config, CargoResult};
+use cargo::util::{Config, CargoResult, CargoResultExt};
 use cargo::util::Sha256;
 
-#[derive(RustcDecodable)]
+#[derive(Deserialize)]
 struct Options {
     arg_path: Option<String>,
     flag_no_delete: Option<bool>,
     flag_version: bool,
     flag_sync: Option<Vec<String>>,
-    flag_host: Option<String>,
     flag_verbose: u32,
     flag_quiet: Option<bool>,
     flag_explicit_version: Option<bool>,
@@ -33,6 +31,32 @@
     flag_locked: bool,
 }
 
+#[derive(Serialize)]
+struct VendorConfig {
+    source: BTreeMap<String, VendorSource>,
+}
+
+#[derive(Serialize)]
+#[serde(rename_all = "lowercase", untagged)]
+enum VendorSource {
+    Directory {
+        directory: PathBuf,
+    },
+    Registry {
+        registry: Option<String>,
+        #[serde(rename = "replace-with")]
+        replace_with: String,
+    },
+    Git {
+        git: String,
+        branch: Option<String>,
+        tag: Option<String>,
+        rev: Option<String>,
+        #[serde(rename = "replace-with")]
+        replace_with: String,
+    },
+}
+
 fn main() {
     env_logger::init().unwrap();
 
@@ -60,7 +84,6 @@
     -h, --help               Print this message
     -V, --version            Print version information
     -s, --sync TOML ...      Sync the `Cargo.toml` or `Cargo.lock` specified
-    --host HOST              Registry index to sync with
     -v, --verbose ...        Use verbose output
     -q, --quiet              No output printed to stdout
     -x, --explicit-version   Always include version in subdir name
@@ -101,13 +124,8 @@
     let default = "vendor".to_string();
     let path = Path::new(options.arg_path.as_ref().unwrap_or(&default));
 
-    try!(fs::create_dir_all(&path).chain_error(|| {
-        human(format!("failed to create: `{}`", path.display()))
-    }));
-    let id = try!(options.flag_host.map(|s| {
-        s.to_url().map(|url| SourceId::for_registry(&url)).map_err(human)
-    }).unwrap_or_else(|| {
-        SourceId::crates_io(config)
+    try!(fs::create_dir_all(&path).chain_err(|| {
+        format!("failed to create: `{}`", path.display())
     }));
 
     let workspaces = match options.flag_sync {
@@ -128,60 +146,71 @@
         }
     };
 
-    try!(sync(&workspaces,
-              &path,
-              &id,
-              config,
-              options.flag_explicit_version.unwrap_or(false),
-              options.flag_no_delete.unwrap_or(false)).chain_error(|| {
-        human("failed to sync")
+    let vendor_config = try!(sync(
+        &workspaces,
+        &path,
+        config,
+        options.flag_explicit_version.unwrap_or(false),
+        options.flag_no_delete.unwrap_or(false)
+    ).chain_err(|| {
+        "failed to sync"
     }));
 
     if !options.flag_quiet.unwrap_or(false) {
         println!("To use vendored sources, add this to your .cargo/config for 
this project:
 
-    [source.crates-io]
-    registry = '{}'
-    replace-with = 'vendored-sources'
-
-    [source.vendored-sources]
-    directory = '{}'
+{}
 
-", id.url(), config.cwd().join(path).display());
+", indent_string(4, &toml::to_string(&vendor_config).unwrap()));
     }
 
     Ok(())
 }
 
+fn indent_string(amount: usize, data: &str) -> String {
+    data.lines().map(|l| " ".repeat(amount) + l + "\n").collect()
+}
+
 fn sync(workspaces: &[Workspace],
         local_dst: &Path,
-        registry_id: &SourceId,
         config: &Config,
         explicit_version: bool,
-        no_delete: bool) -> CargoResult<()> {
-    let mut ids = BTreeSet::new();
-    let mut registry = registry_id.load(config);
-
+        no_delete: bool) -> CargoResult<VendorConfig> {
+    let mut ids = BTreeMap::new();
     for ws in workspaces {
-        let (_, resolve) = try!(cargo::ops::resolve_ws(&ws).chain_error(|| {
-            human("failed to load pkg lockfile")
+        let (packages, resolve) = 
try!(cargo::ops::resolve_ws(&ws).chain_err(|| {
+            "failed to load pkg lockfile"
         }));
-        ids.extend(resolve.iter()
-                     .filter(|id| id.source_id() == registry_id)
-                     .cloned());
-    }
-
-    let hash = cargo::util::hex::short_hash(registry_id);
-    let ident = registry_id.url().host().unwrap().to_string();
-    let part = format!("{}-{}", ident, hash);
-
-    let src = config.registry_source_path().join(&part);
-    let cache = config.registry_cache_path().join(&part);
-
-    let mut max = HashMap::new();
-    for id in ids.iter() {
-        let max = max.entry(id.name()).or_insert(id.version());
-        *max = cmp::max(id.version(), *max)
+
+        for pkg in resolve.iter() {
+            if pkg.source_id().is_path() {
+                continue
+            }
+            ids.insert(pkg.clone(), packages.get(pkg).chain_err(|| {
+                "failed to fetch package"
+            })?.clone());
+        }
+    }
+
+    // 
https://github.com/rust-lang/cargo/blob/373c5d8ce43691f90929a74b047d7eababd04379/src/cargo/sources/registry/mod.rs#L248
+
+    let mut versions = HashMap::new();
+    for id in ids.keys() {
+        let map = versions.entry(id.name()).or_insert_with(BTreeMap::default);
+
+        if let Some(prev) = map.get(&id.version()) {
+            let err = format!("found duplicate version of package `{} v{}` \
+                               vendored from two sources:\n\
+                               \n\
+                               \tsource 1: {}\n\
+                               \tsource 2: {}",
+                              id.name(),
+                              id.version(),
+                              prev,
+                              id.source_id());
+            return Err(err.into())
+        }
+        map.insert(id.version(), id.source_id());
     }
 
     let existing_crates = local_dst.read_dir().map(|iter| {
@@ -192,40 +221,12 @@
     }).unwrap_or(Vec::new());
 
     let mut added_crates = Vec::new();
-    for id in ids.iter() {
-        // First up, download the package
-        let vers = format!("={}", id.version());
-        let dep = try!(Dependency::parse_no_deprecated(id.name(),
-                                                       Some(&vers[..]),
-                                                       id.source_id()));
-        let mut vec = try!(registry.query(&dep));
-
-        // Some versions have "build metadata" which is ignored by semver when
-        // matching. That means that `vec` being returned may have more than 
one
-        // element, so we filter out all non-equivalent versions with different
-        // build metadata than the one we're looking for.
-        //
-        // Note that we also don't compare semver versions directly as the
-        // default equality ignores build metadata.
-        if vec.len() > 1 {
-            vec.retain(|version| {
-                version.package_id().version().to_string() == 
id.version().to_string()
-            });
-        }
-        if vec.len() == 0 {
-            return Err(human(format!("could not find package: {}", id)))
-        }
-        if vec.len() > 1 {
-            return Err(human(format!("found too many packages: {}", id)))
-        }
-        try!(registry.download(id).chain_error(|| {
-            human(format!("failed to download package from registry"))
-        }));
-
+    let mut sources = BTreeSet::new();
+    for (id, pkg) in ids.iter() {
         // Next up, copy it to the vendor directory
-        let name = format!("{}-{}", id.name(), id.version());
-        let src = src.join(&name).into_path_unlocked();
-        let dir_has_version_suffix = explicit_version || id.version() != 
max[id.name()];
+        let src = pkg.manifest_path().parent().expect("manifest_path should 
point to a file");
+        let max_version = *versions[id.name()].iter().rev().next().unwrap().0;
+        let dir_has_version_suffix = explicit_version || id.version() != 
max_version;
         let dst_name = if dir_has_version_suffix {
             // Eg vendor/futures-0.1.13
             format!("{}-{}", id.name(), id.version())
@@ -235,6 +236,7 @@
         };
         let dst = local_dst.join(&dst_name);
         added_crates.push(dst.clone());
+        sources.insert(id.source_id());
 
         let cksum = dst.join(".cargo-checksum.json");
         if dir_has_version_suffix && cksum.exists() {
@@ -243,20 +245,17 @@
         }
 
         config.shell().status("Vendoring",
-                              &format!("{} to {}", id, dst.display()))?;
+                              &format!("{} ({}) to {}", id, 
src.to_string_lossy(), dst.display()))?;
 
         let _ = fs::remove_dir_all(&dst);
         let mut map = BTreeMap::new();
-        try!(cp_r(&src, &dst, &dst, &mut map).chain_error(|| {
-            human(format!("failed to copy over vendored sources for: {}", id))
+        try!(cp_r(&src, &dst, &dst, &mut map).chain_err(|| {
+            format!("failed to copy over vendored sources for: {}", id)
         }));
 
         // Finally, emit the metadata about this package
-        let crate_file = format!("{}-{}.crate", id.name(), id.version());
-        let crate_file = cache.join(&crate_file).into_path_unlocked();
-
         let json = json!({
-            "package": try!(sha256(&crate_file)),
+            "package": pkg.summary().checksum(),
             "files": map,
         });
 
@@ -271,7 +270,51 @@
         }
     }
 
-    Ok(())
+    // add our vendored source
+    let dir = config.cwd().join(local_dst);
+    let mut config = BTreeMap::new();
+    config.insert("vendored-sources".to_string(), VendorSource::Directory {
+        directory: dir.to_path_buf(),
+    });
+
+    // replace original sources with vendor
+    for source_id in sources {
+        let name = if source_id.is_default_registry() {
+            "crates-io".to_string()
+        } else {
+            source_id.url().to_string()
+        };
+
+        let source = if source_id.is_default_registry() {
+            VendorSource::Registry {
+                registry: None,
+                replace_with: "vendored-sources".to_string(),
+            }
+        } else if source_id.is_git() {
+            let mut branch = None;
+            let mut tag = None;
+            let mut rev = None;
+            if let Some(reference) = source_id.git_reference() {
+                match *reference {
+                    GitReference::Branch(ref b) => branch = Some(b.clone()),
+                    GitReference::Tag(ref t) => tag = Some(t.clone()),
+                    GitReference::Rev(ref r) => rev = Some(r.clone()),
+                }
+            }
+            VendorSource::Git {
+                git: source_id.url().to_string(),
+                branch,
+                tag,
+                rev,
+                replace_with: "vendored-sources".to_string(),
+            }
+        } else {
+            panic!()
+        };
+        config.insert(name, source);
+    }
+
+    Ok(VendorConfig { source: config })
 }
 
 fn cp_r(src: &Path,
@@ -287,8 +330,12 @@
             // the time and if we respect them (e.g.  in git) then it'll
             // probably mess with the checksums when a vendor dir is checked
             // into someone else's source control
-            Some(".gitattributes") => continue,
-            Some(".gitignore") => continue,
+            Some(".gitattributes") |
+            Some(".gitignore") |
+            Some(".git") => continue,
+
+            // Temporary Cargo files
+            Some(".cargo-ok") => continue,
 
             // Skip patch-style orig/rej files. Published crates on crates.io
             // have `Cargo.toml.orig` which we don't want to use here and
@@ -325,5 +372,23 @@
         }
         sha.update(&buf[..n]);
     }
-    Ok(sha.finish().to_hex())
+    Ok(hex(&sha.finish()))
+}
+
+fn hex(bytes: &[u8]) -> String {
+    let mut s = String::with_capacity(bytes.len() * 2);
+    for &byte in bytes {
+        s.push(hex((byte >> 4) & 0xf));
+        s.push(hex((byte >> 0) & 0xf));
+    }
+
+    return s;
+
+    fn hex(b: u8) -> char {
+        if b < 10 {
+            (b'0' + b) as char
+        } else {
+            (b'a' + b - 10) as char
+        }
+    }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-vendor-0.1.11/tests/vendor.rs 
new/cargo-vendor-0.1.12/tests/vendor.rs
--- old/cargo-vendor-0.1.11/tests/vendor.rs     2017-06-20 19:44:31.000000000 
+0200
+++ new/cargo-vendor-0.1.12/tests/vendor.rs     2017-09-09 20:01:39.000000000 
+0200
@@ -289,3 +289,47 @@
     let csum = read(&dir.join("vendor/url/.cargo-checksum.json"));
     assert!(!csum.contains("\"Cargo.toml.orig\""));
 }
+
+#[test]
+fn git_simple() {
+    let dir = dir();
+
+    file(&dir, "Cargo.toml", r#"
+        [package]
+        name = "foo"
+        version = "0.1.0"
+
+        [dependencies.futures]
+        git = 'https://github.com/alexcrichton/futures-rs'
+        rev = '03a0005cb6498e4330'
+    "#);
+    file(&dir, "src/lib.rs", "");
+
+    run(&mut vendor(&dir));
+    let csum = read(&dir.join("vendor/futures/.cargo-checksum.json"));
+    assert!(csum.contains("\"package\":null"));
+}
+
+#[test]
+fn git_duplicate() {
+    let dir = dir();
+
+    file(&dir, "Cargo.toml", r#"
+        [package]
+        name = "foo"
+        version = "0.1.0"
+
+        [dependencies]
+        futures = "=0.1.15"
+
+        [dependencies.futures-cpupool]
+        git = 'https://github.com/alexcrichton/futures-rs'
+        rev = '03a0005cb6498e4330'
+    "#);
+    file(&dir, "src/lib.rs", "");
+
+    let output = vendor(&dir).output().unwrap();
+    assert!(!output.status.success());
+    let stderr = String::from_utf8_lossy(&output.stderr);
+    assert!(stderr.contains("found duplicate version of package `futures 
v0.1.15`"));
+}

++++++ vendor.tar.xz ++++++
/work/SRC/openSUSE:Factory/cargo-vendor/vendor.tar.xz 
/work/SRC/openSUSE:Factory/.cargo-vendor.new/vendor.tar.xz differ: char 25, 
line 1


Reply via email to