diff kitten: Fix a regression that broke diffing against remote files

Fixes #7797
This commit is contained in:
Kovid Goyal
2024-08-28 11:00:42 +05:30
parent d363513884
commit 8eb0b556b7
3 changed files with 13 additions and 1 deletions

View File

@@ -87,6 +87,8 @@ Detailed list of changes
- kitten @: Fix a regression connecting to TCP sockets using plain IP addresses rather than hostnames (:iss:`7794`) - kitten @: Fix a regression connecting to TCP sockets using plain IP addresses rather than hostnames (:iss:`7794`)
- diff kitten: Fix a regression that broke diffing against remote files (:iss:`7797`)
0.36.1 [2024-08-24] 0.36.1 [2024-08-24]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -58,7 +58,7 @@ func get_ssh_file(hostname, rpath string) (string, error) {
for strings.HasPrefix(rpath, "/") { for strings.HasPrefix(rpath, "/") {
rpath = rpath[1:] rpath = rpath[1:]
} }
cmd := []string{ssh.SSHExe(), hostname, "tar", "-c", "-f", "-"} cmd := []string{ssh.SSHExe(), hostname, "tar", "--dereference", "--create", "--file", "-"}
if is_abs { if is_abs {
cmd = append(cmd, "-C", "/") cmd = append(cmd, "-C", "/")
} }

View File

@@ -48,6 +48,7 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
var hdr *tar.Header var hdr *tar.Header
hdr, err = tr.Next() hdr, err = tr.Next()
if errors.Is(err, io.EOF) { if errors.Is(err, io.EOF) {
err = nil
break break
} }
if err != nil { if err != nil {
@@ -70,6 +71,9 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
} }
case tar.TypeReg, tar.TypeRegA: case tar.TypeReg, tar.TypeRegA:
var d *os.File var d *os.File
if err = os.MkdirAll(filepath.Dir(dest), 0o700); err != nil {
return
}
if d, err = os.Create(dest); err != nil { if d, err = os.Create(dest); err != nil {
return return
} }
@@ -82,6 +86,9 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
return return
} }
case tar.TypeLink: case tar.TypeLink:
if err = os.MkdirAll(filepath.Dir(dest), 0o700); err != nil {
return
}
if err = os.Link(hdr.Linkname, dest); err != nil { if err = os.Link(hdr.Linkname, dest); err != nil {
return return
} }
@@ -89,6 +96,9 @@ func ExtractAllFromTar(tr *tar.Reader, dest_path string, optss ...TarExtractOpti
return return
} }
case tar.TypeSymlink: case tar.TypeSymlink:
if err = os.MkdirAll(filepath.Dir(dest), 0o700); err != nil {
return
}
if err = os.Symlink(hdr.Linkname, dest); err != nil { if err = os.Symlink(hdr.Linkname, dest); err != nil {
return return
} }