daytona_client/models/
git.rs

1//! Git operation models
2
3use serde::{Deserialize, Serialize};
4
5/// Git clone request
6#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct GitCloneRequest {
9    pub url: String,
10    pub path: String,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub branch: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub depth: Option<u32>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub auth_token: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub ssh_key: Option<String>,
19}
20
21/// Git commit request
22#[derive(Debug, Clone, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct GitCommitRequest {
25    pub path: String,
26    pub message: String,
27    pub author: String,
28    pub email: String,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub allow_empty: Option<bool>,
31}
32
33/// Git push request
34#[derive(Debug, Clone, Serialize, Deserialize)]
35#[serde(rename_all = "camelCase")]
36pub struct GitPushRequest {
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub remote: Option<String>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub branch: Option<String>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub force: Option<bool>,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub auth_token: Option<String>,
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub ssh_key: Option<String>,
47}
48
49/// Git pull request
50#[derive(Debug, Clone, Serialize, Deserialize)]
51#[serde(rename_all = "camelCase")]
52pub struct GitPullRequest {
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub remote: Option<String>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub branch: Option<String>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub rebase: Option<bool>,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub auth_token: Option<String>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub ssh_key: Option<String>,
63}
64
65/// Git status response
66#[derive(Debug, Clone, Deserialize)]
67#[serde(rename_all = "camelCase")]
68pub struct GitStatus {
69    pub current_branch: String,
70    pub file_status: Vec<FileStatus>,
71    #[serde(skip_serializing_if = "Option::is_none")]
72    pub ahead: Option<u32>,
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub behind: Option<u32>,
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub branch_published: Option<bool>,
77}
78
79/// File status in Git
80#[derive(Debug, Clone, Deserialize)]
81#[serde(rename_all = "camelCase")]
82pub struct FileStatus {
83    pub name: String,
84    pub staging: String,
85    pub worktree: String,
86    pub extra: String,
87}
88
89/// Git commit information
90#[derive(Debug, Clone, Serialize, Deserialize)]
91#[serde(rename_all = "camelCase")]
92pub struct GitCommitInfo {
93    pub hash: String,
94    pub message: String,
95    pub author: String,
96    pub email: String,
97    pub timestamp: String,
98}
99
100/// Alias for backward compatibility
101pub type GitLogEntry = GitCommitInfo;
102
103/// List branches response
104#[derive(Debug, Clone, Deserialize)]
105#[serde(rename_all = "camelCase")]
106pub struct ListBranchResponse {
107    pub branches: Vec<String>,
108}