rust Cargo项目中的哪些文件应该在我的.gitignore中?

4si2a6ki  于 2023-10-20  发布在  Go
关注(0)|答案(2)|浏览(179)

我使用cargo new创建了一个“hello world”Rust应用程序。当我执行git status时,它显示了一堆文件:

A  rust/welcomec/Cargo.lock
A  rust/welcomec/Cargo.toml
A  rust/welcomec/src/main.rs
A  rust/welcomec/target/debug/.cargo-lock
A  rust/welcomec/target/debug/.fingerprint/welcomec-2d68725c8fae6fd1/bin-welcome-2d68725c8fae6fd1
A  rust/welcomec/target/debug/.fingerprint/welcomec-2d68725c8fae6fd1/bin-welcome-2d68725c8fae6fd1.json
A  rust/welcomec/target/debug/.fingerprint/welcomec-2d68725c8fae6fd1/dep-bin-welcome-2d68725c8fae6fd1
A  rust/welcomec/target/debug/deps/welcome-2d68725c8fae6fd1
A  rust/welcomec/target/debug/welcome
A  rust/welcomec/target/debug/welcome.d

我可以安全地忽略这些文件和/或目录吗?

svujldwt

svujldwt1#

摘要

.gitignore用于可执行文件箱

# Generated files
/target/

.gitignore用于库箱

# Generated files
/target/

# Well, this depends... See below!
Cargo.lock

详情

您可以始终完全忽略target/文件夹。它只包含生成的文件(例如,编译工件),并且通常也相当大。
如果你正在开发一个可执行的程序,那就已经是了!只有一个入口。
对于库项目,您可能还希望忽略Cargo.lock。但这有点微妙。官方对此事的立场was changed recentlyCargo.lock支持可重现的构建,因为它记录了所有依赖项的确切版本。这是非常有用。对于可执行文件,你绝对需要那些可复制的构建,因此上面的建议。
重要的是要明白,如果一个项目使用你的库,你的Cargo.lock将被忽略!Cargo只关心依赖项的Cargo.toml。所以Cargo.lock是否在您的存储库中基本上只与您的库开发有关。

  • 一方面,您应该始终使用所有依赖项的最新版本来测试库。这是一个反对Cargo.lock的论点。
  • 另一方面,Cargo.lock为您提供了与其他项目相同的好处:可复制的构建意味着稳定的CI,更容易平分,等等。

最后,你决定。但请放心:你不能真的搞砸了无论哪种方式通常都很好。
注意:cargo new应该已经为您创建了一个适当的.gitignore文件。

c7rzv4ha

c7rzv4ha2#

你可以从GitHub's gitignore for Rust中获得一些灵感。在撰写本文时,文件如下:

# Generated by Cargo
# will have compiled files and executables
debug/
target/

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

相关问题