docs: add documentation to state differences from the git cli
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
diff --git a/docs/differences-from-git-cli.md b/docs/differences-from-git-cli.md
new file mode 100644
index 0000000..46e823a
--- /dev/null
+++ b/docs/differences-from-git-cli.md
@@ -0,0 +1,40 @@
+# Differences from the Git CLI
+
+In some instances, the functionality of libgit2 deviates slightly from that of the Git CLI. This can because of technical limitations when developing a library, licensing limitations when converting functionality from the CLI to libgit2, or various other reasons.
+
+Repository and Workdir Path Reporting
+-------------------------------------
+
+When retrieving the absolute path of a repository from the Git CLI, one could expect the output to lool like so:
+
+```
+$ git rev-parse --absolute-git-dir
+=> /home/user/projects/libgit2/.git
+```
+
+When retrieving the absolute path of a repository from libgit2, one could expect the output to look like:
+
+```
+const char *repo_path = git_repository_path(repo);
+printf(repo_path);
+=> /home/user/projects/libgit2/.git/
+```
+
+Notice the trailing slash. While it would be nice to be able to remove the trailing slash from the `git_repository_path` return value, it is considered a breaking change to do so, and relatively high risk for the benefit.
+
+Retrieving the absolute path to the working directory suffers from the same problem.
+
+Git CLI:
+
+```bash
+$ git worktree list
+=> /home/user/projects/libgit2
+```
+
+libgit2:
+
+```c
+const char *workdir_path = git_repository_workdir(repo);
+printf(workdir_path);
+=> /home/user/projects/libgit2/
+```