add more logging output to diagnose an issue describe by a user where merge conflicts seem to be detected even if they are not there
This commit is contained in:
@@ -120,10 +120,14 @@ namespace keepass2android.Io
|
|||||||
|
|
||||||
public bool IsCached(IOConnectionInfo ioc)
|
public bool IsCached(IOConnectionInfo ioc)
|
||||||
{
|
{
|
||||||
return File.Exists(CachedFilePath(ioc))
|
bool result = File.Exists(CachedFilePath(ioc))
|
||||||
&& File.Exists(VersionFilePath(ioc))
|
&& File.Exists(VersionFilePath(ioc))
|
||||||
&& File.Exists(BaseVersionFilePath(ioc));
|
&& File.Exists(BaseVersionFilePath(ioc));
|
||||||
}
|
|
||||||
|
Kp2aLog.Log(ioc.GetDisplayName() + " isCached = " + result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public void Delete(IOConnectionInfo ioc)
|
public void Delete(IOConnectionInfo ioc)
|
||||||
{
|
{
|
||||||
@@ -593,11 +597,15 @@ namespace keepass2android.Io
|
|||||||
|
|
||||||
public string GetBaseVersionHash(IOConnectionInfo ioc)
|
public string GetBaseVersionHash(IOConnectionInfo ioc)
|
||||||
{
|
{
|
||||||
return File.ReadAllText(BaseVersionFilePath(ioc));
|
string hash = File.ReadAllText(BaseVersionFilePath(ioc));
|
||||||
}
|
Kp2aLog.Log(ioc.GetDisplayName() + " baseVersionHash = " + hash);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
public string GetLocalVersionHash(IOConnectionInfo ioc)
|
public string GetLocalVersionHash(IOConnectionInfo ioc)
|
||||||
{
|
{
|
||||||
return File.ReadAllText(VersionFilePath(ioc));
|
string hash = File.ReadAllText(VersionFilePath(ioc));
|
||||||
|
Kp2aLog.Log(ioc.GetDisplayName() + " localVersionHash = " + hash);
|
||||||
|
return hash;
|
||||||
}
|
}
|
||||||
public bool HasLocalChanges(IOConnectionInfo ioc)
|
public bool HasLocalChanges(IOConnectionInfo ioc)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,17 +43,21 @@ namespace keepass2android
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
remoteData = cachingFileStorage.GetRemoteDataAndHash(ioc, out hash);
|
remoteData = cachingFileStorage.GetRemoteDataAndHash(ioc, out hash);
|
||||||
|
Kp2aLog.Log("Checking for file change. Current hash = " + hash);
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException)
|
catch (FileNotFoundException)
|
||||||
{
|
{
|
||||||
StatusLogger.UpdateSubMessage(_app.GetResourceString(UiStringKey.RestoringRemoteFile));
|
StatusLogger.UpdateSubMessage(_app.GetResourceString(UiStringKey.RestoringRemoteFile));
|
||||||
cachingFileStorage.UpdateRemoteFile(ioc, _app.GetBooleanPreference(PreferenceKey.UseFileTransactions));
|
cachingFileStorage.UpdateRemoteFile(ioc, _app.GetBooleanPreference(PreferenceKey.UseFileTransactions));
|
||||||
Finish(true, _app.GetResourceString(UiStringKey.SynchronizedDatabaseSuccessfully));
|
Finish(true, _app.GetResourceString(UiStringKey.SynchronizedDatabaseSuccessfully));
|
||||||
|
Kp2aLog.Log("Checking for file change: file not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//check if remote file was modified:
|
//check if remote file was modified:
|
||||||
if (cachingFileStorage.GetBaseVersionHash(ioc) != hash)
|
var baseVersionHash = cachingFileStorage.GetBaseVersionHash(ioc);
|
||||||
|
Kp2aLog.Log("Checking for file change. baseVersionHash = " + baseVersionHash);
|
||||||
|
if (baseVersionHash != hash)
|
||||||
{
|
{
|
||||||
//remote file is modified
|
//remote file is modified
|
||||||
if (cachingFileStorage.HasLocalChanges(ioc))
|
if (cachingFileStorage.HasLocalChanges(ioc))
|
||||||
|
|||||||
@@ -118,12 +118,16 @@ namespace keepass2android
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (
|
bool hasStreamForOrigFile = (_streamForOrigFile != null);
|
||||||
(_streamForOrigFile != null)
|
bool hasChangeFast = hasStreamForOrigFile ||
|
||||||
|| fileStorage.CheckForFileChangeFast(ioc, _db.LastFileVersion) //first try to use the fast change detection
|
fileStorage.CheckForFileChangeFast(ioc, _db.LastFileVersion); //first try to use the fast change detection;
|
||||||
|| (FileHashChanged(ioc, _db.KpDatabase.HashOfFileOnDisk) == FileHashChange.Changed) //if that fails, hash the file and compare:
|
bool hasHashChanged = hasChangeFast ||
|
||||||
)
|
(FileHashChanged(ioc, _db.KpDatabase.HashOfFileOnDisk) ==
|
||||||
|
FileHashChange.Changed); //if that fails, hash the file and compare:
|
||||||
|
|
||||||
|
if (hasHashChanged)
|
||||||
{
|
{
|
||||||
|
Kp2aLog.Log("Conflict. " + hasStreamForOrigFile + " " + hasChangeFast + " " + hasHashChanged);
|
||||||
|
|
||||||
//ask user...
|
//ask user...
|
||||||
_app.AskYesNoCancel(UiStringKey.TitleSyncQuestion, UiStringKey.MessageSyncQuestion,
|
_app.AskYesNoCancel(UiStringKey.TitleSyncQuestion, UiStringKey.MessageSyncQuestion,
|
||||||
|
|||||||
Reference in New Issue
Block a user