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); } }
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()); }
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(); } }
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(); }