본문 바로가기
Project

프로젝트 버전 관리 자동화

by hyunji00pj 2025. 7. 14.

매번 코드에서 버전을 output_base_dir = os.path.join('output', f"V_19")이런 식으로 해서 20으로 바꾸고 실행시키고 21로 바꾸고 실행 시키기 싫어서 버전 관리 자동화 함수를 만들어서 프로젝트에 사용하였다

 

아래 함수는 실행할 때 마다 자동으로 숫자가 올라가게 해서 버전 관리를 자동화 할 수 있게 한 함수이다.

def get_next_version():
    import glob
    version_folders = glob.glob('output/V_*')
    if not version_folders:
        return 19  # 시작 버전
    
    versions = []
    for folder in version_folders:
        try:
            version_part = folder.split('V_')[1]
            versions.append(int(version_part))
        except:
            continue
    
    return max(versions) + 1 if versions else 19

 

version_folders = glob.glob('output/V_*')

- glob.glob() : 패턴 매칭으로 파일/폴더 검색

- output/V_* : output 폴더 안의V_로 시작하는 모든 폴더 찾기

- 결과 예시 : ['output/V_19', 'output/V_20', 'output/V_21']

 

if not version_folders:

  return 19

- 기존 V_ 폴더 없으면 시작 버전인 19 반환

 

versions = []

for folder in version_folders:

  try:

    version_part = folder.split('V_')[1]

    version.append(int(version_part))

  except:

    continue

- 각 폴더 이름을 V_로 분할

- 예 : 'output/V_20' -> split('V_')[1] -> '20'

- int()로 숫자 변환 후 리스트에 저장

- 변환 실패 시 (잘못된 형식) 무시하고 계속

 

return max(versions) + 1 if versions else 19

- 가장 높은 버전 번호에 +1

- 예 : [19,20,21] -> max(versions) = 21 -> 다음 버전 = 22

버전 리스트가 비어있으면 그냥 19 반환

 

위 함수 실행하면 실행 예시는 아래와 같다

[첫 실행]

output/ (빈 폴더)
→ get_next_version() 실행
→ glob 결과: []
→ 반환값: 19
→ 생성: output/V_19/

 

[두 번째 실행]

output/V_19/ (기존 폴더)
→ get_next_version() 실행
→ glob 결과: ['output/V_19']
→ 버전 추출: [19]
→ 반환값: 20
→ 생성: output/V_20/

 

에러처리 

try:

  version_part = folder.split('V_')[1]

  version.append(int(version_part))

except:

  continue

 

- 잘못된 폴더명 (예: V_abc, V_) 무시

- 시스템 안정성 보장

- 올바른 형식의 폴더만 버전 계산에 포함

 

이렇게 함수를 만들어서 사용하면 수동으로 버전을 고쳐서 사용할 필요가 없어집니다 

위 함수를 활용해서 폴더이름, 파일이름( ex: datetime 사용해서 관리 )등등을 관리 할 수 있습니다