Explorar o código

Made protoc --descriptor_set_out deterministic.

Repeatable protoc output is useful because it's sometimes
checked into version control, and rerunning protoc should
not generate unnecessary diffs.
Martin Pärtel %!s(int64=5) %!d(string=hai) anos
pai
achega
f6902d6afe
Modificáronse 1 ficheiros con 7 adicións e 1 borrados
  1. 7 1
      src/google/protobuf/compiler/command_line_interface.cc

+ 7 - 1
src/google/protobuf/compiler/command_line_interface.cc

@@ -2228,12 +2228,18 @@ bool CommandLineInterface::WriteDescriptorSet(
   }
 
   io::FileOutputStream out(fd);
-  if (!file_set.SerializeToZeroCopyStream(&out)) {
+
+  io::CodedOutputStream coded_out(&out);
+  // Determinism is useful here because build outputs are sometimes checked
+  // into version control.
+  coded_out.SetSerializationDeterministic(true);
+  if (!file_set.SerializeToCodedStream(&coded_out)) {
     std::cerr << descriptor_set_out_name_ << ": " << strerror(out.GetErrno())
               << std::endl;
     out.Close();
     return false;
   }
+  coded_out.Trim();
   if (!out.Close()) {
     std::cerr << descriptor_set_out_name_ << ": " << strerror(out.GetErrno())
               << std::endl;