Exemplo n.º 1
0
        public void TestGitLog()
        {
            HashSet <GitLog> logs = GitLog.SinceVersion("c:\\src\\Bam.Net", 1, 4, 2);

            foreach (GitLog log in logs)
            {
                OutLine(log.PropertiesToString(), ConsoleColor.Cyan);
            }
        }
Exemplo n.º 2
0
        public void CreateCommitLog()
        {
            var gitLog = new GitLog
            {
                CommitMessage  = CreateCommitMessage(),
                CurrentCommit  = CurrentCommit,
                GitEmail       = UserEmail,
                GitUser        = UserName,
                PreviousCommit = PreviousCommit,
                TimeStamp      = TimeStamp
            };

            GitLog.Add(gitLog);
        }
        public TrivialDependencyResolver()
        {
            string root          = HostingEnvironment.ApplicationPhysicalPath;
            string benchmarkData = Path.Combine(root, "benchmarkdata");

            /*
             * repositoryWatcher = new FileWatchingReloader<BenchmarkRepository>(
             *  Path.Combine(benchmarkData, "index.txt"),
             *  () => BenchmarkRepository.Load(benchmarkData),
             *  ReloadTime);*/
            repositoryWatcher = new FileWatchingReloader <BenchmarkRepository>(
                Path.Combine(benchmarkData, "benchmarks.xml"),
                () => BenchmarkRepository.LoadSingleFile(Path.Combine(benchmarkData, "benchmarks.xml")),
                ReloadTime);
            string hgLogFile  = Path.Combine(root, "hg-log.xml");
            string gitLogFile = Path.Combine(root, "git-log.txt");
            var    hgWatcher  = new FileWatchingReloader <ImmutableList <SourceLogEntry> >(hgLogFile, () => MercurialLog.Load(hgLogFile), ReloadTime);
            var    gitWatcher = new FileWatchingReloader <ImmutableList <SourceLogEntry> >(gitLogFile, () => GitLog.Load(gitLogFile), ReloadTime);

            logWatcher = new CombiningReloader <ImmutableList <SourceLogEntry> >(new[] { hgWatcher, gitWatcher }.ToImmutableList(), logs => logs.SelectMany(x => x).OrderByDescending(x => x.Date).ToImmutableList());
        }
Exemplo n.º 4
0
        public void Configure(IApplicationBuilder app, ILoggerFactory logger)
        {
            logger.AddConsole();

            app.UseMvcWithDefaultRoute();

            var serviceScope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope();
            var Config       = serviceScope.ServiceProvider.GetRequiredService <IConfiguration>();

            PullTimer = new Timer((t) =>
            {
                if (IsPulling || Queue.Count == 0)
                {
                    return;
                }
                IsPulling = true;
                var task  = Queue.Dequeue();
                Task.Factory.StartNew(async() =>
                {
                    try
                    {
                        Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] Analyzing {task.Id}.");
                        var path = Config["Pool"] + task.Id;
                        if (!Directory.Exists(path))
                        {
                            Directory.CreateDirectory(path);
                        }
                        var logs    = GitLog.CloneAndGetLogs(task.Source, path);
                        var json    = JsonConvert.SerializeObject(logs);
                        var client  = new HttpClient();
                        long length = 0;
                        foreach (var f in Directory.GetFiles(path, "*", SearchOption.AllDirectories))
                        {
                            var fi  = new FileInfo(f);
                            length += fi.Length;
                        }
                        Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] Pushing {task.Id}.");
                        using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))
                        {
                            var content = new MultipartFormDataContent();
                            content.Add(new StringContent(task.Id), "id");
                            content.Add(new StringContent(Config["Key"]), "key");
                            content.Add(new StringContent((length / 1024.0 / 1024.0).ToString()), "size");
                            content.Add(new StreamContent(stream), "json", "logs.json");
                            var result = await client.PostAsync(Config["Api"] + "/PushLogs", content);
                            if (result.StatusCode != System.Net.HttpStatusCode.OK)
                            {
                                Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] Failed: {task.Id}");
                            }
                            else
                            {
                                Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] Pushed: {await result.Content.ReadAsStringAsync()}");
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                    }
                    IsPulling = false;
                });
            }, null, 0, 5000);
        }
        /// <summary>
        /// TypeObjectのGitログを取得する
        /// </summary>
        private void GitLogTypeObject(Object typeObject, System.Action <string> onComplete, System.Action onError)
        {
            var dataPath  = Application.dataPath;
            var assetPath = AssetDatabase.GetAssetPath(typeObject).Replace("Assets/", "");
            var arguments = string.Format("-C {0} log -n 1 --date=iso {1} -- {2}", dataPath, GitLog.JsonFormat(), assetPath);

            try
            {
                // process経由でgitコマンドを実行する
                var process = new System.Diagnostics.Process();
                process.StartInfo.FileName               = "git";
                process.StartInfo.Arguments              = arguments;
                process.StartInfo.UseShellExecute        = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardInput  = false;
                process.StartInfo.CreateNoWindow         = true;
                process.Start();

                var json = process.StandardOutput.ReadToEnd();
                if (string.IsNullOrEmpty(json))
                {
                    onError?.Invoke();
                }
                else
                {
                    onComplete?.Invoke(json);
                }

                process.WaitForExit();
                process.Close();
            }
            catch
            {
                onError?.Invoke();
            }
        }
Exemplo n.º 6
0
        public static void Main(string[] args)
        {
            //var ext = new List<Extension>();
            //ext.Add(new Extension { Id = ".js", Technology = "JavaScript", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".cs", Technology = "C#.Net", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".vb", Technology = "Visual Basic", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".fs", Technology = "F#.Net", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".java", Technology = "Java", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".sh", Technology = "Unix Shell", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".cmd", Technology = "Windows Shell", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".ps1", Technology = "Power Shell", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".html", Technology = "HTML", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".less", Technology = "LESS", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".sass", Technology = "SASS", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".ts", Technology = "Type Script", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".as", Technology = "Action Script", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".c", Technology = "C", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".h", Technology = "C", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".cpp", Technology = "C++", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".hpp", Technology = "C++", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".swift", Technology = "Swift", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".m", Technology = "Objective C", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".py", Technology = "Python", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".rb", Technology = "Ruby", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".json", Technology = "JSON", Type = TechnologyType.序列化格式 });
            //ext.Add(new Extension { Id = ".xml", Technology = "XML", Type = TechnologyType.序列化格式 });
            //ext.Add(new Extension { Id = ".txt", Technology = "文本文档", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".rtf", Technology = "超文本文档", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".png", Technology = "图片", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".jpg", Technology = "图片", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".bmp", Technology = "图片", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".gif", Technology = "图片", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".svg", Technology = "图片", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".tiff", Technology = "图片", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".mp3", Technology = "音频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".wav", Technology = "音频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".m4a", Technology = "音频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".wma", Technology = "音频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".aiff", Technology = "音频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".wmv", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".avi", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".flv", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".mp4", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".mov", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".wmv", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".m4v", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".rm", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".rmvb", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".mpeg", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".3gp", Technology = "视频", Type = TechnologyType.其他 });
            //ext.Add(new Extension { Id = ".asp", Technology = "Active Server Page", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".aspx", Technology = "ASP.Net (Web Form)", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".jsp", Technology = "Java Server Page", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".cshtml", Technology = "ASP.Net C# (Razor)", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".vbhtml", Technology = "ASP.Net VB (Razor)", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".jshtml", Technology = "jFlick (Razor)", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".ejs", Technology = "Express JS (EJS)", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".jade", Technology = "Express JS (Jade)", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".vbs", Technology = "Visual Basic Script", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".rdata", Technology = "R Language", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".php", Technology = "PHP", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".perl", Technology = "Perl", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".asm", Technology = "Assembly Language", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".pas", Technology = "Pascal / Delphi", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".groovy", Technology = "Groovy", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".d", Technology = "D Language", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".mdb", Technology = "Access", Type = TechnologyType.数据库 });
            //ext.Add(new Extension { Id = ".mdf", Technology = "SQL Server", Type = TechnologyType.数据库 });
            //ext.Add(new Extension { Id = ".accdb", Technology = "Access 2008", Type = TechnologyType.数据库 });
            //ext.Add(new Extension { Id = ".db", Technology = "SQLite", Type = TechnologyType.数据库 });
            //ext.Add(new Extension { Id = ".sqlite", Technology = "SQLite", Type = TechnologyType.数据库 });
            //ext.Add(new Extension { Id = ".e", Technology = "易语言", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".shtml", Technology = "Server Parsed HTML", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".xcodeproj", Technology = "X Code", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".sln", Technology = "Visual Studio", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".vbp", Technology = "Visual Basic 6.0", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".vbproj", Technology = "Visual Studio", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".csproj", Technology = "Visual Studio", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".xproj", Technology = "ASP.Net Core 1.0", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".xaml", Technology = "Windows Presentation Foundation", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".axml", Technology = "Android Layout", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".storyboard", Technology = "Apple Storyboard", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".jsproj", Technology = "Cordova", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".frm", Technology = "Windows Form", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".coffee", Technology = "Coffee Script", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".f", Technology = "Fortran", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".for", Technology = "Fortran", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".sql", Technology = "SQL Script", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".lsp", Technology = "Lisp", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".lua", Technology = "Lua", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".go", Technology = "Go", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".dart", Technology = "Dart", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".ceylon", Technology = "Ceylon", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".md", Technology = "Markdown", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".fan", Technology = "Fantom", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".hx", Technology = "Haxe", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".ml", Technology = "OCaml", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".opa", Technology = "OPA", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".chpl", Technology = "Chapel", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".tex", Technology = "Tex", Type = TechnologyType.编程语言 });
            //ext.Add(new Extension { Id = ".psd", Technology = "Photoshop", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".swf", Technology = "Adobe Flash", Type = TechnologyType.工具或框架 });
            //ext.Add(new Extension { Id = ".ai", Technology = "Adobe Illustrator", Type = TechnologyType.工具或框架 });
            //var tmp = ext.GroupBy(x => x.Id)
            //    .Select(x => new { Id = x.Key, Count = x.Count() })
            //    .Where(x => x.Count > 1)
            //    .ToList();
            //foreach(var x in tmp)
            //    Console.WriteLine(x.Id);
            //Console.ReadKey();
            var logs = GitLog.CloneAndGetLogs("https://github.com/Kagamine/EasySense.git", @"c:\projects\test\");

            Console.WriteLine("Finished");
            Console.Read();
        }