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');