c# - GIT:修改文件并以相同的日期/时间提交

标签 c# git libgit2sharp

提交一个内容不同但日期/时间相同的文件似乎并不容易。

以下情况:

  • 创建一个 git 仓库
  • 添加一个文件“foo.bar”,定义日期/时间 fpr creating/lastwrite(例如 2015-01-01 00:00:00)
  • 提交这个文件
  • 修改“foo.bar”内容并将日期/时间再次设置为相同的值
  • 调用“git status”=> 没有什么可提交的,工作目录干净
  • 调用“git commit”=> 没有变化;没有什么可 promise 的

我怎样才能强制提交!?

这是使用 libGit2Sharp 的重现代码:

using System.IO;
using LibGit2Sharp;
using System;
namespace GitWorkingUpdateProblem01
{
  class Program
  {
    static void Main(string[] args)
    {
      const string repoDir = @".\git-Test";
      Repository.Init(repoDir);
      using (var repo = new Repository(repoDir))
      {
        string fileName = Path.Combine(repo.Info.WorkingDirectory, "foo.bar");
        var dt = new DateTime(2015, 01, 01, 00, 00, 00);
        using (var sw = new StreamWriter(fileName, false))
        {
          sw.WriteLine("UNIQUE-TEXT-1234");
        }
        File.SetLastWriteTime(fileName, dt); File.SetCreationTime(fileName, dt);

        repo.Stage(fileName); repo.Commit("1");

        using (var sw = new StreamWriter(fileName, false))
        {
          sw.WriteLine("UNIQUE-TEXT-4321");
        }
        File.SetLastWriteTime(fileName, dt); File.SetCreationTime(fileName, dt);

        repo.Stage(fileName); repo.Commit("2"); // ==> THROWS: No changes; nothing to commit.
      }
    }
  }
}

最佳答案

即使没有 libgit2sharp(使用 TortoiseGit 和 msysgit),我也可以重现它。

这是一个已知问题:
https://github.com/msysgit/git/issues/312
https://groups.google.com/forum/#!topic/git-users/Uo9TDppHTSI

我能够通过运行让它检测变化: git read-tree HEAD 在控制台中。如果您的库允许您运行此(或任意)命令 - 它也可能会有所帮助。

无论如何,这是故意与 git 作斗争的东西,所以我建议尽可能不要手动更改 ModifiedDate

关于c# - GIT:修改文件并以相同的日期/时间提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913197/

相关文章:

c# - 从控制台运行参数化测试

c# - 当文件上传到 azure 文件共享时,如何添加触发器以将文件从 azure 文件共享移动到 azure blob?

git - 如何在 gitlab 上更改提交作者?

c# - 使用 LibGit2Sharp 暂存未跟踪文件时,Commands.Stage() 不会增加 Staged.Count

git - C# 从 Azure 应用服务将文件推送到 Bitbucket 存储库?

c# - 是否可以模拟 .NET HttpWebResponse?

git - 如何获取所有默认 git 配置选项的列表

Git 交互式 unstage 文件的一部分或由 hunks

c# - 有没有办法使用 libgit2sharp 恢复单个文件?

c# - 从 appsettings.json 获取未命名的 json 元组数组