@@ -26,6 +26,65 @@ def _generate_suite(suite, staging_dir, suite_name):
26
26
return def_file
27
27
28
28
29
+ def git_commit_message (message_args ):
30
+ """
31
+ Generate a git commit message with additional repository information
32
+ (directory, git remote, git hash).
33
+
34
+ Parameters
35
+ ----------
36
+ message_args : str or None
37
+ Additional message to append to the default commit message.
38
+ If None, only the default message is used.
39
+ Returns
40
+ -------
41
+ str
42
+ The complete commit message including repository information and the
43
+ additional message if provided.
44
+ Notes
45
+ -----
46
+ The default message includes the version of the wellies suite and the
47
+ current working directory.
48
+ If a local git repository is found, the message also includes the remote
49
+ repository name and the current commit hash.
50
+ If no local git repository is found, only the default message is used.
51
+ """
52
+
53
+ default_message = (
54
+ f"suite generated using wellies { wl .__version__ } "
55
+ + f" from directory { os .getcwd ()} "
56
+ )
57
+
58
+ try :
59
+ repo = git .Repo ("." )
60
+
61
+ commit_hash = repo .head .commit .hexsha
62
+ remote_url = next (repo .remote ().urls )
63
+ if repo .head .is_detached :
64
+ branch_name = "Detached HEAD"
65
+ else :
66
+ branch_name = repo .active_branch .name
67
+ default_message += "\n Git info:\n "
68
+ default_message += f" - Remote URL: { remote_url } \n "
69
+ default_message += f" - Commit: { commit_hash } \n "
70
+ default_message += f" - Branch: { branch_name } \n "
71
+ if repo .is_dirty ():
72
+ modified_files = [item .a_path for item in repo .index .diff (None )]
73
+ if modified_files :
74
+ default_message += " - Local changes:\n "
75
+ for file in modified_files :
76
+ default_message += f" - { file } \n "
77
+ except (git .exc .NoSuchPathError , git .exc .InvalidGitRepositoryError ):
78
+ print ("Could not find local git repository, using default message" )
79
+
80
+ if message_args is None :
81
+ message = default_message
82
+ else :
83
+ message = default_message + "\n \n " + {message }
84
+
85
+ return message
86
+
87
+
29
88
def deploy_suite (
30
89
suite : pf .Suite ,
31
90
user : str ,
@@ -128,14 +187,9 @@ def deploy_suite(
128
187
if check != "y" :
129
188
print ("Aborting deployment" )
130
189
exit (1 )
131
- default_message = (
132
- f"suite generated using wellies { wl .__version__ } "
133
- + f" from directory { os .getcwd ()} "
134
- )
135
- if message is None :
136
- message = default_message
137
- else :
138
- message = default_message + "\n " + {message }
190
+
191
+ message = git_commit_message (message )
192
+
139
193
if deployer .deploy (message , files ):
140
194
print (f"Suite deployed to { target_repo } " )
141
195
print (f"Definition file: { target_repo } /{ name } .def" )
0 commit comments