Example #1
0
        /// <summary>
        /// Initializes a SysVersionControlTmpItem from a tree path
        /// </summary>
        /// <param name="repoPath">The main repo path</param>
        /// <param name="tree">The tree git to iterate from</param>
        /// <param name="tmpItem">ref to the SysVersionControlTmpItem</param>
        /// <param name="recursive">If true will go recursively to all tree entries found (in case of a dir)</param>
        public static void InitTmpItemFromTree(string repoPath, Tree tree, ref SysVersionControlTmpItem tmpItem, bool recursive = true)
        {
            if (tmpItem == null)
            {
                tmpItem = new SysVersionControlTmpItem();
            }

            foreach (var treeEntry in tree)
            {
                if (treeEntry.TargetType == TreeEntryTargetType.Tree && recursive)
                {
                    InitTmpItemFromTree(repoPath, treeEntry.Target as Tree, ref tmpItem);
                }

                if (treeEntry.Mode == Mode.Directory || treeEntry.Mode == Mode.ExecutableFile || treeEntry.Mode == Mode.GitLink)
                {
                    continue;
                }

                string fileName = Path.Combine(repoPath, treeEntry.Path);

                if (SysVersionControlTmpItem.isValidXPOFile(fileName))
                {
                    tmpItem.ItemPath         = "\\" + treeEntry.Path.Replace(repoPath, string.Empty);
                    tmpItem.Filename_        = fileName;
                    tmpItem.InternalFilename = fileName;
                    tmpItem.insert();
                }
            }
        }