Skip to content

Commit

Permalink
Auto merge of #4342 - sid0:hgignore, r=alexcrichton
Browse files Browse the repository at this point in the history
new: fix hgignore for real

There was an attempt to fix hgignore in #4158, but unfortunately the fix
was incorrect -- hgignore glob syntax is not in fact identical to
gitignore syntax.

To get rooted ignores in Mercurial we must use the regex-based syntax,
so we have no choice but to define a separate set of ignores.
  • Loading branch information
bors committed Jul 31, 2017
2 parents ffc3419 + bef1f47 commit 6b18b35
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/cargo/ops/cargo_new.rs
Original file line number Diff line number Diff line change
Expand Up @@ -390,9 +390,16 @@ fn mk(config: &Config, opts: &MkOptions) -> CargoResult<()> {
let path = opts.path;
let name = opts.name;
let cfg = global_config(config)?;
// Please ensure that ignore and hgignore are in sync.
let ignore = ["/target/\n", "**/*.rs.bk\n",
if !opts.bin { "Cargo.lock\n" } else { "" }]
.concat();
// Mercurial glob ignores can't be rooted, so just sticking a 'syntax: glob' at the top of the
// file will exclude too much. Instead, use regexp-based ignores. See 'hg help ignore' for
// more.
let hgignore = ["^target/\n", "glob:*.rs.bk\n",
if !opts.bin { "glob:Cargo.lock\n" } else { "" }]
.concat();

let in_existing_vcs_repo = existing_vcs_repo(path.parent().unwrap(), config.cwd());
let vcs = match (opts.version_control, cfg.version_control, in_existing_vcs_repo) {
Expand All @@ -412,8 +419,7 @@ fn mk(config: &Config, opts: &MkOptions) -> CargoResult<()> {
if !fs::metadata(&path.join(".hg")).is_ok() {
HgRepo::init(path, config.cwd())?;
}
let ignore = format!("syntax: glob\n{}", ignore);
paths::append(&path.join(".hgignore"), ignore.as_bytes())?;
paths::append(&path.join(".hgignore"), hgignore.as_bytes())?;
},
VersionControl::Pijul => {
if !fs::metadata(&path.join(".pijul")).is_ok() {
Expand Down

0 comments on commit 6b18b35

Please sign in to comment.