@kugel- How well would it work, when:
1. The `parsers` directory is VERY different from upstream and the diff would be giant. 2. We only use the `main` and `parsers` directory from https://github.com/universal-ctags/ctags - we don't use anything else. Now of course we could add all the rest as well, including the tons of unit tests, docs, etc. but I'm not sure it's a good idea.
Now I have no experience with git subtrees so maybe this is solvable somehow. I'm just afraid we'd get huge amount of stuff we don't care about and having to deal with all the diffs and merge conflicts inside `parsers` whenever something changes upstream would make our life much harder.
I thought we are trending towards using upstream as-is, with only small changes needed (including new files).
Well, with git-subtree, syncing to upstream is done by a conventional merge. That means: - Files where we don't make changes always merge fine (for dirs we don't use). - Our changes and upstream changes are merged by git's methods - deletions/renamings can cause tree conflicts which are messy to deal with
If you say that our copy is wildly different and continues to be so then git-subtree may not be perfect. Otherwise we are enabled to sync via a single "git subtree pull <url> <tag>" command and have git handle the merging. Plus we wouldn't need to maintain diffs separately but simply make commits directly to the code.