mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 19:40:55 +01:00
Document the use of repository commit hints
Summary: Ref T11522. This explains how to actually use `bin/repository hint`. Test Plan: Read the document. Used `bin/repository hint` as directed. Reviewers: chad Reviewed By: chad Maniphest Tasks: T11522 Differential Revision: https://secure.phabricator.com/D16441
This commit is contained in:
parent
be235301d0
commit
ae0cf00a23
1 changed files with 134 additions and 0 deletions
134
src/docs/user/field/repository_hints.diviner
Normal file
134
src/docs/user/field/repository_hints.diviner
Normal file
|
@ -0,0 +1,134 @@
|
|||
@title Repository Hints and Rewriting Commits
|
||||
@group fieldmanual
|
||||
|
||||
Dealing with rewrites of published repositories and other unusual problems.
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Some repositories have unusual commits. You can provide "hints" to Phabricator
|
||||
about these commits to improve behavior.
|
||||
|
||||
Supported hints are:
|
||||
|
||||
- **Rewritten Commits**: If you have rewritten the history of a published
|
||||
repository, you can provide hints about the mapping from old commits to
|
||||
new commits so it can redirect users who visit old pages to the proper
|
||||
new pages.
|
||||
- **Unreadable Commits**: If some commits are not readable (which is rare,
|
||||
but can happen in some cases if they are generated with an external tool)
|
||||
you can provide hints so that Phabricator doesn't try to read them.
|
||||
|
||||
The remainder of this document explains how to create and remove hints, and how
|
||||
to specify each type of hint.
|
||||
|
||||
Creating Hints
|
||||
==============
|
||||
|
||||
To create hints, pipe a JSON list of hints to `bin/repository hint`:
|
||||
|
||||
```
|
||||
phabricator/ $ cat hints.json | ./bin/repository hint
|
||||
```
|
||||
|
||||
The hints should be a list of objects like this:
|
||||
|
||||
```lang=json
|
||||
[
|
||||
...
|
||||
{
|
||||
"repository": "XYZ",
|
||||
"hint": "...",
|
||||
"old": "abcdef1234abcdef1234abcdef1234abcdef1234",
|
||||
"new": "..."
|
||||
}
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
Each hint may have these keys:
|
||||
|
||||
- `repository`: A repository identifier (ID, PHID, callsign or short name).
|
||||
- `hint`: The hint type, see below.
|
||||
- `old`: The full identifier or commit hash of the commit you want to
|
||||
provide a hint for.
|
||||
- `new`: For hints which specify a new commit, the full identifier or commit
|
||||
hash of the new commit.
|
||||
|
||||
See below for exactly how to specify each type of hint.
|
||||
|
||||
|
||||
Removing Hints
|
||||
==============
|
||||
|
||||
To remove a hint, create a hint of type `"none"`. This will remove any existing
|
||||
hint.
|
||||
|
||||
For example, use a hint specification like this:
|
||||
|
||||
```lang=json
|
||||
[
|
||||
{
|
||||
"repository": "XYZ",
|
||||
"hint": "none",
|
||||
"old": "abcdef1234abcdef1234abcdef1234abcdef1234"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Phabricator won't treat commits without any hint specially.
|
||||
|
||||
|
||||
Hint: Rewritten Commits
|
||||
=======================
|
||||
|
||||
The `"rewritten"` hint allows you to redirect old commits to new commits after
|
||||
a rewrite of published history. You should normally avoid rewriting published
|
||||
commits, but sometimes this is necessary: for example, if a repository has
|
||||
become unwieldy because it contains large binaries, you may strip them from
|
||||
history.
|
||||
|
||||
To provide this kind of hint, pass the `"old"` commit hash (from before the
|
||||
rewrite) and the `"new"` commit hash (from after the rewrite).
|
||||
|
||||
For example, a hint might look like this:
|
||||
|
||||
```lang=json
|
||||
[
|
||||
{
|
||||
"repository": "XYZ",
|
||||
"hint": "rewritten",
|
||||
"old": "abcdef1234abcdef1234abcdef1234abcdef1234",
|
||||
"new": "098765ffaabbccdd4680098765ffaabbccdd4680"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Phabricator will show users that the commit was rewritten in the web UI.
|
||||
|
||||
|
||||
Hint: Unreadable Commits
|
||||
========================
|
||||
|
||||
The `"unreadable"` hint allows you to tell Phabricator that it should not
|
||||
bother trying to read the changes associated with a particular commit. In
|
||||
some rare cases, repositories can contain commits which aren't readable
|
||||
(for example, if they were created by external tools during an import or
|
||||
merge process).
|
||||
|
||||
To provide this kind of hint, pass the `"old"` commit which is affected.
|
||||
|
||||
For example, a hint might look like this:
|
||||
|
||||
```lang=json
|
||||
[
|
||||
{
|
||||
"repository": "XYZ",
|
||||
"hint": "unreadable",
|
||||
"old": "abcdef1234abcdef1234abcdef1234abcdef1234"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Phabricator won't try to read, parse, import, or display the changes associated
|
||||
with this commit.
|
Loading…
Reference in a new issue