mirror of
https://github.com/zhigang1992/create-react-app.git
synced 2026-04-24 05:05:53 +08:00
Fix git init race condition (#3877)
This commit is contained in:
38
packages/react-scripts/scripts/init.js
vendored
38
packages/react-scripts/scripts/init.js
vendored
@@ -40,7 +40,7 @@ function insideMercurialRepository() {
|
||||
}
|
||||
}
|
||||
|
||||
function gitInit() {
|
||||
function tryGitInit() {
|
||||
try {
|
||||
execSync('git --version', { stdio: 'ignore' });
|
||||
|
||||
@@ -114,23 +114,22 @@ module.exports = function(
|
||||
|
||||
// Rename gitignore after the fact to prevent npm from renaming it to .npmignore
|
||||
// See: https://github.com/npm/npm/issues/1862
|
||||
fs.move(
|
||||
path.join(appPath, 'gitignore'),
|
||||
path.join(appPath, '.gitignore'),
|
||||
[],
|
||||
err => {
|
||||
if (err) {
|
||||
// Append if there's already a `.gitignore` file there
|
||||
if (err.code === 'EEXIST') {
|
||||
const data = fs.readFileSync(path.join(appPath, 'gitignore'));
|
||||
fs.appendFileSync(path.join(appPath, '.gitignore'), data);
|
||||
fs.unlinkSync(path.join(appPath, 'gitignore'));
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
try {
|
||||
fs.moveSync(
|
||||
path.join(appPath, 'gitignore'),
|
||||
path.join(appPath, '.gitignore'),
|
||||
[]
|
||||
);
|
||||
} catch (err) {
|
||||
// Append if there's already a `.gitignore` file there
|
||||
if (err.code === 'EEXIST') {
|
||||
const data = fs.readFileSync(path.join(appPath, 'gitignore'));
|
||||
fs.appendFileSync(path.join(appPath, '.gitignore'), data);
|
||||
fs.unlinkSync(path.join(appPath, 'gitignore'));
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
let command;
|
||||
let args;
|
||||
@@ -173,8 +172,9 @@ module.exports = function(
|
||||
}
|
||||
}
|
||||
|
||||
if (gitInit()) {
|
||||
console.log('Initialized git repository');
|
||||
if (tryGitInit()) {
|
||||
console.log();
|
||||
console.log('Initialized a git repository.');
|
||||
}
|
||||
|
||||
// Display the most elegant way to cd.
|
||||
|
||||
Reference in New Issue
Block a user