diff --git a/docs/reference/Blame/Methods/getHunkByIndex.md b/docs/reference/Blame/Methods/getHunkByIndex.md
index ce8814b0..d0d5ef0b 100644
--- a/docs/reference/Blame/Methods/getHunkByIndex.md
+++ b/docs/reference/Blame/Methods/getHunkByIndex.md
@@ -48,6 +48,11 @@ class Blame {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
@@ -90,6 +95,11 @@ class Blame {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Blame/Methods/getHunkByLine.md b/docs/reference/Blame/Methods/getHunkByLine.md
index cfa780ef..1f2cca10 100644
--- a/docs/reference/Blame/Methods/getHunkByLine.md
+++ b/docs/reference/Blame/Methods/getHunkByLine.md
@@ -48,6 +48,11 @@ class Blame {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
@@ -90,6 +95,11 @@ class Blame {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Commit/Methods/author.md b/docs/reference/Commit/Methods/author.md
index 5f4a96c1..6867e2cf 100644
--- a/docs/reference/Commit/Methods/author.md
+++ b/docs/reference/Commit/Methods/author.md
@@ -28,6 +28,11 @@ class Commit {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Commit/Methods/authorWithMailmap.md b/docs/reference/Commit/Methods/authorWithMailmap.md
index f8df6c49..b75bab4f 100644
--- a/docs/reference/Commit/Methods/authorWithMailmap.md
+++ b/docs/reference/Commit/Methods/authorWithMailmap.md
@@ -38,6 +38,11 @@ class Commit {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Commit/Methods/committer.md b/docs/reference/Commit/Methods/committer.md
index 4bd68a8f..e4932185 100644
--- a/docs/reference/Commit/Methods/committer.md
+++ b/docs/reference/Commit/Methods/committer.md
@@ -28,6 +28,11 @@ class Commit {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Commit/Methods/committerWithMailmap.md b/docs/reference/Commit/Methods/committerWithMailmap.md
index 50e120bc..4804b2fa 100644
--- a/docs/reference/Commit/Methods/committerWithMailmap.md
+++ b/docs/reference/Commit/Methods/committerWithMailmap.md
@@ -38,6 +38,11 @@ class Commit {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Mailmap/Methods/resolveSignature.md b/docs/reference/Mailmap/Methods/resolveSignature.md
index eb679195..b0ffdc2b 100644
--- a/docs/reference/Mailmap/Methods/resolveSignature.md
+++ b/docs/reference/Mailmap/Methods/resolveSignature.md
@@ -68,6 +68,11 @@ class Mailmap {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Note/Methods/author.md b/docs/reference/Note/Methods/author.md
index c14a98cd..0b2a3e4d 100644
--- a/docs/reference/Note/Methods/author.md
+++ b/docs/reference/Note/Methods/author.md
@@ -28,6 +28,11 @@ class Note {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Note/Methods/committer.md b/docs/reference/Note/Methods/committer.md
index eb56008e..3438ad49 100644
--- a/docs/reference/Note/Methods/committer.md
+++ b/docs/reference/Note/Methods/committer.md
@@ -28,6 +28,11 @@ class Note {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Reflog/Methods/append.md b/docs/reference/Reflog/Methods/append.md
index fa17022b..c6350e65 100644
--- a/docs/reference/Reflog/Methods/append.md
+++ b/docs/reference/Reflog/Methods/append.md
@@ -33,6 +33,11 @@ class Reflog {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/ReflogEntry/Methods/committer.md b/docs/reference/ReflogEntry/Methods/committer.md
index 03b4c27a..9c3ec5c9 100644
--- a/docs/reference/ReflogEntry/Methods/committer.md
+++ b/docs/reference/ReflogEntry/Methods/committer.md
@@ -28,6 +28,11 @@ class ReflogEntry {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Signature/createSignature.md b/docs/reference/Signature/createSignature.md
index 5277a72d..13460401 100644
--- a/docs/reference/Signature/createSignature.md
+++ b/docs/reference/Signature/createSignature.md
@@ -62,6 +62,11 @@ function createSignature(
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/docs/reference/Tag/Methods/tagger.md b/docs/reference/Tag/Methods/tagger.md
index 4f37be5c..d6324d0f 100644
--- a/docs/reference/Tag/Methods/tagger.md
+++ b/docs/reference/Tag/Methods/tagger.md
@@ -28,6 +28,11 @@ class Tag {
Name on the signature.
+
+ offsetrequired · number
+
+ Timezone offset, in minutes
+
timestamprequired · number
diff --git a/index.d.ts b/index.d.ts
index 09bc72b6..38fc310d 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -8956,6 +8956,8 @@ export interface Signature {
email: string
/** Time in seconds, from epoch */
timestamp: number
+ /** Timezone offset, in minutes */
+ offset: number
}
export interface SignaturePayload {
diff --git a/src/signature.rs b/src/signature.rs
index 053ddb43..48145728 100644
--- a/src/signature.rs
+++ b/src/signature.rs
@@ -12,6 +12,8 @@ pub struct Signature {
pub email: String,
/// Time in seconds, from epoch
pub timestamp: i64,
+ /// Timezone offset, in minutes
+ pub offset: i32,
}
impl<'a> TryFrom> for Signature {
@@ -21,7 +23,13 @@ impl<'a> TryFrom> for Signature {
let name = std::str::from_utf8(value.name_bytes())?.to_string();
let email = std::str::from_utf8(value.email_bytes())?.to_string();
let timestamp = value.when().seconds();
- Ok(Self { name, email, timestamp })
+ let offset = value.when().offset_minutes();
+ Ok(Self {
+ name,
+ email,
+ timestamp,
+ offset,
+ })
}
}
diff --git a/tests/rebase.spec.ts b/tests/rebase.spec.ts
index d030bec6..f653d807 100644
--- a/tests/rebase.spec.ts
+++ b/tests/rebase.spec.ts
@@ -1,14 +1,24 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import { describe, expect, it } from 'vitest';
-import { openRepository, type RebaseOperation } from '../index';
+import { openRepository, type RebaseOperation, type Signature, type SignaturePayload } from '../index';
import { useFixture } from './fixtures';
describe('rebase', () => {
it('rebase (no-conflict): feature onto main', async () => {
const p = await useFixture('empty');
const repo = await openRepository(p);
- const sig = { name: 'Test User', email: 'test@example.com' };
+ const sig = {
+ name: 'Test User',
+ email: 'test@example.com',
+ timeOptions: { timestamp: 1678886400, offset: 0 },
+ } satisfies SignaturePayload;
+ const expectedCommitter: Signature = {
+ name: sig.name,
+ email: sig.email,
+ timestamp: sig.timeOptions.timestamp,
+ offset: sig.timeOptions.offset,
+ };
// initial commit (o0)
let index = repo.index();
@@ -79,6 +89,7 @@ describe('rebase', () => {
const featureAfter = repo.getReference('refs/heads/feature').target()!;
const featureCommit = repo.getCommit(featureAfter);
expect(featureCommit.message()).toBe('feat-1');
+ expect(featureCommit.committer()).toEqual(expectedCommitter);
expect(repo.getMergeBase(featureAfter, o1)).toEqual(o1);
const mainStatus = repo.getStatusFile('main.txt');