Как установить время коммита с JGit? - PullRequest
0 голосов
/ 03 июля 2018

Есть ли способ установить время фиксации с помощью JGit?

Я пролистал API и обнаружил, что это можно сделать только путем изменения локального системного времени. Я хочу реализовать это через код. И может нормально работать в системе win.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

В Windows системное время можно установить, выполнив команду «date MM-dd-yy» из командной строки и «Administrator».

Фрагмент Java для Windows

 //Set the Date 
 SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yy");  
 String setDate = "cmd /C date "+sdf.format(dateToSet);  
 Process dateProc = Runtime.getRuntime().exec(setDate);  
 dateProc.waitFor();//Might take a couple of seconds

 //Set the Time  
 SimpleDateFormat stf = new SimpleDateFormat("HH:mm:ss");  
 String setTime = "cmd /C time "+stf.format(dateToSet);  
 Process timeProc = Runtime.getRuntime().exec(setTime);  
 timeProc.waitFor();//Might take a couple of seconds  

Эта команда может быть выполнена только как администратор. Поэтому вы должны запустить Java-код с правами администратора.

0 голосов
/ 03 июля 2018

Временная метка для фиксации может быть установлена ​​с помощью CommitCommand. Обратите внимание, что имя, адрес электронной почты и отметка времени должны указываться вместе с объектом PersonIdent.

Например:

Date date = ...
PersonIdent defaultCommitter = new PersonIdent(git.getRepository());
PersonIdent committer = new PersonIdent(defaultCommitter, date);
git.commit().setMessage("Commit with time").setCommitter(committer).call();

defaultCommitter содержит имя и адрес электронной почты, как определено в git config, отметка времени - текущее системное время. Со вторым конструктором PersonIdent имя и адрес электронной почты берутся из defaultCommitter, а отметка времени переопределяется на date.

...