Permalink
Browse files

Perf improvements and bug fixes:

- Clean up tracing to clearly indicate errors
- Added an unattended mode for use in labs
- Replace most ESENT databases with our own FileBasedCollection
- Updated always_exclude to track individual files, not folders
- Added new gvfs commands for managing cache servers
- Integrated GvFlt perf improvements, including a negative path cache
- Added ability to prefetch files
- Miscellaneous other bug fixes
  • Loading branch information...
sanoursa committed Oct 23, 2017
1 parent 153006d commit ed0479021d547cb8d79905e5b510245879782f3c
Showing with 11,479 additions and 4,724 deletions.
  1. +29 −1 GVFS.sln
  2. +1 −1 GVFS/FastFetch/CheckoutFetchHelper.cs
  3. +5 −2 GVFS/FastFetch/FastFetch.csproj
  4. +29 −17 GVFS/FastFetch/FastFetchVerb.cs
  5. +90 −20 GVFS/FastFetch/FetchHelper.cs
  6. +55 −25 GVFS/FastFetch/Git/DiffHelper.cs
  7. +15 −0 GVFS/FastFetch/Git/FastFetchGitObjects.cs
  8. +122 −0 GVFS/FastFetch/Git/FastFetchLibGit2Repo.cs
  9. +8 −3 GVFS/FastFetch/GitEnlistment.cs
  10. +30 −26 GVFS/FastFetch/Jobs/CheckoutJob.cs
  11. +15 −9 GVFS/FastFetch/Jobs/FindMissingBlobsJob.cs
  12. +1 −2 GVFS/FastFetch/Jobs/IndexPackJob.cs
  13. +1 −1 GVFS/FastFetch/packages.config
  14. +72 −0 GVFS/GVFS.Build/GVFS.PreBuild.csproj
  15. +45 −0 GVFS/GVFS.Build/GenerateVersionInfo.cs
  16. +7 −12 GVFS/GVFS.Common/Enlistment.cs
  17. +442 −0 GVFS/GVFS.Common/FileBasedCollection.cs
  18. +12 −0 GVFS/GVFS.Common/FileBasedCollectionException.cs
  19. +131 −0 GVFS/GVFS.Common/FileBasedDictionary.cs
  20. +37 −84 GVFS/GVFS.Common/FileBasedLock.cs
  21. +6 −109 GVFS/GVFS.Common/FileSystem/GvFltFilter.cs
  22. +25 −9 GVFS/GVFS.Common/FileSystem/PhysicalFileSystem.cs
  23. +9 −20 GVFS/GVFS.Common/GVFS.Common.csproj
  24. +24 −22 GVFS/GVFS.Common/GVFSConstants.cs
  25. +3 −0 GVFS/GVFS.Common/GVFSContext.cs
  26. +29 −0 GVFS/GVFS.Common/GVFSEnlistment.Shared.cs
  27. +16 −11 GVFS/GVFS.Common/GVFSEnlistment.cs
  28. +33 −20 GVFS/GVFS.Common/GVFSLock.Shared.cs
  29. +11 −6 GVFS/GVFS.Common/GVFSLock.cs
  30. +52 −39 GVFS/GVFS.Common/Git/GVFSGitObjects.cs
  31. +0 −2 GVFS/GVFS.Common/Git/GitAuthentication.cs
  32. +108 −89 GVFS/GVFS.Common/Git/GitObjects.cs
  33. +18 −7 GVFS/GVFS.Common/Git/GitProcess.cs
  34. +25 −12 GVFS/GVFS.Common/Git/GitRepo.cs
  35. +24 −2 GVFS/GVFS.Common/Git/GitVersion.cs
  36. +53 −141 GVFS/GVFS.Common/Git/LibGit2Repo.cs
  37. +1 −2 GVFS/GVFS.Common/HeartbeatThread.cs
  38. +20 −207 GVFS/GVFS.Common/Http/CacheServerInfo.cs
  39. +170 −0 GVFS/GVFS.Common/Http/CacheServerResolver.cs
  40. +24 −8 GVFS/GVFS.Common/Http/ConfigHttpRequestor.cs
  41. +42 −29 GVFS/GVFS.Common/Http/GitObjectsHttpRequestor.cs
  42. +11 −3 GVFS/GVFS.Common/Http/HttpRequestor.cs
  43. +0 −9 GVFS/GVFS.Common/IBackgroundOperation.cs
  44. +1 −1 GVFS/GVFS.Common/LibGit2RepoPool.cs
  45. +1 −2 GVFS/GVFS.Common/NamedPipes/AllowAllLocksNamedPipeServer.cs
  46. +16 −6 GVFS/GVFS.Common/NamedPipes/LockNamedPipeMessages.cs
  47. +25 −0 GVFS/GVFS.Common/NamedPipes/NamedPipeMessages.cs
  48. +2 −3 GVFS/GVFS.Common/NamedPipes/NamedPipeServer.cs
  49. +24 −31 GVFS/GVFS.Common/NativeMethods.cs
  50. +252 −0 GVFS/GVFS.Common/PlaceholderListDatabase.cs
  51. +1 −1 GVFS/GVFS.Common/ProcessHelper.cs
  52. +86 −136 GVFS/GVFS.Common/RepoMetadata.cs
  53. +7 −9 GVFS/GVFS.Common/RetryConfig.cs
  54. +26 −6 GVFS/GVFS.Common/RetryWrapper.cs
  55. +1 −0 GVFS/GVFS.Common/ReturnCode.cs
  56. +10 −2 GVFS/GVFS.Common/Tracing/ITracer.cs
  57. +45 −9 GVFS/GVFS.Common/Tracing/JsonEtwTracer.cs
  58. +18 −0 GVFS/GVFS.Common/Tracing/TracingConstants.cs
  59. +0 −3 GVFS/GVFS.Common/packages.config
  60. +0 −1 GVFS/GVFS.FunctionalTests/FileSystemRunners/Category/CategoryConstants.cs
  61. +28 −1 GVFS/GVFS.FunctionalTests/FileSystemRunners/CmdRunner.cs
  62. +2 −4 GVFS/GVFS.FunctionalTests/FileSystemRunners/FileSystemRunner.cs
  63. +15 −20 GVFS/GVFS.FunctionalTests/FileSystemRunners/SystemIORunner.cs
  64. +33 −1 GVFS/GVFS.FunctionalTests/GVFS.FunctionalTests.csproj
  65. +13 −0 GVFS/GVFS.FunctionalTests/GVFSTestConfig.cs
  66. +2 −7 GVFS/GVFS.FunctionalTests/Program.cs
  67. +10 −31 GVFS/GVFS.FunctionalTests/Properties/Settings.Designer.cs
  68. +5 −11 GVFS/GVFS.FunctionalTests/Properties/Settings.settings
  69. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/PersistentDictionary.edb
  70. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/PersistentDictionary.jfm
  71. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/epc.chk
  72. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/epc.log
  73. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/epcres00001.jrs
  74. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/epcres00002.jrs
  75. BIN GVFS/GVFS.FunctionalTests/TestData/BackgroundGitUpdates/epctmp.log
  76. +15 −12 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/CacheServerTests.cs
  77. +1 −1 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/CloneTests.cs
  78. +2 −2 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/DehydrateTests.cs
  79. +0 −104 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/GVFSBuildTest.cs
  80. +106 −19 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/GitFilesTests.cs
  81. +94 −11 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/MountTests.cs
  82. +44 −17 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/PrefetchVerbTests.cs
  83. +0 −8 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/UnmountTests.cs
  84. +87 −31 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/UpdatePlaceholderTests.cs
  85. +28 −2 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerFixture/WorkingDirectoryTests.cs
  86. +116 −0 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerTestCase/DiskLayoutUpgradeTests.cs
  87. +6 −15 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerTestCase/PersistedSparseExcludeTests.cs
  88. +62 −0 GVFS/GVFS.FunctionalTests/Tests/EnlistmentPerTestCase/RepairTests.cs
  89. +36 −8 GVFS/GVFS.FunctionalTests/Tests/FastFetchTests.cs
  90. +56 −0 GVFS/GVFS.FunctionalTests/Tests/GVFSVerbTests.cs
  91. +344 −0 GVFS/GVFS.FunctionalTests/Tests/GitCommands/CheckoutTests.cs
  92. +1 −1 GVFS/GVFS.FunctionalTests/Tests/GitCommands/GitRepoTests.cs
  93. +34 −0 GVFS/GVFS.FunctionalTests/Tests/GitCommands/HashObjectTests.cs
  94. +29 −0 GVFS/GVFS.FunctionalTests/Tests/GitCommands/RmTests.cs
  95. +17 −0 GVFS/GVFS.FunctionalTests/Tests/LongRunningEnlistment/GitReadAndGitLockTests.cs
  96. +167 −0 GVFS/GVFS.FunctionalTests/Tests/MultiEnlistmentTests/SharedCacheTests.cs
  97. +1 −1 GVFS/GVFS.FunctionalTests/Tests/TestResultsHelper.cs
  98. +24 −13 GVFS/GVFS.FunctionalTests/Tools/ControlGitRepo.cs
  99. +54 −70 GVFS/GVFS.FunctionalTests/Tools/GVFSFunctionalTestEnlistment.cs
  100. +66 −15 GVFS/GVFS.FunctionalTests/Tools/GVFSHelpers.cs
  101. +4 −11 GVFS/GVFS.FunctionalTests/Tools/GVFSProcess.cs
  102. +19 −18 GVFS/GVFS.FunctionalTests/Tools/GVFSServiceProcess.cs
  103. +2 −4 GVFS/GVFS.FunctionalTests/Tools/GitHelpers.cs
  104. +7 −16 GVFS/GVFS.FunctionalTests/app.config
  105. +2 −1 GVFS/GVFS.FunctionalTests/packages.config
  106. +192 −0 GVFS/GVFS.GVFlt/BackgroundGitUpdateQueue.cs
  107. +1 −1 GVFS/{GVFS.Common → GVFS.GVFlt}/CallbackResult.cs
  108. +83 −31 GVFS/GVFS.GVFlt/DotGit/AlwaysExcludeFile.cs
  109. +29 −17 GVFS/GVFS.GVFlt/DotGit/FileSerializer.cs
  110. +521 −346 GVFS/GVFS.GVFlt/DotGit/GitIndexProjection.cs
  111. +8 −7 GVFS/GVFS.GVFlt/DotGit/SparseCheckout.cs
  112. +5 −2 GVFS/GVFS.GVFlt/GVFS.GVFlt.csproj
  113. +967 −435 GVFS/GVFS.GVFlt/GVFltCallbacks.cs
  114. +58 −85 GVFS/{GVFS.Common → GVFS.GVFlt}/ReliableBackgroundOperations.cs
  115. +2 −2 GVFS/GVFS.GvFltWrapper/AssemblyInfo.cpp
  116. +21 −3 GVFS/GVFS.GvFltWrapper/CallbackDelegates.h
  117. +2 −2 GVFS/GVFS.GvFltWrapper/DirectoryEnumerationFileNamesResult.h
  118. +3 −3 GVFS/GVFS.GvFltWrapper/DirectoryEnumerationResult.h
  119. +2 −2 GVFS/GVFS.GvFltWrapper/DirectoryEnumerationResultImpl.h
  120. +1 −1 GVFS/GVFS.GvFltWrapper/GvFlt.props
  121. +0 −31 GVFS/GVFS.GvFltWrapper/GvFltException.cpp
  122. +0 −25 GVFS/GVFS.GvFltWrapper/GvFltException.h
  123. +12 −11 GVFS/GVFS.GvFltWrapper/{GvFlt.vcxproj → GvLib.vcxproj}
  124. +12 −9 GVFS/GVFS.GvFltWrapper/{GvFlt.vcxproj.filters → GvLib.vcxproj.filters}
  125. +46 −0 GVFS/GVFS.GvFltWrapper/GvLibException.cpp
  126. +37 −0 GVFS/GVFS.GvFltWrapper/GvLibException.h
  127. +1 −1 GVFS/GVFS.GvFltWrapper/HResult.h
  128. +0 −30 GVFS/GVFS.GvFltWrapper/ITracer.h
  129. +591 −0 GVFS/GVFS.GvFltWrapper/IVirtualizationInstance.h
  130. +1 −1 GVFS/GVFS.GvFltWrapper/IoStatusBlockValue.h
  131. +1 −1 GVFS/GVFS.GvFltWrapper/NativeEnumerationResultUtils.h
  132. +1 −1 GVFS/GVFS.GvFltWrapper/NotificationType.h
  133. +16 −3 GVFS/GVFS.GvFltWrapper/NtStatus.h
  134. +3 −3 GVFS/GVFS.GvFltWrapper/Scripts/CreateCliAssemblyVersion.bat
  135. +5 −5 GVFS/GVFS.GvFltWrapper/Scripts/CreateVersionHeader.bat
  136. +1 −1 GVFS/GVFS.GvFltWrapper/Stdafx.cpp
  137. +1 −1 GVFS/GVFS.GvFltWrapper/UpdateFailureCause.h
  138. +1 −1 GVFS/GVFS.GvFltWrapper/UpdateType.h
  139. +54 −0 GVFS/GVFS.GvFltWrapper/Utils.cpp
  140. +7 −65 GVFS/GVFS.GvFltWrapper/Utils.h
  141. BIN GVFS/GVFS.GvFltWrapper/Version.rc
  142. +332 −632 GVFS/GVFS.GvFltWrapper/VirtualizationInstance.cpp
  143. +183 −100 GVFS/GVFS.GvFltWrapper/VirtualizationInstance.h
  144. +2 −1 GVFS/GVFS.GvFltWrapper/WriteBuffer.cpp
  145. +1 −1 GVFS/GVFS.GvFltWrapper/WriteBuffer.h
  146. +1 −1 GVFS/GVFS.GvFltWrapper/packages.config
  147. +18 −6 GVFS/GVFS.Hooks/GVFS.Hooks.csproj
  148. +20 −15 GVFS/GVFS.Hooks/Program.cs
  149. +6 −3 GVFS/GVFS.Mount/GVFS.Mount.csproj
  150. +49 −34 GVFS/GVFS.Mount/InProcessMount.cs
  151. +34 −12 GVFS/GVFS.Mount/InProcessMountVerb.cs
  152. +1 −1 GVFS/GVFS.Mount/packages.config
  153. +6 −0 GVFS/GVFS.PerfProfiling/App.config
  154. +74 −0 GVFS/GVFS.PerfProfiling/GVFS.PerfProfiling.csproj
  155. +62 −0 GVFS/GVFS.PerfProfiling/ProfilingEnvironment.cs
  156. +49 −0 GVFS/GVFS.PerfProfiling/Program.cs
  157. +36 −0 GVFS/GVFS.PerfProfiling/Properties/AssemblyInfo.cs
  158. +0 −5 GVFS/GVFS.ReadObjectHook/GVFS.ReadObjectHook.vcxproj
  159. BIN GVFS/GVFS.ReadObjectHook/Version.rc
  160. +3 −3 GVFS/GVFS.Service/Configuration.cs
  161. +2 −0 GVFS/GVFS.Service/GVFS.Service.csproj
  162. +11 −28 GVFS/GVFS.Service/GVFSMountProcess.cs
  163. +28 −13 GVFS/GVFS.Service/GvfsService.cs
  164. +77 −0 GVFS/GVFS.Service/Handlers/ExcludeFromAntiVirusHandler.cs
  165. +2 −2 GVFS/{GVFS.Common → GVFS.Service}/RepoRegistration.cs
  166. +5 −7 GVFS/GVFS.Service/RepoRegistry.cs
  167. +13 −0 GVFS/GVFS.Tests/NUnitRunner.cs
  168. +7 −0 GVFS/GVFS.Tests/Should/StringShouldExtensions.cs
  169. +182 −0 GVFS/GVFS.UnitTests/Common/BackgroundGitUpdateQueueTests.cs
  170. +0 −200 GVFS/GVFS.UnitTests/Common/CacheServerInfoTests.cs
  171. +176 −0 GVFS/GVFS.UnitTests/Common/CacheServerResolverTests.cs
  172. +329 −0 GVFS/GVFS.UnitTests/Common/FileBasedDictionaryTests.cs
  173. +31 −9 GVFS/GVFS.UnitTests/Common/GitVersionTests.cs
  174. +5 −5 GVFS/GVFS.UnitTests/Common/JsonEtwTracerTests.cs
  175. +146 −0 GVFS/GVFS.UnitTests/Common/PlaceholderDatabaseTests.cs
  176. +7 −6 GVFS/GVFS.UnitTests/Common/RetryConfigTests.cs
  177. +96 −8 GVFS/GVFS.UnitTests/Common/RetryWrapperTests.cs
  178. +1 −1 GVFS/GVFS.UnitTests/FastFetch/BatchObjectDownloadJobTests.cs
  179. +10 −8 GVFS/GVFS.UnitTests/FastFetch/DiffHelperTests.cs
  180. +4 −4 GVFS/GVFS.UnitTests/FastFetch/FastFetchTracingTests.cs
  181. +29 −3 GVFS/GVFS.UnitTests/GVFS.UnitTests.csproj
  182. +57 −21 GVFS/GVFS.UnitTests/GVFlt/DotGit/AlwaysExcludeFileTests.cs
  183. +472 −2 GVFS/GVFS.UnitTests/GVFlt/GVFltCallbacksTests.cs
  184. +57 −34 GVFS/GVFS.UnitTests/Git/GVFSGitObjectsTests.cs
  185. +2 −1 GVFS/GVFS.UnitTests/Git/GitAuthenticationTests.cs
  186. +23 −3 GVFS/GVFS.UnitTests/Mock/Common/MockEnlistment.cs
  187. +3 −2 GVFS/GVFS.UnitTests/Mock/Common/MockPhysicalGitObjects.cs
  188. +57 −3 GVFS/GVFS.UnitTests/Mock/Common/MockTracer.cs
  189. +50 −0 GVFS/GVFS.UnitTests/Mock/FileSystem/ConfigurableFileSystem.cs
  190. +0 −129 GVFS/GVFS.UnitTests/Mock/FileSystem/MassiveMockFileSystem.cs
  191. +34 −24 GVFS/GVFS.UnitTests/Mock/FileSystem/MockFileSystem.cs
  192. +61 −0 GVFS/GVFS.UnitTests/Mock/FileSystem/MockFileSystemWithCallbacks.cs
  193. +0 −33 GVFS/GVFS.UnitTests/Mock/FileSystem/MockSafeHandle.cs
  194. +252 −0 GVFS/GVFS.UnitTests/Mock/GVFS.GvFlt/DotGit/MockGitIndexProjection.cs
  195. +26 −0 GVFS/GVFS.UnitTests/Mock/GVFS.GvFlt/MockReliableBackgroundOperations.cs
  196. +2 −8 GVFS/GVFS.UnitTests/Mock/Git/MockBatchHttpGitObjects.cs
  197. +23 −1 GVFS/GVFS.UnitTests/Mock/Git/MockGVFSGitObjects.cs
  198. +6 −5 GVFS/GVFS.UnitTests/Mock/Git/MockGitProcess.cs
  199. +1 −1 GVFS/GVFS.UnitTests/Mock/Git/MockGitRepo.cs
  200. +2 −8 GVFS/GVFS.UnitTests/Mock/Git/MockHttpGitObjects.cs
  201. +35 −0 GVFS/GVFS.UnitTests/Mock/Git/MockLibGit2Repo.cs
  202. +196 −0 GVFS/GVFS.UnitTests/Mock/GvFlt/MockVirtualizationInstance.cs
  203. +31 −0 GVFS/GVFS.UnitTests/Mock/ReusableMemoryStream.cs
  204. +27 −2 GVFS/GVFS.UnitTests/Virtual/CommonRepoSetup.cs
  205. +9 −0 GVFS/GVFS.UnitTests/Virtual/TestsWithCommonRepo.cs
  206. +3 −0 GVFS/GVFS.UnitTests/packages.config
  207. +27 −43 GVFS/GVFS/CommandLine/CacheServerVerb.cs
  208. +38 −18 GVFS/GVFS/CommandLine/CloneHelper.cs
  209. +42 −49 GVFS/GVFS/CommandLine/CloneVerb.cs
  210. +23 −21 GVFS/GVFS/CommandLine/DehydrateVerb.cs
  211. +68 −127 GVFS/GVFS/CommandLine/DiagnoseVerb.cs
  212. +26 −0 GVFS/GVFS/CommandLine/DiskLayoutUpgrades/DiskLayout10to11Upgrade.cs
  213. +41 −0 GVFS/GVFS/CommandLine/DiskLayoutUpgrades/DiskLayout7to8Upgrade.cs
  214. +88 −0 GVFS/GVFS/CommandLine/DiskLayoutUpgrades/DiskLayout8to9Upgrade.cs
  215. +175 −0 GVFS/GVFS/CommandLine/DiskLayoutUpgrades/DiskLayout9to10Upgrade.cs
  216. +285 −0 GVFS/GVFS/CommandLine/DiskLayoutUpgrades/DiskLayoutUpgrade.cs
  217. +139 −45 GVFS/GVFS/CommandLine/GVFSVerb.cs
  218. +4 −2 GVFS/GVFS/CommandLine/LogVerb.cs
  219. +221 −64 GVFS/GVFS/CommandLine/MountVerb.cs
  220. +0 −52 GVFS/GVFS/CommandLine/PrefetchHelper.cs
  221. +103 −70 GVFS/GVFS/CommandLine/PrefetchVerb.cs
  222. +13 −3 GVFS/GVFS/CommandLine/RepairJobs/BackgroundOperationDatabaseRepairJob.cs
  223. +12 −2 GVFS/GVFS/CommandLine/RepairJobs/BlobSizeDatabaseRepairJob.cs
  224. +14 −8 GVFS/GVFS/CommandLine/RepairJobs/GitConfigRepairJob.cs
  225. +1 −2 GVFS/GVFS/CommandLine/RepairJobs/GitHeadRepairJob.cs
  226. +11 −2 GVFS/GVFS/CommandLine/RepairJobs/PlaceholderDatabaseRepairJob.cs
  227. +0 −20 GVFS/GVFS/CommandLine/RepairJobs/RepairJob.cs
  228. +3 −4 GVFS/GVFS/CommandLine/RepairJobs/RepoMetadataDatabaseRepairJob.cs
  229. +18 −8 GVFS/GVFS/CommandLine/RepairVerb.cs
  230. +10 −5 GVFS/GVFS/CommandLine/UnmountVerb.cs
  231. +12 −6 GVFS/GVFS/GVFS.csproj
  232. +12 −0 GVFS/GVFS/Program.cs
  233. +2 −6 GVFS/GVFS/Setup.iss
  234. +1 −1 GVFS/GVFS/packages.config
  235. +2 −2 GitHooksLoader/GitHooksLoader.cpp
  236. +25 −9 GitHooksLoader/GitHooksLoader.vcxproj
  237. +8 −0 GitHooksLoader/GitHooksLoader.vcxproj.filters
  238. BIN GitHooksLoader/Version.rc
  239. BIN GitHooksLoader/resource.h
  240. +5 −15 Protocol.md
  241. +0 −2 Scripts/CreateCommonAssemblyVersion.bat
  242. +0 −3 Scripts/CreateCommonCliAssemblyVersion.bat
  243. +0 −9 Scripts/CreateCommonVersionHeader.bat
View
@@ -22,13 +22,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GVFS", "GVFS", "{2EF2EC94-3
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.GVFlt", "GVFS\GVFS.GVFlt\GVFS.GVFlt.csproj", "{1118B427-7063-422F-83B9-5023C8EC5A7A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GvFlt", "GVFS\GVFS.GvFltWrapper\GvFlt.vcxproj", "{FB0831AE-9997-401B-B31F-3A065FDBEB20}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GvLib", "GVFS\GVFS.GvFltWrapper\GvLib.vcxproj", "{FB0831AE-9997-401B-B31F-3A065FDBEB20}"
ProjectSection(ProjectDependencies) = postProject
{5A6656D5-81C7-472C-9DC8-32D071CB2258} = {5A6656D5-81C7-472C-9DC8-32D071CB2258}
{374BF1E5-0B2D-4D4A-BD5E-4212299DEF09} = {374BF1E5-0B2D-4D4A-BD5E-4212299DEF09}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.Common", "GVFS\GVFS.Common\GVFS.Common.csproj", "{374BF1E5-0B2D-4D4A-BD5E-4212299DEF09}"
ProjectSection(ProjectDependencies) = postProject
{A4984251-840E-4622-AD0C-66DFCE2B2574} = {A4984251-840E-4622-AD0C-66DFCE2B2574}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS", "GVFS\GVFS\GVFS.csproj", "{32220664-594C-4425-B9A0-88E0BE2F3D2A}"
ProjectSection(ProjectDependencies) = postProject
@@ -59,6 +62,9 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GVFS.NativeTests", "GVFS\GVFS.NativeTests\GVFS.NativeTests.vcxproj", "{3771C555-B5C1-45E2-B8B7-2CEF1619CDC5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.Hooks", "GVFS\GVFS.Hooks\GVFS.Hooks.csproj", "{BDA91EE5-C684-4FC5-A90A-B7D677421917}"
ProjectSection(ProjectDependencies) = postProject
{A4984251-840E-4622-AD0C-66DFCE2B2574} = {A4984251-840E-4622-AD0C-66DFCE2B2574}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.Service", "GVFS\GVFS.Service\GVFS.Service.csproj", "{B8C1DFBA-CAFD-4F7E-A1A3-E11907B5467B}"
ProjectSection(ProjectDependencies) = postProject
@@ -73,6 +79,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.Mount", "GVFS\GVFS.Mou
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GVFS.ReadObjectHook", "GVFS\GVFS.ReadObjectHook\GVFS.ReadObjectHook.vcxproj", "{5A6656D5-81C7-472C-9DC8-32D071CB2258}"
ProjectSection(ProjectDependencies) = postProject
{A4984251-840E-4622-AD0C-66DFCE2B2574} = {A4984251-840E-4622-AD0C-66DFCE2B2574}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{28674A4B-1223-4633-A460-C8CC39B09318}"
ProjectSection(SolutionItems) = preProject
@@ -83,9 +92,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{2867
Scripts\RunUnitTests.bat = Scripts\RunUnitTests.bat
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.PerfProfiling", "GVFS\GVFS.PerfProfiling\GVFS.PerfProfiling.csproj", "{C5D3CA26-562F-4CA4-A378-B93E97A730E3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.Service.UI", "GVFS\GVFS.Service.UI\GVFS.Service.UI.csproj", "{93B403FD-DAFB-46C5-9636-B122792A548A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GVFS.PreBuild", "GVFS\GVFS.Build\GVFS.PreBuild.csproj", "{A4984251-840E-4622-AD0C-66DFCE2B2574}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{AB0D9230-3893-4486-8899-F9C871FB5D5F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GitHooksLoader", "GitHooksLoader\GitHooksLoader.vcxproj", "{798DE293-6EDA-4DC4-9395-BE7A71C563E3}"
ProjectSection(ProjectDependencies) = postProject
{A4984251-840E-4622-AD0C-66DFCE2B2574} = {A4984251-840E-4622-AD0C-66DFCE2B2574}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -145,10 +163,18 @@ Global
{5A6656D5-81C7-472C-9DC8-32D071CB2258}.Debug|x64.Build.0 = Debug|x64
{5A6656D5-81C7-472C-9DC8-32D071CB2258}.Release|x64.ActiveCfg = Release|x64
{5A6656D5-81C7-472C-9DC8-32D071CB2258}.Release|x64.Build.0 = Release|x64
{C5D3CA26-562F-4CA4-A378-B93E97A730E3}.Debug|x64.ActiveCfg = Debug|x64
{C5D3CA26-562F-4CA4-A378-B93E97A730E3}.Debug|x64.Build.0 = Debug|x64
{C5D3CA26-562F-4CA4-A378-B93E97A730E3}.Release|x64.ActiveCfg = Release|x64
{C5D3CA26-562F-4CA4-A378-B93E97A730E3}.Release|x64.Build.0 = Release|x64
{93B403FD-DAFB-46C5-9636-B122792A548A}.Debug|x64.ActiveCfg = Debug|x64
{93B403FD-DAFB-46C5-9636-B122792A548A}.Debug|x64.Build.0 = Debug|x64
{93B403FD-DAFB-46C5-9636-B122792A548A}.Release|x64.ActiveCfg = Release|x64
{93B403FD-DAFB-46C5-9636-B122792A548A}.Release|x64.Build.0 = Release|x64
{A4984251-840E-4622-AD0C-66DFCE2B2574}.Debug|x64.ActiveCfg = Debug|x64
{A4984251-840E-4622-AD0C-66DFCE2B2574}.Debug|x64.Build.0 = Debug|x64
{A4984251-840E-4622-AD0C-66DFCE2B2574}.Release|x64.ActiveCfg = Release|x64
{A4984251-840E-4622-AD0C-66DFCE2B2574}.Release|x64.Build.0 = Release|x64
{798DE293-6EDA-4DC4-9395-BE7A71C563E3}.Debug|x64.ActiveCfg = Debug|x64
{798DE293-6EDA-4DC4-9395-BE7A71C563E3}.Debug|x64.Build.0 = Debug|x64
{798DE293-6EDA-4DC4-9395-BE7A71C563E3}.Release|x64.ActiveCfg = Release|x64
@@ -172,6 +198,8 @@ Global
{17498502-AEFF-4E70-90CC-1D0B56A8ADF5} = {2EF2EC94-3A68-4ED7-9A58-B7057ADBA01C}
{5A6656D5-81C7-472C-9DC8-32D071CB2258} = {2EF2EC94-3A68-4ED7-9A58-B7057ADBA01C}
{28674A4B-1223-4633-A460-C8CC39B09318} = {DCE11095-DA5F-4878-B58D-2702765560F5}
{C5D3CA26-562F-4CA4-A378-B93E97A730E3} = {C41F10F9-1163-4CFA-A465-EA728F75E9FA}
{93B403FD-DAFB-46C5-9636-B122792A548A} = {2EF2EC94-3A68-4ED7-9A58-B7057ADBA01C}
{A4984251-840E-4622-AD0C-66DFCE2B2574} = {AB0D9230-3893-4486-8899-F9C871FB5D5F}
EndGlobalSection
EndGlobal
@@ -66,7 +66,7 @@ public override void FastFetch(string branchOrCommit, bool isBranch)
// Configure pipeline
// Checkout uses DiffHelper when running checkout.Start(), which we use instead of LsTreeHelper like in FetchHelper.cs
// Checkout diff output => FindMissingBlobs => BatchDownload => IndexPack => Checkout available blobs
CheckoutJob checkout = new CheckoutJob(this.checkoutThreadCount, this.PathWhitelist, commitToFetch, this.Tracer, this.Enlistment);
CheckoutJob checkout = new CheckoutJob(this.checkoutThreadCount, this.FolderList, commitToFetch, this.Tracer, this.Enlistment);
FindMissingBlobsJob blobFinder = new FindMissingBlobsJob(this.SearchThreadCount, checkout.RequiredBlobs, checkout.AvailableBlobShas, this.Tracer, this.Enlistment);
BatchObjectDownloadJob downloader = new BatchObjectDownloadJob(this.DownloadThreadCount, this.ChunkSize, blobFinder.DownloadQueue, checkout.AvailableBlobShas, this.Tracer, this.Enlistment, this.ObjectRequestor, this.GitObjects);
IndexPackJob packIndexer = new IndexPackJob(this.IndexThreadCount, downloader.AvailablePacks, checkout.AvailableBlobShas, this.Tracer, this.GitObjects);
@@ -43,8 +43,9 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="CommandLine">
<HintPath>..\..\..\packages\CommandLineParser.2.0.275-beta\lib\net45\CommandLine.dll</HintPath>
<Reference Include="CommandLine, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\packages\CommandLineParser.2.1.1-beta\lib\net45\CommandLine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Diagnostics.Tracing.EventSource">
@@ -69,6 +70,8 @@
<Compile Include="FetchHelper.cs" />
<Compile Include="Git\BigEndianReader.cs" />
<Compile Include="Git\EndianHelper.cs" />
<Compile Include="Git\FastFetchGitObjects.cs" />
<Compile Include="Git\FastFetchLibGit2Repo.cs" />
<Compile Include="Git\GitIndexGenerator.cs" />
<Compile Include="HashingStream.cs" />
<Compile Include="WorkingTree.cs" />
@@ -5,7 +5,6 @@
using GVFS.Common.Tracing;
using Microsoft.Diagnostics.Tracing;
using System;
using System.Diagnostics;
namespace FastFetch
{
@@ -103,15 +102,15 @@ public class FastFetchVerb
"folders",
Required = false,
Default = "",
HelpText = "A semicolon-delimited list of paths to fetch")]
public string PathWhitelist { get; set; }
HelpText = "A semicolon-delimited list of folders to fetch")]
public string FolderList { get; set; }
[Option(
"folders-list",
Required = false,
Default = "",
HelpText = "A file containing line-delimited list of paths to fetch")]
public string PathWhitelistFile { get; set; }
HelpText = "A file containing line-delimited list of folders to fetch")]
public string FolderListFile { get; set; }
[Option(
"Allow-index-metadata-update-from-working-tree",
@@ -192,7 +191,7 @@ private int ExecuteWithExitCode()
Console.WriteLine("The ParentActivityId provided (" + this.ParentActivityId + ") is not a valid GUID.");
}
using (JsonEtwTracer tracer = new JsonEtwTracer("Microsoft.Git.FastFetch", parentActivityId, "FastFetch"))
using (JsonEtwTracer tracer = new JsonEtwTracer("Microsoft.Git.FastFetch", parentActivityId, "FastFetch", useCriticalTelemetryFlag: false))
{
if (this.Verbose)
{
@@ -206,29 +205,26 @@ private int ExecuteWithExitCode()
string fastfetchLogFile = Enlistment.GetNewLogFileName(enlistment.FastFetchLogRoot, "fastfetch");
tracer.AddLogFileEventListener(fastfetchLogFile, EventLevel.Informational, Keywords.Any);
RetryConfig retryConfig = new RetryConfig(this.MaxAttempts, TimeSpan.FromMinutes(RetryConfig.FetchAndCloneTimeoutMinutes));
string error;
CacheServerInfo cacheServer;
if (!CacheServerInfo.TryDetermineCacheServer(this.CacheServerUrl, tracer, enlistment, retryConfig, out cacheServer, out error))
{
tracer.RelatedError(error);
return ExitFailure;
}
CacheServerInfo cacheServer = new CacheServerInfo(this.GetRemoteUrl(enlistment), null);
tracer.WriteStartEvent(
enlistment.EnlistmentRoot,
enlistment.RepoUrl,
cacheServer.Url,
enlistment.GitObjectsRoot,
new EventMetadata
{
{ "TargetCommitish", commitish },
{ "Checkout", this.Checkout },
});
RetryConfig retryConfig = new RetryConfig(this.MaxAttempts, TimeSpan.FromMinutes(RetryConfig.FetchAndCloneTimeoutMinutes));
FetchHelper fetchHelper = this.GetFetchHelper(tracer, enlistment, cacheServer, retryConfig);
if (!FetchHelper.TryLoadPathWhitelist(tracer, this.PathWhitelist, this.PathWhitelistFile, enlistment, fetchHelper.PathWhitelist))
string error;
if (!FetchHelper.TryLoadFolderList(enlistment, this.FolderList, this.FolderListFile, fetchHelper.FolderList, out error))
{
tracer.RelatedError(error);
Console.WriteLine(error);
return ExitFailure;
}
@@ -291,7 +287,23 @@ private int ExecuteWithExitCode()
return isSuccess ? ExitSuccess : ExitFailure;
}
}
private string GetRemoteUrl(Enlistment enlistment)
{
if (!string.IsNullOrWhiteSpace(this.CacheServerUrl))
{
return this.CacheServerUrl;
}
string configuredUrl = CacheServerResolver.GetUrlFromConfig(enlistment);
if (!string.IsNullOrWhiteSpace(configuredUrl))
{
return configuredUrl;
}
return enlistment.RepoUrl;
}
private FetchHelper GetFetchHelper(ITracer tracer, Enlistment enlistment, CacheServerInfo cacheServer, RetryConfig retryConfig)
{
GitObjectsHttpRequestor objectRequestor = new GitObjectsHttpRequestor(tracer, enlistment, cacheServer, retryConfig);
Oops, something went wrong.

0 comments on commit ed04790

Please sign in to comment.