Skip to content

Commit cac7306

Browse files
authored
feat: add rebase feature (#146)
1 parent ecc5ce3 commit cac7306

File tree

23 files changed

+2738
-2
lines changed

23 files changed

+2738
-2
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# abort
2+
3+
현재 진행 중인 리베이스를 중단하고 리포지토리와 작업 디렉터리를 리베이스가 시작되기 전 상태로 초기화해요.
4+
5+
## 시그니처
6+
7+
```ts
8+
class Rebase {
9+
abort(): void;
10+
}
11+
```
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# commit
2+
3+
현재 패치를 커밋해요. 리베이스 다음 호출에서 적용된 패치 중에 생긴 충돌을 모두 해결해야 해요.
4+
5+
## 시그니처
6+
7+
```ts
8+
class Rebase {
9+
commit(options: RebaseCommitOptions): string;
10+
}
11+
```
12+
13+
### 파라미터
14+
15+
<ul class="param-ul">
16+
<li class="param-li param-li-root">
17+
<span class="param-name">options</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">RebaseCommitOptions</span>
18+
<br>
19+
<p class="param-description">패치를 커밋하기 위한 옵션이에요.</p>
20+
<ul class="param-ul">
21+
<li class="param-li">
22+
<span class="param-name">author</span><span class="param-type">SignaturePayload</span>
23+
<br>
24+
<p class="param-description">저자의 서명이에요. 원본 커밋에서 저자를 유지하려면 이 항목을 비워 두면 돼요.</p>
25+
<ul class="param-ul">
26+
<li class="param-li">
27+
<span class="param-name">email</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">string</span>
28+
<br>
29+
<p class="param-description">서명에서 이메일이에요.</p>
30+
</li>
31+
<li class="param-li">
32+
<span class="param-name">name</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">string</span>
33+
<br>
34+
<p class="param-description">서명에서 이름이에요.</p>
35+
</li>
36+
<li class="param-li">
37+
<span class="param-name">timeOptions</span><span class="param-type">SignatureTimeOptions</span>
38+
<br>
39+
<ul class="param-ul">
40+
<li class="param-li">
41+
<span class="param-name">offset</span><span class="param-type">number</span>
42+
<br>
43+
<p class="param-description">시간대 오프셋, 분 단위</p>
44+
</li>
45+
<li class="param-li">
46+
<span class="param-name">timestamp</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">number</span>
47+
<br>
48+
<p class="param-description">초 단위, 에포크에서부터의 시간</p>
49+
</li>
50+
</ul>
51+
</li>
52+
</ul>
53+
</li>
54+
<li class="param-li">
55+
<span class="param-name">committer</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">SignaturePayload</span>
56+
<br>
57+
<p class="param-description">커미터의 서명이에요.</p>
58+
<ul class="param-ul">
59+
<li class="param-li">
60+
<span class="param-name">email</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">string</span>
61+
<br>
62+
<p class="param-description">서명에서 이메일이에요.</p>
63+
</li>
64+
<li class="param-li">
65+
<span class="param-name">name</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">string</span>
66+
<br>
67+
<p class="param-description">서명에서 이름이에요.</p>
68+
</li>
69+
<li class="param-li">
70+
<span class="param-name">timeOptions</span><span class="param-type">SignatureTimeOptions</span>
71+
<br>
72+
<ul class="param-ul">
73+
<li class="param-li">
74+
<span class="param-name">offset</span><span class="param-type">number</span>
75+
<br>
76+
<p class="param-description">시간대 오프셋, 분 단위</p>
77+
</li>
78+
<li class="param-li">
79+
<span class="param-name">timestamp</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">number</span>
80+
<br>
81+
<p class="param-description">초 단위, 에포크에서부터의 시간</p>
82+
</li>
83+
</ul>
84+
</li>
85+
</ul>
86+
</li>
87+
<li class="param-li">
88+
<span class="param-name">message</span><span class="param-type">string</span>
89+
<br>
90+
<p class="param-description">원본 커밋에서 메시지를 유지하려면 이 항목을 비워 두면 돼요.</p>
91+
</li>
92+
</ul>
93+
</li>
94+
</ul>
95+
96+
### 반환 값
97+
98+
<ul class="param-ul">
99+
<li class="param-li param-li-root">
100+
<span class="param-type">string</span>
101+
<br>
102+
<p class="param-description">생성된 커밋의 커밋 ID에요.</p>
103+
</li>
104+
</ul>
105+
106+
## 예제
107+
108+
```ts
109+
import { openRepository } from 'es-git';
110+
111+
const repo = await openRepository('.');
112+
const rebase = repo.rebase(...);
113+
const sig = { name: 'Seokju Na', email: 'seokju.me@toss.im' };
114+
for (const op of rebase) {
115+
rebase.commit({ committer: sig });
116+
}
117+
```
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# finish
2+
3+
모든 패치가 적용되면 현재 진행 중인 리베이스를 완료해요.
4+
5+
## 시그니처
6+
7+
```ts
8+
class Rebase {
9+
finish(signature?: SignaturePayload | undefined | null): void;
10+
}
11+
```
12+
13+
### 파라미터
14+
15+
<ul class="param-ul">
16+
<li class="param-li param-li-root">
17+
<span class="param-name">signature</span><span class="param-type">null | SignaturePayload</span>
18+
<br>
19+
<ul class="param-ul">
20+
<li class="param-li">
21+
<span class="param-name">email</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">string</span>
22+
<br>
23+
<p class="param-description">서명에 있는 이메일이에요.</p>
24+
</li>
25+
<li class="param-li">
26+
<span class="param-name">name</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">string</span>
27+
<br>
28+
<p class="param-description">서명에 있는 이름이에요.</p>
29+
</li>
30+
<li class="param-li">
31+
<span class="param-name">timeOptions</span><span class="param-type">SignatureTimeOptions</span>
32+
<br>
33+
<ul class="param-ul">
34+
<li class="param-li">
35+
<span class="param-name">offset</span><span class="param-type">number</span>
36+
<br>
37+
<p class="param-description">시간대 오프셋을 분 단위로 나타내요.</p>
38+
</li>
39+
<li class="param-li">
40+
<span class="param-name">timestamp</span><span class="param-required">필수</span>&nbsp;·&nbsp;<span class="param-type">number</span>
41+
<br>
42+
<p class="param-description">에포크부터 초 단위 시간이에요.</p>
43+
</li>
44+
</ul>
45+
</li>
46+
</ul>
47+
</li>
48+
</ul>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# inmemoryIndex
2+
3+
마지막 작업에 의해 생성된 인덱스를 가져와요. 이 인덱스는 `next()`의 결과이며, 다음에 `commit()`을 호출할 때 커밋될 것입니다. 이는 커밋을 하기 전에 메모리에서 리베이스 중 충돌을 해결하는 데 유용해요.
4+
5+
이것은 메모리 내 리베이스에만 해당되며, 작업 디렉토리 내에서의 리베이스의 경우 변경사항은 리포지토리의 인덱스에 적용돼요.
6+
7+
## 시그니처
8+
9+
```ts
10+
class Rebase {
11+
inmemoryIndex(): Index;
12+
}
13+
```
14+
15+
### 반환 값
16+
17+
<ul class="param-ul">
18+
<li class="param-li param-li-root">
19+
<span class="param-type">인덱스</span>
20+
<br>
21+
<p class="param-description">마지막 작업에 의해 생성된 인덱스.</p>
22+
</li>
23+
</ul>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# len
2+
3+
적용해야 하는 리베이스 작업의 수를 가져와요.
4+
5+
## 시그니처
6+
7+
```ts
8+
class Rebase {
9+
len(): number;
10+
}
11+
```
12+
13+
### 반환 값
14+
15+
<ul class="param-ul">
16+
<li class="param-li param-li-root">
17+
<span class="param-type">bigint</span>
18+
<br>
19+
<p class="param-description">리베이스 작업의 수예요.</p>
20+
</li>
21+
</ul>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# originHeadId
2+
3+
병합 리베이스의 원래 `HEAD` ID를 가져와요.
4+
5+
## 시그니처
6+
7+
```ts
8+
class Rebase {
9+
originHeadId(): string | null;
10+
}
11+
```
12+
13+
### 반환 값
14+
15+
<ul class="param-ul">
16+
<li class="param-li param-li-root">
17+
<span class="param-type">null | string</span>
18+
<br>
19+
<p class="param-description">병합 리베이스의 원래 <code>HEAD</code> ID예요.</p>
20+
</li>
21+
</ul>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# originHeadName
2+
3+
병합 리베이스용 원래 `HEAD` 참조 이름을 가져와요.
4+
5+
## 시그니처
6+
7+
```ts
8+
class Rebase {
9+
originHeadName(): string | null;
10+
}
11+
```
12+
13+
### 반환 값
14+
15+
<ul class="param-ul">
16+
<li class="param-li param-li-root">
17+
<span class="param-type">null | string</span>
18+
<br>
19+
<p class="param-description">병합 리베이스용 원래 <code>HEAD</code> 참조 이름이에요.</p>
20+
</li>
21+
</ul>

0 commit comments

Comments
 (0)