你好,stackoverflow社区,
我正在使用java和jgit创建一个工具,它可以浏览所有本地git更改并决定代码级别(而不是文件级别!)哪些更改应添加到暂存区,然后提交。最后,一种形式的自动化“git add--patch”。
我设法得到了所有本地更改的列表(aka hunks,type hunkheader)。有了这个,我可以决定,哪些单独的大块头(类型编辑)将被添加到暂存区。
在jgit中,通过命令“git.add()”添加更改,但这只允许添加整个文件;不是代码部分。
我的问题是:
有了jgit,我怎样才能把特定的大块头(类型编辑)添加到暂存区?
我当前的示例实现:
// treeIterator of workspace
AbstractTreeIterator treeIteratorWorkspace = new FileTreeIterator( git.getRepository() );
// treeIterator of staging area
AbstractTreeIterator treeIteratorStagingArea = new DirCacheIterator( git.getRepository().readDirCache() );
DiffFormatter diffFormatter = new DiffFormatter( DisabledOutputStream.INSTANCE );
diffFormatter.setRepository( git.getRepository() );
diffFormatter.setContext( 0 );
List<DiffEntry> entries = diffFormatter.scan( treeIteratorStagingArea, treeIteratorWorkspace );
// Iterate changed files
for( DiffEntry entry : entries ) {
System.out.println( "DiffEntry: " +entry );
FileHeader fileHeader = diffFormatter.toFileHeader( entry );
List<? extends HunkHeader> hunks = fileHeader.getHunks();
for( HunkHeader hunk : hunks ) {
System.out.println("HunkHeader: " +hunk);
EditList editList = hunk.toEditList();
for (Edit edit : editList) {
/**
* PICK HUNK AND ADD TO STAGING AREA
*/
}
}
}
使用的jgit版本:
<!-- https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.9.0.202009080501-r</version>
</dependency>
谢谢你的帮助!
暂无答案!
目前还没有任何答案,快来回答吧!