diff --git a/__fixtures__/root-manifest-only/.gitignore b/__fixtures__/root-manifest-only/.gitignore new file mode 100644 index 0000000000..397b4a7624 --- /dev/null +++ b/__fixtures__/root-manifest-only/.gitignore @@ -0,0 +1 @@ +*.log diff --git a/commands/publish/__tests__/__fixtures__/no-interdependencies/.gitignore b/commands/publish/__tests__/__fixtures__/no-interdependencies/.gitignore new file mode 100644 index 0000000000..397b4a7624 --- /dev/null +++ b/commands/publish/__tests__/__fixtures__/no-interdependencies/.gitignore @@ -0,0 +1 @@ +*.log diff --git a/commands/publish/__tests__/git-checkout.test.js b/commands/publish/__tests__/git-checkout.test.js index 52a3e46b66..2a775150a9 100644 --- a/commands/publish/__tests__/git-checkout.test.js +++ b/commands/publish/__tests__/git-checkout.test.js @@ -16,3 +16,15 @@ test("gitCheckout files", async () => { const modified = await execa.stdout("git", ["ls-files", "--modified"], { cwd }); expect(modified).toBe(""); }); + +test("gitCheckout files with .gitignored files", async () => { + const cwd = await initFixture("no-interdependencies"); + const files = ["package-1", "package-2"].map(name => path.join("packages", name, "package.json")); + files.push("packages/package-1/index.log"); + + await Promise.all(files.map(fp => fs.writeJSON(path.join(cwd, fp), { foo: "bar" }))); + await gitCheckout(files, { cwd }); + + const modified = await execa.stdout("git", ["ls-files", "--modified"], { cwd }); + expect(modified).toBe(""); +}); diff --git a/commands/publish/lib/git-checkout.js b/commands/publish/lib/git-checkout.js index 2c9f1700b4..7726c38054 100644 --- a/commands/publish/lib/git-checkout.js +++ b/commands/publish/lib/git-checkout.js @@ -8,5 +8,5 @@ module.exports = gitCheckout; function gitCheckout(files, opts) { log.silly("gitCheckout", files); - return childProcess.exec("git", ["checkout", "--"].concat(files), opts); + return childProcess.exec("git", ["checkout", "--", "."], opts); } diff --git a/commands/version/__tests__/git-add.test.js b/commands/version/__tests__/git-add.test.js index baf4978704..4562d19d2d 100644 --- a/commands/version/__tests__/git-add.test.js +++ b/commands/version/__tests__/git-add.test.js @@ -28,3 +28,29 @@ test("absolute files", async () => { const list = await execa.stdout("git", ["diff", "--cached", "--name-only"], { cwd }); expect(slash(list)).toBe("packages/pkg-2/index.js"); }); + +test(".gitignore", async () => { + const cwd = await initFixture("root-manifest-only"); + const file = path.join(cwd, "packages", "pkg-2", "index.log"); + const file2 = path.join(cwd, "packages", "pkg-2", "index.js"); + + await fs.outputFile(file, "hello"); + await fs.outputFile(file2, "hello2"); + await gitAdd([file, file2], { cwd }); + + const list = await execa.stdout("git", ["diff", "--cached", "--name-only"], { cwd }); + expect(slash(list)).toBe("packages/pkg-2/index.js"); +}); + +test(".gitignore without naming files", async () => { + const cwd = await initFixture("root-manifest-only"); + const file = path.join(cwd, "packages", "pkg-2", "index.log"); + const file2 = path.join(cwd, "packages", "pkg-2", "index.js"); + + await fs.outputFile(file, "hello"); + await fs.outputFile(file2, "hello2"); + await gitAdd([], { cwd }); + + const list = await execa.stdout("git", ["diff", "--cached", "--name-only"], { cwd }); + expect(slash(list)).toBe("packages/pkg-2/index.js"); +}); diff --git a/commands/version/lib/git-add.js b/commands/version/lib/git-add.js index 1180890cbc..df2d451bea 100644 --- a/commands/version/lib/git-add.js +++ b/commands/version/lib/git-add.js @@ -1,8 +1,6 @@ "use strict"; const log = require("npmlog"); -const path = require("path"); -const slash = require("slash"); const childProcess = require("@lerna/child-process"); module.exports = gitAdd; @@ -10,7 +8,5 @@ module.exports = gitAdd; function gitAdd(files, opts) { log.silly("gitAdd", files); - const filePaths = files.map(file => slash(path.relative(opts.cwd, path.resolve(opts.cwd, file)))); - - return childProcess.exec("git", ["add", "--", ...filePaths], opts); + return childProcess.exec("git", ["add", "--", "."], opts); }