Keyboard shortcuts

Press โ† or โ†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Xvc Devlog - 221107

devlog Software Development #xvc #architecture #shell #git #gitignore #rust-analyzer #LSP

๐Ÿ‡ Welcome to the November 7th issue of Xvc Devlog. In the previous devlog, we began to implement Git integration. How is it going, Mr. Tortoise?

๐Ÿข It looks like we donโ€™t have many architectural problems.

๐Ÿ‡ Youโ€™re forgetting how Exec::cmd works, though. You have those kinds of problems.

๐Ÿข Yeah, Iโ€™m figuring that out. Exec::shell requires a string to run on the shell, while Exec::cmd just needs a command name. You have to supply args with another function. Iโ€™m writing a closure now to handle this.


๐Ÿข It started working, but it 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 closer glance, I think the problem is not xvc init not modifying .gitignore; it modifies it incorrectly. Maybe putting certain files on a whitelist is a better idea than trying to blacklist everything.

๐Ÿข Yeah, we should define a set of Git-tracked files and directories, whitelist them, and let all other files be ignored.

๐Ÿ‡ Go ahead, then.

๐Ÿข I think Iโ€™ve fixed it. There were two problems: the initial gitignore content was wrong, and it was placed in the root of the repository instead of .xvc.

๐Ÿ‡ Maybe putting it directly in the root is better than hiding it in .xvc. What do you think?

๐Ÿข There seems to be an assumption in file track to have a .gitignore file somewhere. I think we should also handle changes in .gitignore files throughout the repository.

๐Ÿ‡ Umm, yes. We should handle .gitignore files as well. But not all .gitignore files are changed by Xvc. How can we make sure they were 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 get a list of .gitignore files, git add them, and include them in the commit.

๐Ÿ‡ Ok. Letโ€™s write a test for this as well. No .gitignore should appear in git status -s.

๐Ÿข I wrote the test. It fails now. Do you think we should check the output of Git status to determine which 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 like 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 the missing documentation for the crates. There are proc_macro not expanded errors all over the code.

๐Ÿ‡ I think you should update rust-analyzer and everything. There must be a command for this.

๐Ÿข I reinstalled RA with :LspInstall and restarted the LSP. It seems to work correctly now.