Class: Git::StashInfo

Inherits:
Data
  • Object
show all
Defined in:
lib/git/stash_info.rb

Overview

Immutable value object representing stash entry information

StashInfo encapsulates the parsed data from git stash list output. Each entry contains comprehensive information about the stash including its index, reference name, commit SHA, branch, message, author/committer details, and timestamps.

Examples:

Create a StashInfo from parsed stash list output

info = Git::StashInfo.new(
  index: 0,
  name: 'stash@{0}',
  oid: 'abc123def456789...',
  short_oid: 'abc123d',
  branch: 'main',
  message: 'WIP on main: abc123 Initial commit',
  author_name: 'Jane Doe',
  author_email: 'jane@example.com',
  author_date: '2026-01-24T10:30:00-08:00',
  committer_name: 'Jane Doe',
  committer_email: 'jane@example.com',
  committer_date: '2026-01-24T10:30:00-08:00'
)

info.index           # => 0
info.name            # => 'stash@{0}'
info.oid             # => 'abc123def456789...'
info.short_oid       # => 'abc123d'
info.branch          # => 'main'
info.message         # => 'WIP on main: abc123 Initial commit'
info.author_name     # => 'Jane Doe'
info.author_email    # => 'jane@example.com'
info.author_date     # => '2026-01-24T10:30:00-08:00'
info.committer_name  # => 'Jane Doe'
info.committer_email # => 'jane@example.com'
info.committer_date  # => '2026-01-24T10:30:00-08:00'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#author_dateString (readonly)

Returns the author date in ISO 8601 format.

Returns:

  • (String)

    the author date in ISO 8601 format



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#author_emailString (readonly)

Returns the email of the stash author.

Returns:

  • (String)

    the email of the stash author



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#author_nameString (readonly)

Returns the name of the stash author.

Returns:

  • (String)

    the name of the stash author



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#branchString? (readonly)

Returns the branch name where the stash was created, or nil for custom stash messages.

Returns:

  • (String, nil)

    the branch name where the stash was created, or nil for custom stash messages



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#committer_dateString (readonly)

Returns the committer date in ISO 8601 format.

Returns:

  • (String)

    the committer date in ISO 8601 format



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#committer_emailString (readonly)

Returns the email of the stash committer.

Returns:

  • (String)

    the email of the stash committer



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#committer_nameString (readonly)

Returns the name of the stash committer.

Returns:

  • (String)

    the name of the stash committer



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#indexInteger (readonly)

Returns the stash index (0, 1, 2, ...).

Returns:

  • (Integer)

    the stash index (0, 1, 2, ...)



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#messageString (readonly)

Returns the stash message (e.g., 'WIP on main: abc123 commit msg').

Returns:

  • (String)

    the stash message (e.g., 'WIP on main: abc123 commit msg')



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#nameString (readonly)

Returns the stash reference name (e.g., 'stash@{0\}').

Returns:

  • (String)

    the stash reference name (e.g., 'stash@{0\}')



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#oidString (readonly)

Returns the full 40-character object identifier of the stash.

Returns:

  • (String)

    the full 40-character object identifier of the stash



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

#short_oidString (readonly)

Returns the abbreviated object identifier (typically 7 characters).

Returns:

  • (String)

    the abbreviated object identifier (typically 7 characters)



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/git/stash_info.rb', line 80

StashInfo = Data.define(
  :index,
  :name,
  :oid,
  :short_oid,
  :branch,
  :message,
  :author_name,
  :author_email,
  :author_date,
  :committer_name,
  :committer_email,
  :committer_date
) do
  # Returns the stash reference name
  #
  # @example Convert to string
  #   info.to_s # => 'stash@{0}'
  #
  # @return [String] the stash name (e.g., 'stash@\\{0}')
  def to_s
    name
  end
end

Instance Method Details

#to_sString

Returns the stash reference name

Examples:

Convert to string

info.to_s # => 'stash@{0}'

Returns:

  • (String)

    the stash name (e.g., 'stash@{0}')



100
101
102
# File 'lib/git/stash_info.rb', line 100

def to_s
  name
end