Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55be0ba2b1 | ||
|
|
ec516a34bf | ||
|
|
5f89e6bfc0 | ||
|
|
195e5b18c7 | ||
|
|
e7bede1866 | ||
|
|
8426b4203e | ||
|
|
804fc2a943 | ||
|
|
389e3316e9 | ||
|
|
a93c96fec9 | ||
|
|
68f7e928f9 |
@@ -54,3 +54,16 @@ $ git branch --contains <tag name>
|
||||
$ git tag -d <tag name>
|
||||
$ git push origin :refs/tags/<tag name>
|
||||
```
|
||||
|
||||
## release not found release branch after `git push --force`
|
||||
|
||||
**semantic-release** is using both [git tags](https://git-scm.com/docs/git-tag) and [git notes](https://git-scm.com/docs/git-notes) to store information about which releases happened in which branch.
|
||||
|
||||
After a git history rewrite due to a `git push --force`, the git tags and notes referencing the commits that were rewritten are lost.
|
||||
|
||||
To recover from that situation, do the following:
|
||||
|
||||
1. Delete the tag(s) for the release(s) that have been lost from the git history. You can delete each tag from remote using `git push origin :[TAG NAME]`, e.g. `git push origin :v2.0.0-beta.1`. You can delete tags locally using `git tag -d [TAG NAME]`, e.g. `git tag -d v2.0.0-beta.1`.
|
||||
2. Re-create the tags locally: `git tag [TAG NAME] [COMMIT HASH]`, where `[COMMIT HASH]` is the new commit that created the release for the lost tag. E.g. `git tag v2.0.0-beta.1 abcdef0`
|
||||
3. Re-create the git notes for each release tag, e.g. `git notes --ref semantic-release add -f -m '{"channels":["beta"]}' v3.0.0-beta.1`. If the release was also published in the default channel (usually `master`), then set the first channel to `null`, e.g. `git notes --ref semantic-release add -f -m '{"channels":[null, "beta"]}'
|
||||
4. Push the local notes: `git push --force origin refs/notes/semantic-release`. The `--force` is needed after the rebase. Be careful.
|
||||
|
||||
@@ -38,7 +38,7 @@ The following three examples are the same.
|
||||
|
||||
- Via CLI argument:
|
||||
```bash
|
||||
$ semantic-release --branch next
|
||||
$ semantic-release --branches next
|
||||
```
|
||||
|
||||
**Note**: CLI arguments take precedence over options configured in the configuration file.
|
||||
|
||||
@@ -52,7 +52,7 @@ async function run(context, plugins) {
|
||||
// Verify config
|
||||
await verify(context);
|
||||
|
||||
options.repositoryUrl = await getGitAuthUrl(context);
|
||||
options.repositoryUrl = await getGitAuthUrl({...context, branch: {name: ciBranch}});
|
||||
context.branches = await getBranches(options.repositoryUrl, ciBranch, context);
|
||||
context.branch = context.branches.find(({name}) => name === ciBranch);
|
||||
|
||||
@@ -66,7 +66,9 @@ async function run(context, plugins) {
|
||||
}
|
||||
|
||||
logger[options.dryRun ? 'warn' : 'success'](
|
||||
`Run automated release from branch ${ciBranch}${options.dryRun ? ' in dry-run mode' : ''}`
|
||||
`Run automated release from branch ${ciBranch} on repository ${options.repositoryUrl}${
|
||||
options.dryRun ? ' in dry-run mode' : ''
|
||||
}`
|
||||
);
|
||||
|
||||
try {
|
||||
|
||||
+4
-4
@@ -57,17 +57,17 @@
|
||||
"dockerode": "^3.0.0",
|
||||
"file-url": "^3.0.0",
|
||||
"fs-extra": "^8.0.0",
|
||||
"got": "^10.2.1",
|
||||
"got": "^10.5.2",
|
||||
"js-yaml": "^3.10.0",
|
||||
"mockserver-client": "^5.1.1",
|
||||
"nock": "^11.1.0",
|
||||
"nock": "^12.0.0",
|
||||
"nyc": "^15.0.0",
|
||||
"p-retry": "^4.0.0",
|
||||
"proxyquire": "^2.0.0",
|
||||
"sinon": "^8.0.4",
|
||||
"stream-buffers": "^3.0.2",
|
||||
"tempy": "^0.3.0",
|
||||
"xo": "^0.25.0"
|
||||
"tempy": "^0.4.0",
|
||||
"xo": "^0.26.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.18"
|
||||
|
||||
@@ -82,7 +82,7 @@ test('Get all commits between lastRelease.gitHead and a shas', async t => {
|
||||
|
||||
// Verify the commits created and retrieved by the module are identical
|
||||
t.is(result.length, 1);
|
||||
t.deepEqual(result, commits.slice(1, commits.length - 1));
|
||||
t.deepEqual(result, commits.slice(1, -1));
|
||||
});
|
||||
|
||||
test('Return empty array if lastRelease.gitHead is the last commit', async t => {
|
||||
|
||||
Reference in New Issue
Block a user