pyjallib 0.1.15__py3-none-any.whl → 0.1.16__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pyjallib/__init__.py
CHANGED
pyjallib/max/skeleton.py
CHANGED
@@ -164,7 +164,6 @@ class Skeleton:
|
|
164
164
|
returnArray = []
|
165
165
|
nodeArray = self.get_dependencies(inObjs)
|
166
166
|
|
167
|
-
|
168
167
|
# 애드온 레이어의 노드들만 필터링
|
169
168
|
addOnArray = []
|
170
169
|
for item in nodeArray:
|
@@ -172,13 +171,7 @@ class Skeleton:
|
|
172
171
|
addOnArray.append(item)
|
173
172
|
|
174
173
|
# 애드온 노드들의 의존성 가져오기
|
175
|
-
addOnRefArray =
|
176
|
-
progress = Progress("Get All Dependencies", inTotalSteps=len(addOnArray))
|
177
|
-
for i,item in enumerate(addOnArray):
|
178
|
-
refs = self.get_dependencies(item)
|
179
|
-
progress.update(i)
|
180
|
-
|
181
|
-
addOnRefArray.extend(refs)
|
174
|
+
addOnRefArray = self.get_dependencies(addOnArray)
|
182
175
|
|
183
176
|
# 모든 노드들을 returnArray에 추가 (중복 없이)
|
184
177
|
for item in nodeArray:
|
pyjallib/perforce.py
CHANGED
@@ -604,20 +604,31 @@ class Perforce:
|
|
604
604
|
if not self._is_connected():
|
605
605
|
return False
|
606
606
|
logger.info(f"체인지 리스트 {change_list_number} 제출 시도...")
|
607
|
+
|
608
|
+
submit_success = False
|
607
609
|
try:
|
608
610
|
self.p4.run_submit("-c", change_list_number)
|
609
611
|
logger.info(f"체인지 리스트 {change_list_number} 제출 성공.")
|
610
|
-
|
611
|
-
# 제출 후 변경사항이 없는 체크아웃된 파일들을 자동으로 리버트
|
612
|
-
if auto_revert_unchanged:
|
613
|
-
self._auto_revert_unchanged_files(change_list_number)
|
614
|
-
|
615
|
-
return True
|
612
|
+
submit_success = True
|
616
613
|
except P4Exception as e:
|
617
614
|
self._handle_p4_exception(e, f"체인지 리스트 {change_list_number} 제출")
|
618
615
|
if any("nothing to submit" in err.lower() for err in self.p4.errors):
|
619
616
|
logger.warning(f"체인지 리스트 {change_list_number}에 제출할 파일이 없습니다.")
|
620
|
-
|
617
|
+
submit_success = False
|
618
|
+
|
619
|
+
# 제출 성공 여부와 관계없이 후속 작업 실행
|
620
|
+
try:
|
621
|
+
# 제출 후 변경사항이 없는 체크아웃된 파일들을 자동으로 리버트
|
622
|
+
if auto_revert_unchanged:
|
623
|
+
self._auto_revert_unchanged_files(change_list_number)
|
624
|
+
self._auto_revert_unchanged_files_in_default_changelist()
|
625
|
+
|
626
|
+
# 빈 체인지 리스트 삭제
|
627
|
+
self.delete_empty_change_list(change_list_number)
|
628
|
+
except Exception as e:
|
629
|
+
logger.error(f"체인지 리스트 {change_list_number} 제출 후 후속 작업 중 오류 발생: {e}")
|
630
|
+
|
631
|
+
return submit_success
|
621
632
|
|
622
633
|
def _auto_revert_unchanged_files(self, change_list_number: int) -> None:
|
623
634
|
"""제출 후 변경사항이 없는 체크아웃된 파일들을 자동으로 리버트합니다.
|
@@ -682,37 +693,32 @@ class Perforce:
|
|
682
693
|
"""default change list에서 변경사항이 없는 체크아웃된 파일들을 자동으로 리버트합니다."""
|
683
694
|
logger.debug("default change list에서 변경사항이 없는 파일들 자동 리버트 시도...")
|
684
695
|
try:
|
685
|
-
# default change list
|
686
|
-
|
696
|
+
# get_default_change_list를 사용해서 default change list의 파일들 가져오기
|
697
|
+
default_cl_info = self.get_default_change_list()
|
687
698
|
|
688
|
-
if not
|
699
|
+
if not default_cl_info or not default_cl_info.get('Files'):
|
689
700
|
logger.debug("default change list에 체크아웃된 파일이 없습니다.")
|
690
701
|
return
|
691
702
|
|
703
|
+
files_list = default_cl_info.get('Files', [])
|
692
704
|
unchanged_files = []
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
diff_result = self.p4.run_diff("-sa", file_path)
|
702
|
-
|
703
|
-
# diff 결과가 비어있으면 변경사항이 없음
|
704
|
-
if not diff_result:
|
705
|
-
unchanged_files.append(file_path)
|
706
|
-
logger.debug(f"default change list의 파일 '{file_path}'에 변경사항이 없어 리버트 대상으로 추가")
|
707
|
-
else:
|
708
|
-
logger.debug(f"default change list의 파일 '{file_path}'에 변경사항이 있어 리버트하지 않음")
|
709
|
-
|
710
|
-
except P4Exception as e:
|
711
|
-
# diff 명령 실패 시에도 리버트 대상으로 추가 (안전하게 처리)
|
705
|
+
|
706
|
+
for file_path in files_list:
|
707
|
+
try:
|
708
|
+
# p4 diff 명령으로 파일의 변경사항 확인
|
709
|
+
diff_result = self.p4.run_diff("-sa", file_path)
|
710
|
+
|
711
|
+
# diff 결과가 비어있으면 변경사항이 없음
|
712
|
+
if not diff_result:
|
712
713
|
unchanged_files.append(file_path)
|
713
|
-
logger.debug(f"default change list의 파일 '{file_path}'
|
714
|
-
|
715
|
-
|
714
|
+
logger.debug(f"default change list의 파일 '{file_path}'에 변경사항이 없어 리버트 대상으로 추가")
|
715
|
+
else:
|
716
|
+
logger.debug(f"default change list의 파일 '{file_path}'에 변경사항이 있어 리버트하지 않음")
|
717
|
+
|
718
|
+
except P4Exception as e:
|
719
|
+
# diff 명령 실패 시에도 리버트 대상으로 추가 (안전하게 처리)
|
720
|
+
unchanged_files.append(file_path)
|
721
|
+
logger.debug(f"default change list의 파일 '{file_path}' diff 확인 실패, 리버트 대상으로 추가: {e}")
|
716
722
|
|
717
723
|
# 변경사항이 없는 파일들을 리버트
|
718
724
|
if unchanged_files:
|
@@ -1173,3 +1179,29 @@ class Perforce:
|
|
1173
1179
|
|
1174
1180
|
logger.info(f"다른 사용자에 의해 체크아웃된 파일: {len(files_by_others)}개")
|
1175
1181
|
return files_by_others
|
1182
|
+
|
1183
|
+
def get_default_change_list(self) -> dict:
|
1184
|
+
"""default change list의 정보를 가져옵니다.
|
1185
|
+
|
1186
|
+
Returns:
|
1187
|
+
dict: get_change_list_by_number와 동일한 형태의 딕셔너리
|
1188
|
+
"""
|
1189
|
+
if not self._is_connected():
|
1190
|
+
return {}
|
1191
|
+
logger.debug("default change list 정보 조회 중...")
|
1192
|
+
try:
|
1193
|
+
opened_files = self.p4.run_opened("-c", "default")
|
1194
|
+
files_list = [f.get('clientFile', '') for f in opened_files]
|
1195
|
+
result = {
|
1196
|
+
'Change': 'default',
|
1197
|
+
'Description': 'Default change',
|
1198
|
+
'User': getattr(self.p4, 'user', ''),
|
1199
|
+
'Client': getattr(self.p4, 'client', ''),
|
1200
|
+
'Status': 'pending',
|
1201
|
+
'Files': files_list
|
1202
|
+
}
|
1203
|
+
logger.info(f"default change list 정보 조회 완료: {len(files_list)}개 파일")
|
1204
|
+
return result
|
1205
|
+
except P4Exception as e:
|
1206
|
+
self._handle_p4_exception(e, "default change list 정보 조회")
|
1207
|
+
return {}
|
@@ -1,9 +1,9 @@
|
|
1
|
-
pyjallib/__init__.py,sha256=
|
1
|
+
pyjallib/__init__.py,sha256=x9MQjDWegE6dAs6jPCgRy9ymBM8DqQ2XpSqGgmLY-tA,509
|
2
2
|
pyjallib/namePart.py,sha256=lKIiOVkWrtAW-D3nuv--vHmdAnlQeVPaXLYUDhcr8QU,24177
|
3
3
|
pyjallib/nameToPath.py,sha256=aBeezepLYdpv3VYxnQ2c4ZWzz2WjticXjkdbAIlVa1k,4676
|
4
4
|
pyjallib/naming.py,sha256=b2C-P9VWV4Q2StqkizEwABblYOC5g6sXHzN0KpOZ_Ys,37419
|
5
5
|
pyjallib/namingConfig.py,sha256=QGpK5mCnRiclKqNKz3GJ2PeJO8fbVitAEdqWwnwo8oA,34127
|
6
|
-
pyjallib/perforce.py,sha256=
|
6
|
+
pyjallib/perforce.py,sha256=VQswiyQ6CHCAgFJO5MjC2Su1qNU4yfAQmFZGapNR6_g,57329
|
7
7
|
pyjallib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
pyjallib/reloadModules.py,sha256=RAEG3IxzJ0TlsjvnZwJt56JOkc2j8voqAnRbfQuZ44g,1151
|
9
9
|
pyjallib/ConfigFiles/namingConfig.json,sha256=Ov4bbVJb6qodPaooU63e11YUMGXXPWFAA4AQq1sLBYU,1486
|
@@ -30,7 +30,7 @@ pyjallib/max/name.py,sha256=DcJt2td-N7vfUGyWazdGTD4-0JW-noa7z5nwc6SHm6I,15337
|
|
30
30
|
pyjallib/max/progress.py,sha256=0_ry9NiYJZGqwBtvR-oGwV40Z57AtOBG0RcuQwwOeq4,1162
|
31
31
|
pyjallib/max/rootMotion.py,sha256=H9kvh9dx4zLLBYuigGyN0XZsdGAF5d7YRBdaokZmCiw,31399
|
32
32
|
pyjallib/max/select.py,sha256=HMJD2WNX3zVBEeYrj0UX2YXM3fHNItfw6UtQSItNsoU,9487
|
33
|
-
pyjallib/max/skeleton.py,sha256=
|
33
|
+
pyjallib/max/skeleton.py,sha256=tjI1h5zObL0TgX3gkebiqosTlEOPglaKfIbsQ14ET50,7896
|
34
34
|
pyjallib/max/skin.py,sha256=5mBzG2wSUxoGlkFeb9Ys8uUxOwuZRGeqUMTI9LiWWZU,41937
|
35
35
|
pyjallib/max/toolManager.py,sha256=ya6beAGzk1_culw4H7lBdr7klnS-Yl8mVGg13A41Q8A,3185
|
36
36
|
pyjallib/max/twistBone.py,sha256=VPZLDE5V6KEW-i5gAberggEeR2YRzLwsFfFQBT4AB1U,17295
|
@@ -44,6 +44,6 @@ pyjallib/max/macro/jal_macro_helper.py,sha256=hd8e5x56aq7Qt0g-hP5bY0p-njVy8ja77_
|
|
44
44
|
pyjallib/max/macro/jal_macro_link.py,sha256=E8i3z2xsrQiGDEz4Qoxc75hkpalzS95mOMcIic0J-Fc,1193
|
45
45
|
pyjallib/max/macro/jal_macro_select.py,sha256=jeSFR_mqqudTTrZE1rU6qifJ4g441cYxXWcHPTWh1CU,2289
|
46
46
|
pyjallib/max/ui/Container.py,sha256=QSk3oCqhfiR4aglSSkherRGAyPFqMRUt83L-0ENBz-s,5571
|
47
|
-
pyjallib-0.1.
|
48
|
-
pyjallib-0.1.
|
49
|
-
pyjallib-0.1.
|
47
|
+
pyjallib-0.1.16.dist-info/METADATA,sha256=zPdi6nX3h5VvUBW371qgdfefTHTdBY-oB4ge8nYVzQs,870
|
48
|
+
pyjallib-0.1.16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
49
|
+
pyjallib-0.1.16.dist-info/RECORD,,
|
File without changes
|