diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/BackupFileSettings.cs b/src/SIL.LCModel/DomainServices/BackupRestore/BackupFileSettings.cs
index 5cf02242..a51736ab 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/BackupFileSettings.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/BackupFileSettings.cs
@@ -39,6 +39,7 @@ public class BackupFileSettings : IBackupSettings
private bool m_linkedFiles;
private bool m_supportingFiles;
private bool m_spellCheckAdditions;
+ private bool m_sendReceiveData;
#endregion
#region Constructors
@@ -118,6 +119,7 @@ private BackupFileSettings(BackupProjectSettings settings)
m_projectName = settings.ProjectName;
m_projectPathPersisted = LcmFileHelper.GetPathWithoutRoot(settings.ProjectPath);
m_spellCheckAdditions = settings.IncludeSpellCheckAdditions;
+ m_sendReceiveData = settings.IncludeSendReceiveData;
m_dbVersion = settings.DbVersion;
m_fwVersion = settings.FwVersion;
m_linkedFilesPathRelative = LinkedFilesRelativePathHelper.GetLinkedFilesRelativePathFromFullPath(settings.ProjectsRootFolder, settings.LinkedFilesPath, settings.ProjectPath, settings.ProjectName);
@@ -372,6 +374,19 @@ public bool IncludeSupportingFiles
get { PopulateSettingsFromZipFileIfNeeded(); return m_supportingFiles; }
private set { m_supportingFiles = value; }
}
+
+ /// ------------------------------------------------------------------------------------
+ ///
+ /// Whether or not Send/Receive repository data (.hg and OtherRepositories) is included
+ /// in the backup/restore.
+ ///
+ /// ------------------------------------------------------------------------------------
+ [DataMember(Name = "SendReceiveData")]
+ public bool IncludeSendReceiveData
+ {
+ get { PopulateSettingsFromZipFileIfNeeded(); return m_sendReceiveData; }
+ private set { m_sendReceiveData = value; }
+ }
#endregion
#region Private helper methods
@@ -562,6 +577,7 @@ private void CompleteInitialization(BackupFileSettings settings)
m_linkedFiles = settings.IncludeLinkedFiles;
m_supportingFiles = settings.IncludeSupportingFiles;
m_spellCheckAdditions = settings.IncludeSpellCheckAdditions;
+ m_sendReceiveData = settings.IncludeSendReceiveData;
m_dbVersion = settings.DbVersion;
m_fwVersion = settings.FwVersion;
}
diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/BackupProjectSettings.cs b/src/SIL.LCModel/DomainServices/BackupRestore/BackupProjectSettings.cs
index 3f5ce3b5..a6cf1058 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/BackupProjectSettings.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/BackupProjectSettings.cs
@@ -36,6 +36,7 @@ public BackupProjectSettings(LcmCache cache, IBackupInfo backupInfo, string dest
IncludeLinkedFiles = backupInfo.IncludeLinkedFiles;
IncludeSupportingFiles = backupInfo.IncludeSupportingFiles;
IncludeSpellCheckAdditions = backupInfo.IncludeSpellCheckAdditions;
+ IncludeSendReceiveData = backupInfo.IncludeSendReceiveData;
}
}
diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/BackupSettings.cs b/src/SIL.LCModel/DomainServices/BackupRestore/BackupSettings.cs
index a5bc49b5..8669afcc 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/BackupSettings.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/BackupSettings.cs
@@ -35,6 +35,7 @@ public abstract class BackupSettings : IBackupSettings
private bool m_includeMediaFiles;
private bool m_includeSupportingFiles;
private bool m_includeSpellCheckAdditions;
+ private bool m_includeSendReceiveData;
///
/// The root folder for projects (typically the default, but if these settings represent
@@ -141,6 +142,15 @@ public bool IncludeSpellCheckAdditions
get { return m_includeSpellCheckAdditions; }
set { m_includeSpellCheckAdditions = value; }
}
+
+ ///
+ /// Whether or not Send/Receive repository data (.hg and OtherRepositories) is included in the backup/restore.
+ ///
+ public bool IncludeSendReceiveData
+ {
+ get { return m_includeSendReceiveData; }
+ set { m_includeSendReceiveData = value; }
+ }
#endregion
#region Paths
diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/IBackupInfo.cs b/src/SIL.LCModel/DomainServices/BackupRestore/IBackupInfo.cs
index d4ae0262..e7f3e3bf 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/IBackupInfo.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/IBackupInfo.cs
@@ -42,6 +42,11 @@ public interface IBackupInfo
/// Whether or not spell checking additions are included in the backup/restore.
///
bool IncludeSpellCheckAdditions { get; }
+
+ ///
+ /// Whether or not Send/Receive repository data (.hg and OtherRepositories) is included in the backup/restore.
+ ///
+ bool IncludeSendReceiveData { get; }
}
#endregion
diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/ProjectBackupService.cs b/src/SIL.LCModel/DomainServices/BackupRestore/ProjectBackupService.cs
index bba3445d..94698962 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/ProjectBackupService.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/ProjectBackupService.cs
@@ -133,6 +133,9 @@ internal IEnumerable CreateListOfFilesToZip()
if (m_settings.IncludeSupportingFiles)
foreach (string file in GetSupportingFilesFilesList())
yield return file;
+ if (m_settings.IncludeSendReceiveData)
+ foreach (string file in GetSendReceiveFiles())
+ yield return file;
}
private IEnumerable GetProjectFolderFilesToBackup()
@@ -184,6 +187,14 @@ private IEnumerable GetSupportingFilesFilesList()
return GenerateFileListFolderAndSubfolders(m_settings.ProjectSupportingFilesPath);
}
+ private IEnumerable GetSendReceiveFiles()
+ {
+ var files = new HashSet();
+ files.UnionWith(AllFilesInADirectory(Path.Combine(m_settings.ProjectPath, ".hg")));
+ files.UnionWith(AllFilesInADirectory(LcmFileHelper.GetOtherRepositoriesDir(m_settings.ProjectPath)));
+ return files;
+ }
+
private IEnumerable GetSpellingDictionaryFilesList()
{
var dictionaryFiles = new HashSet();
diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/ProjectRestoreService.cs b/src/SIL.LCModel/DomainServices/BackupRestore/ProjectRestoreService.cs
index 2cb608ff..63d245d9 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/ProjectRestoreService.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/ProjectRestoreService.cs
@@ -174,6 +174,16 @@ private void RestoreFrom7_0AndNewerBackup(BackupFileSettings fileSettings)
CopySpellingOverrideFilesFromBackupToLocal();
}
+
+ if (m_restoreSettings.IncludeSendReceiveData)
+ {
+ UncompressFilesContainedInFolderandSubFolders(
+ LcmFileHelper.GetZipfileFormattedPath(".hg"),
+ Path.Combine(m_restoreSettings.ProjectPath, ".hg"));
+ UncompressFilesContainedInFolderandSubFolders(
+ LcmFileHelper.GetZipfileFormattedPath(LcmFileHelper.OtherRepositories),
+ LcmFileHelper.GetOtherRepositoriesDir(m_restoreSettings.ProjectPath));
+ }
}
/// ------------------------------------------------------------------------------------
diff --git a/src/SIL.LCModel/DomainServices/BackupRestore/RestoreProjectSettings.cs b/src/SIL.LCModel/DomainServices/BackupRestore/RestoreProjectSettings.cs
index 7bb6bcd7..7000d119 100644
--- a/src/SIL.LCModel/DomainServices/BackupRestore/RestoreProjectSettings.cs
+++ b/src/SIL.LCModel/DomainServices/BackupRestore/RestoreProjectSettings.cs
@@ -65,6 +65,7 @@ public RestoreProjectSettings(string projectsRootFolder, string projectName, str
IncludeSupportingFiles = (commandLineOptions.IndexOf('f') >= 0);
IncludeLinkedFiles = (commandLineOptions.IndexOf('l') >= 0);
IncludeSpellCheckAdditions = (commandLineOptions.IndexOf('s') >= 0);
+ IncludeSendReceiveData = (commandLineOptions.IndexOf('r') >= 0);
}
#region Properties
@@ -87,6 +88,8 @@ public string CommandLineOptions
bldr.Append('l');
if (IncludeSpellCheckAdditions)
bldr.Append('s');
+ if (IncludeSendReceiveData)
+ bldr.Append('r');
return bldr.ToString();
}
}