54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
#########################################################
|
||
## @file : push_files
|
||
## @desc :
|
||
## @create : 2025/6/22
|
||
## @author : Chengan,doubao AI
|
||
## @email : douboer@gmail.com
|
||
#########################################################
|
||
|
||
from logger_utils import CommonLogger
|
||
import subprocess
|
||
|
||
def get_uncommitted_changes(log_file=None):
|
||
"""获取所有未提交的修改,并区分新增、删除、修改状态"""
|
||
logger = CommonLogger(log_file).get_logger()
|
||
changes = {
|
||
'added': [],
|
||
'deleted': [],
|
||
'modified': []
|
||
}
|
||
|
||
try:
|
||
# 获取工作区和暂存区的完整状态
|
||
status_output = subprocess.check_output(
|
||
["git", "status", "--porcelain"],
|
||
text=True,
|
||
stderr=subprocess.DEVNULL
|
||
).splitlines()
|
||
|
||
for line in status_output:
|
||
status_code = line[:2].strip()
|
||
file_path = line[3:].strip()
|
||
|
||
if status_code == '??':
|
||
changes['added'].append(file_path)
|
||
elif status_code == 'D':
|
||
changes['deleted'].append(file_path)
|
||
elif status_code in ('M', 'AM', 'MD'):
|
||
changes['modified'].append(file_path)
|
||
|
||
except subprocess.CalledProcessError:
|
||
logger.exception("获取未提交修改时发生错误")
|
||
|
||
logger.info(f"未提交修改: {changes}")
|
||
return changes
|
||
|
||
|
||
# 使用示例
|
||
changes = get_uncommitted_changes(log_file='logs/push_files.log')
|
||
for status, files in changes.items():
|
||
if files:
|
||
print(f"\n{status.upper()}:")
|
||
for file in files:
|
||
print(f" - {file}")
|