Exemplo n.º 1
0
        private async ValueTask DoMain(CommandLineOptions options)
        {
            var logger = new Logger
            {
                TraceEnabled = options.TraceLog
            };

            CmdUtil.NoCacheWarn(options.CacheFilePath);

            await using var mapping = new ObjectIdCache(options.CacheFilePath);

            using var rootdirRepo = CmdUtil.PrepareRepository(options.RootdirPath, "rootdir repository",
                                                              maxDepth: 1,
                                                              allowEmpty: false, allowRemote: options.PushAfterCommit,
                                                              mustLocalTailingMessage: " if --push is not specified");
            using var subdirRepo = CmdUtil.PrepareRepository(options.SubdirRepoPath, "subdir repository",
                                                             maxDepth: options.MaxDepth,
                                                             allowEmpty: false, allowRemote: true);

            var subdirDesc = CmdUtil.GetDescription(
                descriptionRepository: subdirRepo,
                descriptionByOption: options.SubdirRepoDesc,
                otherRepository: rootdirRepo,
                repositoryType: "subdir");

            var backCopyOptions = new BackCopyOptions(subdirDesc: subdirDesc)
            {
                ObjectMapping = mapping,
                DirInSrcs     = options.DirInSrcs,
                Branches      = CmdUtil.Branches(options.BranchNames, subdirRepo),
                MaxDepth      = options.MaxDepth,
                Logger        = logger,
            };

            using ICopyCommitProgressHandler progressHandler = options.TraceLog
                ? new NopProgressBarCopyCommitProgressHandler()
                : new ConsoleProgressBarCopyCommitProgressHandler();

            var main = new BackCopyCommitMain(backCopyOptions);

            main.DoMain(rootdirRepo, subdirRepo, progressHandler);

#if SUPPORT_REMOTE_REPOSITORY
            if (options.PushAfterCommit)
            {
                var branches = CmdUtil.Branches(options.BranchNames, rootdirRepo,
                                                notFoundError: false, remoteTrackingError: false);

                foreach (var branch in branches)
                {
                    if (branch.RemoteName == null)
                    {
                        rootdirRepo.Config.Set($"branch.{branch.FriendlyName}.remote", $"origin");
                    }
                }

                rootdirRepo.Network.Push(branches, new PushOptions());
            }
#endif
        }
 public CopyCommitContext(ICopyCommitProgressHandler?progressHandler, ObjectIdCache objectMapping,
                          ICopyCommitCallback callback)
 {
     _progressHandler = progressHandler;
     _objectMapping   = objectMapping;
     _callback        = callback;
     _referenceOrCopyCommitPromises = new Dictionary <ObjectId, RecursiveCallResult <Commit?> >();
 }
Exemplo n.º 3
0
 public CopyCommitMain(CopyOptions options)
 {
     _options       = options;
     _objectMapping = options.ObjectMapping;
     _logger        = options.Logger;
 }