     public func fetch() throws {
         try queue.sync {
             try Process.checkNonZeroExit(
-                args: Git.tool, "-C", path.asString, "fetch", "--tags")
+                args: Git.tool, "-C", path.asString, "remote", "update", "-p")
             self.tagsCache = nil
         }
     }

        // FIXME: We need infrastructure in this subsystem for reporting
        // status information.

        let process = Process(args: Git.tool, "clone", "--bare", repository.url, path.asString)
        // Add to process set.
        try processSet?.add(process)
        // Launch the process.

        try Process.checkNonZeroExit(
            args: Git.tool, "-C", path.asString, "submodule", "update", "--init", "--recursive")
        try Process.checkNonZeroExit(
            args: Git.tool, "-C", path.asString, "clean", "-ffdx")
    }

    /// Returns true if a revision exists.
