mirror of
https://github.com/syncthing/syncthing.git
synced 2024-11-16 10:28:49 -07:00
parent
7b5551248a
commit
fae7425bbf
@ -129,27 +129,36 @@ func (f FileInfoTruncated) FileModifiedBy() protocol.ShortID {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f FileInfoTruncated) ConvertToIgnoredFileInfo(by protocol.ShortID) protocol.FileInfo {
|
func (f FileInfoTruncated) ConvertToIgnoredFileInfo(by protocol.ShortID) protocol.FileInfo {
|
||||||
return protocol.FileInfo{
|
file := f.copyToFileInfo()
|
||||||
Name: f.Name,
|
file.SetIgnored(by)
|
||||||
Type: f.Type,
|
return file
|
||||||
ModifiedS: f.ModifiedS,
|
|
||||||
ModifiedNs: f.ModifiedNs,
|
|
||||||
ModifiedBy: by,
|
|
||||||
Version: f.Version,
|
|
||||||
RawBlockSize: f.RawBlockSize,
|
|
||||||
LocalFlags: protocol.FlagLocalIgnored,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f FileInfoTruncated) ConvertToDeletedFileInfo(by protocol.ShortID, localFlags uint32) protocol.FileInfo {
|
func (f FileInfoTruncated) ConvertToDeletedFileInfo(by protocol.ShortID) protocol.FileInfo {
|
||||||
|
file := f.copyToFileInfo()
|
||||||
|
file.SetDeleted(by)
|
||||||
|
return file
|
||||||
|
}
|
||||||
|
|
||||||
|
// copyToFileInfo just copies all members of FileInfoTruncated to protocol.FileInfo
|
||||||
|
func (f FileInfoTruncated) copyToFileInfo() protocol.FileInfo {
|
||||||
return protocol.FileInfo{
|
return protocol.FileInfo{
|
||||||
Name: f.Name,
|
Name: f.Name,
|
||||||
Type: f.Type,
|
Size: f.Size,
|
||||||
ModifiedS: time.Now().Unix(),
|
ModifiedS: f.ModifiedS,
|
||||||
ModifiedBy: by,
|
ModifiedBy: f.ModifiedBy,
|
||||||
Deleted: true,
|
Version: f.Version,
|
||||||
Version: f.Version.Update(by),
|
Sequence: f.Sequence,
|
||||||
LocalFlags: localFlags,
|
SymlinkTarget: f.SymlinkTarget,
|
||||||
|
BlocksHash: f.BlocksHash,
|
||||||
|
Type: f.Type,
|
||||||
|
Permissions: f.Permissions,
|
||||||
|
ModifiedNs: f.ModifiedNs,
|
||||||
|
RawBlockSize: f.RawBlockSize,
|
||||||
|
LocalFlags: f.LocalFlags,
|
||||||
|
Deleted: f.Deleted,
|
||||||
|
RawInvalid: f.RawInvalid,
|
||||||
|
NoPermissions: f.NoPermissions,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -468,6 +468,9 @@ func (t readWriteTransaction) putFile(key []byte, fi protocol.FileInfo) error {
|
|||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
} else if fi.BlocksHash != nil {
|
||||||
|
l.Warnln("Blocks is nil, but BlocksHash is not for file", fi)
|
||||||
|
panic("Blocks is nil, but BlocksHash is not")
|
||||||
}
|
}
|
||||||
|
|
||||||
fi.Blocks = nil
|
fi.Blocks = nil
|
||||||
|
@ -532,7 +532,8 @@ func (f *folder) scanSubdirs(subDirs []string) error {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
nf := file.ConvertToDeletedFileInfo(f.shortID, f.localFlags)
|
nf := file.ConvertToDeletedFileInfo(f.shortID)
|
||||||
|
nf.LocalFlags = f.localFlags
|
||||||
if file.ShouldConflict() {
|
if file.ShouldConflict() {
|
||||||
// We do not want to override the global version with
|
// We do not want to override the global version with
|
||||||
// the deleted file. Setting to an empty version makes
|
// the deleted file. Setting to an empty version makes
|
||||||
|
@ -104,14 +104,8 @@ func (f *receiveOnlyFolder) Revert() {
|
|||||||
return true // continue
|
return true // continue
|
||||||
}
|
}
|
||||||
|
|
||||||
fi = protocol.FileInfo{
|
fi.SetDeleted(f.shortID)
|
||||||
Name: fi.Name,
|
fi.Version = protocol.Vector{} // if this file ever resurfaces anywhere we want our delete to be strictly older
|
||||||
Type: fi.Type,
|
|
||||||
ModifiedS: time.Now().Unix(),
|
|
||||||
ModifiedBy: f.shortID,
|
|
||||||
Deleted: true,
|
|
||||||
Version: protocol.Vector{}, // if this file ever resurfaces anywhere we want our delete to be strictly older
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// Revert means to throw away our local changes. We reset the
|
// Revert means to throw away our local changes. We reset the
|
||||||
// version to the empty vector, which is strictly older than any
|
// version to the empty vector, which is strictly older than any
|
||||||
|
@ -118,10 +118,7 @@ func (f *sendOnlyFolder) Override() {
|
|||||||
}
|
}
|
||||||
if !ok || have.Name != need.Name {
|
if !ok || have.Name != need.Name {
|
||||||
// We are missing the file
|
// We are missing the file
|
||||||
need.Deleted = true
|
need.SetDeleted(f.shortID)
|
||||||
need.Blocks = nil
|
|
||||||
need.Version = need.Version.Update(f.shortID)
|
|
||||||
need.Size = 0
|
|
||||||
} else {
|
} else {
|
||||||
// We have the file, replace with our version
|
// We have the file, replace with our version
|
||||||
have.Version = have.Version.Merge(need.Version).Update(f.shortID)
|
have.Version = have.Version.Merge(need.Version).Update(f.shortID)
|
||||||
|
@ -266,24 +266,36 @@ func BlocksEqual(a, b []BlockInfo) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *FileInfo) SetMustRescan(by ShortID) {
|
func (f *FileInfo) SetMustRescan(by ShortID) {
|
||||||
f.LocalFlags = FlagLocalMustRescan
|
f.setLocalFlags(by, FlagLocalMustRescan)
|
||||||
f.ModifiedBy = by
|
|
||||||
f.Blocks = nil
|
|
||||||
f.Sequence = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FileInfo) SetIgnored(by ShortID) {
|
func (f *FileInfo) SetIgnored(by ShortID) {
|
||||||
f.LocalFlags = FlagLocalIgnored
|
f.setLocalFlags(by, FlagLocalIgnored)
|
||||||
f.ModifiedBy = by
|
|
||||||
f.Blocks = nil
|
|
||||||
f.Sequence = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FileInfo) SetUnsupported(by ShortID) {
|
func (f *FileInfo) SetUnsupported(by ShortID) {
|
||||||
f.LocalFlags = FlagLocalUnsupported
|
f.setLocalFlags(by, FlagLocalUnsupported)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FileInfo) SetDeleted(by ShortID) {
|
||||||
f.ModifiedBy = by
|
f.ModifiedBy = by
|
||||||
|
f.Deleted = true
|
||||||
|
f.Version = f.Version.Update(by)
|
||||||
|
f.ModifiedS = time.Now().Unix()
|
||||||
|
f.setNoContent()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FileInfo) setLocalFlags(by ShortID, flags uint32) {
|
||||||
|
f.RawInvalid = false
|
||||||
|
f.LocalFlags = flags
|
||||||
|
f.ModifiedBy = by
|
||||||
|
f.setNoContent()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FileInfo) setNoContent() {
|
||||||
f.Blocks = nil
|
f.Blocks = nil
|
||||||
f.Sequence = 0
|
f.BlocksHash = nil
|
||||||
|
f.Size = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b BlockInfo) String() string {
|
func (b BlockInfo) String() string {
|
||||||
|
Loading…
Reference in New Issue
Block a user