Xvc Devlog - 221107
🐇 Welcome to November 7th issue of Xvc Devlog. In the previous devlog we began to implement Git integration. How does it going Mr Tortoise?
🐢 It looks we don't have much architectural problems.
🐇 You're forgetting how
Exec::cmd works, though. You have that kind of problems.
🐢 Yeah, I'm figuring that out.
Exec::shell requires a string to run on the shell,
Exec::cmd just needs a command name. You have to supply
args with another function. I'm writing to handle a closure now to handle this.
🐢 It began to work but revealed a much bigger problem.
.xvc/ is not added to
🐇 Wow, that's a showstopper.
🐢 Yup. I think I should fix it as well.
🐇 On a closer glance, I think the problem is not
xvc init not modifying
.gitignore, it modifies it incorrectly. Maybe putting certain files to whitelist is a better idea than trying to blacklist all.
🐢 Yeah, we should define a set of Git tracked files and directories, whitelist them and let all other files ignored.
🐇 Go ahead, now.
🐢 I think I've fixed it. There were two problems. Initial gitignore content was wrong, and it was put into the root of repository instead of
🐇 Maybe putting it really into the root is better than to hide it in
🐢 There seems to be an assumption in
file track to have a
.gitignore file somewhere. I think we also should handle the changes in
.gitignore files in the repository.
🐇 Umm, yes. We should handle
.gitignores as well. But not all
.gitignores are changed by Xvc. How can we make sure that they are modified by Xvc?
🐢 I think there are ways to do that, like tracking them somewhere. But I believe we shouldn't try. We should just a list of
git add them and include in the commit.
🐇 Ok. Let's write a test for this as well. No
git status -s.
🐢 Wrote the test. It fails now. Do you think we should check output of Git status to determine the files to add?
🐇 That may be a good idea. Git status should already know which files need to be added. We can use that information.
🐢 It looks
pathspec is enough to modify
git add behavior. We should be able to write
*.gitignore and let all gitignore files be added.
🐇 Let's try this manually.
🐢 Yep, it works.
git add '*.gitignore' adds all
.gitignore files in the subdirectories, too.
🐇 Congrats. 👏🥳
🐢 I'm writing missing documentation for the crates. There are
proc_macro not expanded errors all over the code.
🐇 I think you should update rust-analyzer and stuff. There must be a command for this.
🐢 I reinstalled RA with
:LspInstall and restarted LSP. It seems to work correctly now.