Posted on :: Tags: , , , , , ,

πŸ‡ 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 .gitignore in xvc init.

πŸ‡ 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 .xvc.

πŸ‡ Maybe putting it really into the root is better than to hide it in .xvc. WDYT?

🐒 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 .gitignore files, git add them and include in the commit.

πŸ‡ Ok. Let’s write a test for this as well. No .gitignore in 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.