Package Exports
- parse-git-diff
- parse-git-diff/build/index.module.js
- parse-git-diff/build/index.umd.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (parse-git-diff) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
parse-git-diff
A parser for git diff.
Installation
npm install parse-git-diffDemo
See online demo
Usage
import parseGitDiff from 'parse-git-diff';
const result = parseGitDiff('... git diff ...');
console.log(result);
// {
// "type": "GitDiff",
// "files": [
// {
// "type": "AddedFile",
// "chunks": [
// {
// "type": "Chunk",
// "toFileRange": {
// "start": 1,
// ...
// }Examples
New file diff
Input
diff --git a/newfile.md b/newfile.md
new file mode 100644
index 0000000..aa39060
--- /dev/null
+++ b/newfile.md
@@ -0,0 +1 @@
+newfile
Output
{
"type": "GitDiff",
"files": [
{
"type": "AddedFile",
"chunks": [
{
"type": "Chunk",
"toFileRange": {
"start": 1,
"lines": 1
},
"fromFileRange": {
"start": 0,
"lines": 0
},
"changes": [
{
"type": "AddedLine",
"lineAfter": 1,
"content": "newfile"
}
]
}
],
"path": "newfile.md"
}
]
}Deleted file diff
Input
diff --git a/newfile.md b/newfile.md
deleted file mode 100644
index aa39060..0000000
--- a/newfile.md
+++ /dev/null
@@ -1 +0,0 @@
-newfile
Output
{
"type": "GitDiff",
"files": [
{
"type": "DeletedFile",
"chunks": [
{
"type": "Chunk",
"toFileRange": {
"start": 0,
"lines": 0
},
"fromFileRange": {
"start": 1,
"lines": 1
},
"changes": [
{
"type": "DeletedLine",
"lineBefore": 1,
"content": "newfile"
}
]
}
],
"path": "newfile.md"
}
]
}Renamed file diff
Input
diff --git a/newfile.md b/rename.md
similarity index 100%
rename from newfile.md
rename to rename.md
Output
{
"type": "GitDiff",
"files": [
{
"type": "RenamedFile",
"pathAfter": "rename.md",
"pathBefore": "newfile.md",
"chunks": []
}
]
}Conflict file diff
Input
diff --cc README.md
index 2445f65,f4b8569..0000000
--- a/README.md
+++ b/README.md
@@@ -8,7 -8,7 +8,11 @@@
npm install parse-git-diff
++<<<<<<< HEAD
+## a
++=======
+ ## b
++>>>>>>> branch-b
- [demo](https://yeonjuan.github.io/parse-git-diff/)
Output
{
"type": "GitDiff",
"files": [
{
"type": "ChangedFile",
"chunks": [
{
"type": "CombinedChunk",
"fromFileRangeA": {
"start": 8,
"lines": 7
},
"fromFileRangeB": {
"start": 8,
"lines": 7
},
"toFileRange": {
"start": 8,
"lines": 11
},
"changes": [
{
"type": "UnchangedLine",
"lineBefore": 8,
"lineAfter": 8,
"content": " npm install parse-git-diff"
},
{
"type": "UnchangedLine",
"lineBefore": 9,
"lineAfter": 9,
"content": " "
},
{
"type": "UnchangedLine",
"lineBefore": 10,
"lineAfter": 10,
"content": " "
},
{
"type": "AddedLine",
"lineAfter": 11,
"content": "+<<<<<<< HEAD"
},
{
"type": "UnchangedLine",
"lineBefore": 11,
"lineAfter": 12,
"content": "+## a"
},
{
"type": "AddedLine",
"lineAfter": 13,
"content": "+======="
},
{
"type": "AddedLine",
"lineAfter": 14,
"content": " ## b"
},
{
"type": "AddedLine",
"lineAfter": 15,
"content": "+>>>>>>> branch-b"
},
{
"type": "UnchangedLine",
"lineBefore": 12,
"lineAfter": 16,
"content": " "
},
{
"type": "UnchangedLine",
"lineBefore": 13,
"lineAfter": 17,
"content": " - [demo](https://yeonjuan.github.io/parse-git-diff/)"
},
{
"type": "UnchangedLine",
"lineBefore": 14,
"lineAfter": 18,
"content": " "
},
{
"type": "UnchangedLine",
"lineBefore": 15,
"lineAfter": 19,
"content": " "
}
]
}
],
"path": "README.md"
}
]
}New line file diff
Input
diff --git a/rename.md b/rename.md
index aa39060..0e05564 100644
--- a/rename.md
+++ b/rename.md
@@ -1 +1,2 @@
newfile
+newline
Output
{
"type": "GitDiff",
"files": [
{
"type": "ChangedFile",
"chunks": [
{
"type": "Chunk",
"toFileRange": {
"start": 1,
"lines": 2
},
"fromFileRange": {
"start": 1,
"lines": 1
},
"changes": [
{
"type": "UnchangedLine",
"lineBefore": 1,
"lineAfter": 1,
"content": "newfile"
},
{
"type": "AddedLine",
"lineAfter": 2,
"content": "newline"
}
]
}
],
"path": "rename.md"
}
]
}Deleted line file diff
Input
diff --git a/rename.md b/rename.md
index 0e05564..aa39060 100644
--- a/rename.md
+++ b/rename.md
@@ -1,2 +1 @@
newfile
-newline
Output
{
"type": "GitDiff",
"files": [
{
"type": "ChangedFile",
"chunks": [
{
"type": "Chunk",
"toFileRange": {
"start": 1,
"lines": 1
},
"fromFileRange": {
"start": 1,
"lines": 2
},
"changes": [
{
"type": "UnchangedLine",
"lineBefore": 1,
"lineAfter": 1,
"content": "newfile"
},
{
"type": "DeletedLine",
"lineBefore": 2,
"content": "newline"
}
]
}
],
"path": "rename.md"
}
]
}