Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions .coderabbit.yaml

This file was deleted.

18 changes: 18 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## 제목
- `type(scope): subject`

## 변경 의도
- 왜 이 변경이 필요한가

## 변경 내용 요약
- 핵심 변경 1~3줄

## 영향 범위
- 시스템/모듈/성능/보안 영향

## 검증 방법
- 재현/확인 절차

## 관련 링크
- 이슈: #
- 문서: Docs/...
63 changes: 25 additions & 38 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
# Unity 프로젝트 .gitignore
# https://github.com/github/gitignore/blob/main/Unity.gitignore

# Unity 기본 디렉토리
.utmp/
/[Ll]ibrary/
/[Tt]emp/
Expand All @@ -12,32 +12,29 @@
/[Uu]ser[Ss]ettings/
*.log

# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
# Blender 파일
*.blend1
*.blend1.meta

# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
# 메모리 캡처 (크기가 크고 민감한 데이터 포함)
/[Mm]emoryCaptures/

# Recordings can get excessive in size
# 녹화 파일 (크기가 큼)
/[Rr]ecordings/

# Uncomment this line if you wish to ignore the asset store tools plugin
# Asset Store 도구 플러그인
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
# Jetbrains Rider 플러그인
/[Aa]ssets/Plugins/Editor/JetBrains*
# Jetbrains Rider personal-layer settings
*.DotSettings.user

# Visual Studio cache directory
# IDE 캐시 디렉토리
.vs/

# Gradle cache directory
.gradle/
.idea/

# Autogenerated VS/MD/Consulo solution and project files
# IDE 생성 파일
ExportedObj/
.consulo/
*.csproj
Expand All @@ -54,66 +51,58 @@ ExportedObj/
*.mdb
*.opendb
*.VC.db
*.vsconfig

# Unity3D generated meta files
# Unity 메타 파일
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
# 크래시 리포트
sysinfo.txt

# Mono auto generated files
mono_crash.*

# Builds
# 빌드 파일
*.apk
*.aab
*.unitypackage
*.unitypackage.meta
*.app

# Crashlytics generated file
# Crashlytics
crashlytics-build.properties

# TestRunner generated files
# 테스트 파일
InitTestScene*.unity*

# Addressables default ignores, before user customizations
# Addressables
/ServerData
/[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp*
# By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/*.bin*

Comment on lines 79 to 84
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

❓ Verification inconclusive

Addressables의 link.xml 무시는 위험할 수 있습니다

/[Aa]ssets/AddressableAssetsData/link.xml*를 무시하면 IL2CPP 보존 규칙 손실로 런타임 스트리핑 문제가 발생할 수 있습니다. 프로젝트마다 정책이 다르지만, 일반적으로 *.bin*만 무시하고 link.xml은 커밋하는 경우가 많습니다.

의도적으로 무시하는 것인지 확인 부탁드립니다. 무시 의도가 아니라면 제거하세요.

-/[Aa]ssets/AddressableAssetsData/link.xml*

검증 스크립트(레포 내에 link.xml이 이미 추적 중인지 확인):


🏁 Script executed:

#!/bin/bash
# AddressableAssetsData 아래 link.xml 추적 여부 및 위치 확인
git ls-files | rg -n $'/[Aa]ssets/AddressableAssetsData/.*/link\\.xml$' || true

Length of output: 78


Addressables용 link.xml 무시 재검토 요청

검증 결과, 현재 /Assets/AddressableAssetsData 경로 내에 link.xml 파일이 Git에 추적되고 있지 않습니다. 이 패턴을 무시하면 향후 생성되는 link.xml 파일도 자동으로 커밋에서 제외되어 IL2CPP 보존 규칙 손실 및 런타임 스트리핑 문제가 발생할 수 있습니다. 대부분의 Unity 프로젝트에서는 link.xml만큼은 커밋하는 것이 일반적이므로, 의도적인 무시인지 확인하거나 .gitignore에서 해당 라인을 제거해주세요.

  • 대상 파일: .gitignore
  • 문제 라인: 81 (/[Aa]ssets/AddressableAssetsData/link.xml*)

제안 변경사항:

-/[Aa]ssets/AddressableAssetsData/link.xml*

의도적으로 무시하려는 경우, 해당 이유를 주석으로 남겨주세요.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/ServerData
/[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp*
# By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/*.bin*
/ServerData
/[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/Addressables_Temp*
/[Aa]ssets/AddressableAssetsData/*/*.bin*
🤖 Prompt for AI Agents
In .gitignore around lines 79 to 84 (specifically line 81 where
"/[Aa]ssets/AddressableAssetsData/link.xml*" is listed), the rule ignores
link.xml files under Assets/AddressableAssetsData which can prevent committing
IL2CPP preservation rules; either remove that ignore pattern so link.xml is
tracked, or if the ignore is intentional, add a clear comment above the line
explaining why link.xml should be excluded (e.g., generated-only and contains no
preservation rules), then commit the updated .gitignore accordingly.

# Visual Scripting auto-generated files
# Visual Scripting 자동 생성 파일
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta

# Auto-generated scenes by play mode tests
# 테스트 씬
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*


# Add
# 추가 항목
/.plastic/
*.stacktrace
*.crash
.idea/
*.iml
*.xcworkspace
*.xcuserdata
*.pbxuser
*.mode1v3
*.mode2v3

# Resources Large Files
*.wav
*.mp3
# 대용량 미디어 파일
*.mp4
*.avi
*.mov
Expand All @@ -126,9 +115,7 @@ InitTestScene*.unity*
*.m4b
*.m4r
*.m4p
*.m4v
*.m4b
*.m4r
*.m4p

# 특정 플러그인
/Assets/Plugins/FiveMinuteChat
/Assets/Plugins/WebGLTemplates
44 changes: 44 additions & 0 deletions .plasticignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Desktop.ini
*.tmp
*.user
*.userprefs
*.vsconfig

# macOS 관련
*.DS_Store
Expand All @@ -41,3 +42,46 @@ Desktop.ini
*.log
*.bak
*.meta~ # 임시 메타파일

# 추가된 항목들
*.blend1
*.blend1.meta
/[Rr]ecordings/
*.DotSettings.user
mono_crash.*
*.unitypackage.meta
InitTestScene*.unity*
/ServerData
/[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp*
*.stacktrace
*.crash
*.xcuserdata
*.pbxuser
*.mode1v3
*.mode2v3
*.private
*.private.meta
^*.private.[0-9]+$
^*.private.[0-9]+.meta$
Comment on lines +63 to +66
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

정규식 패턴(^, $, +)은 .plasticignore에서 동작하지 않습니다; 이미 중복 규칙이 존재합니다

.plasticignore는 glob(와일드카드) 기반입니다. ^*.private.[0-9]+$ 같은 정규식은 의도대로 매칭되지 않습니다. 게다가 이미 위에서 *.private, *.private.meta로 포괄 무시하고 있어 중복이기도 합니다. 아래 두 줄은 제거하세요.

적용 제안(diff):

-^*.private.[0-9]+$
-^*.private.[0-9]+.meta$

🌐 Web query:

Plastic SCM의 .plasticignore(또는 ignore.conf)에서 지원하는 패턴 문법은 무엇인가요? 정규식 앵커(^, $)나 `+` 수량자를 지원하나요? 공식 문서의 규칙과 예시를 알려주세요.

💡 Result:

요약 — 결론 먼저

  • .plasticignore / ignore.conf 는 와일드카드 패턴(*)와 정규식 패턴 둘 다 지원합니다. 정규식 패턴은 "정규식 모드"로 취급하려면 반드시 줄의 맨 앞에 ^, 맨 뒤에 $ 를 붙여야 합니다. 또한 + 같은 표준 정규식 수량자(+, *, ?, 그룹, 문자클래스, lookahead 등)도 사용할 수 있습니다. (docs.plasticscm.com, forum.plasticscm.com)

공식 문서(핵심 규칙)

  1. 규칙(패턴) 종류 및 우선순위(요약)
  • 절대 경로 규칙 (예: /src/lib/file.txt)
  • 캐치-올 규칙 (예: / , * , ** 등)
  • 이름 규칙 (파일/디렉터리 이름만 비교)
  • 확장자 규칙 (예: *.java)
  • 와일드카드 / 정규식 규칙 (와일드카드와 정규식은 마지막에 평가됨)
    (문서에 규칙 유형과 적용 우선순위가 정리되어 있음). (docs.plasticscm.com)
  1. 와일드카드 문법
    • : 디렉터리 구분자('/')를 제외한 임의의 문자 0개 이상.
  • ** : 디렉터리 구분자를 포함하여 임의의 문자 0개 이상(재귀적 매치).
  • ? : 디렉터리 구분자를 제외한 정확히 한 문자.
    예) /sample/temp/** 는 sample/temp 아래 모든 파일/서브폴더를 의미. (docs.plasticscm.com, blog.plasticscm.com)
  1. 정규식 패턴
  • 정규식으로 처리하려면 패턴이 반드시 ^ 로 시작하고 $ 로 끝나야 합니다.
  • 내부에 표준 정규식 문법(문자클래스 [0-9], 수량자 +, ?, *, 그룹, 역참조/이스케이프 등)을 쓸 수 있습니다. 예시:
    • ^.*/sample-[0-9]+.txt$ (sample-숫자.txt 형태의 경로 매치)
    • ^.*/dir-0x[A-F0-9]+_?/[^\/]+$ (복합 경로/이름 매치)
  • 즉, ^와 $는 “정규식 모드로 해석하라”는 신호이자 정규식의 앵커로 사용됩니다. (docs.plasticscm.com)
  1. 예외 규칙
  • 규칙 앞에 ! 를 붙이면 예외(포함) 규칙입니다. 예외 규칙은 동일 타입의 무시 규칙보다 우선합니다. (docs.plasticscm.com)
  1. 기타 중요한 동작(릴리스 정보)
  • (릴리즈 노트) 파일명/확장자 규칙에 정규식 문자가 포함되어 있으면 자동으로 매치되도록 개선된 적이 있습니다(특정 버전 이후 **/ 접두가 필요 없게 됨). 즉, 확장자 규칙에 정규식 문자(*)가 들어가도 동작하는 경우가 있습니다. (참조: 5.0.44 릴리스노트). (plasticscm.com)

공식 예시들 (문서에서 발췌한 사용 예)

  • 와일드카드
    • /sample/temp/**
    • !/sample/temp/*.log (temp 아래 모든 것 무시하되, .log 는 제외)
    • /src/**-3/main.c
    • /doc/public/*.tex
  • 정규식

실무 팁 / 주의사항

  • 패턴은 대/소문자 구분(case-sensitive)으로 적용됩니다. (blog.plasticscm.com)
  • 정규식 모드(맨앞 ^, 맨뒤 $)를 깜빡하면 그 라인은 정규식으로 해석되지 않습니다 — 따라서 정규식을 쓰려면 반드시 ^...$ 로 감싸세요. (docs.plasticscm.com)
  • 포럼 사례들에서 lookahead 같은 고급 정규식(예: (?!Library/).*)도 사용되는 것을 볼 수 있어, 비교적 완전한 정규식 기능을 사용할 수 있습니다(다만 문서에서 엔진 종류(.NET/PCRE 등)를 명시하지 않을 수 있으니, 아주 특수한 정규식 기능을 쓸 때는 테스트를 권장). (forum.plasticscm.com)

원문(공식 문서) 링크 참고

  • Plastic SCM 문서 - Filter pattern files (ignore.conf / .plasticignore 규칙 설명). (docs.plasticscm.com)
  • 플라스틱 릴리스노트(관련 변경점: 정규식/확장자 처리 개선). (plasticscm.com)

원하시면

  • 지금 사용 중인 예시(무시하고 싶은 파일/폴더 구조)를 알려주시면, 해당 패턴을 ignore.conf 형식으로 정확히 만들어 드리겠습니다.

Citations:


정규식 패턴을 정확히 수정하세요

공식 문서에 따르면 .plasticignore^…$ 앵커로 감싼 줄을 정규식 모드로 해석하며, +, 그룹, 문자클래스 등 표준 정규식 기능을 모두 지원합니다.[1]
현재 glob 패턴(*.private, *.private.meta)만으로는 .private.숫자.private.숫자.meta를 무시하지 않으므로, 63–66행에 있는 두 줄을 다음과 같이 올바른 정규식으로 교체하세요.

(파일: .plasticignore, 63-66행)

-^*.private.[0-9]+$
-^*.private.[0-9]+.meta$
+^.*\.private\.[0-9]+$
+^.*\.private\.[0-9]+\.meta$

이제 경로 전체에서 .private. 뒤에 숫자만 있는 항목과, 그 뒤에 .meta가 붙은 항목을 정확히 무시할 수 있습니다.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
*.private
*.private.meta
^*.private.[0-9]+$
^*.private.[0-9]+.meta$
*.private
*.private.meta
^.*\.private\.[0-9]+$
^.*\.private\.[0-9]+\.meta$
🤖 Prompt for AI Agents
In .plasticignore around lines 63–66, the current glob entries (*.private and
*.private.meta) don't match filenames like ".private.123" or
".private.123.meta"; replace those two lines with anchored regular-expression
lines that match any path ending with ".private." followed by one or more digits
(for the numeric-only case) and a second anchored line that matches the same
plus a trailing ".meta" (for the .meta case) so the ignore rules correctly skip
both ".private.<digits>" and ".private.<digits>.meta" anywhere in the path.

~UnityDirMonSyncFile~*
**/Assets/StreamingAssets/aa.meta
**/assets/streamingassets/*/aa/*
Comment on lines +68 to +69
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

StreamingAssets 경로 패턴 대소문자/일관성 정리 제안

같은 목적의 규칙이 서로 다른 대소문자와 루트/글로브 표기를 혼용하고 있습니다. 한 가지 스타일로 통일하면 유지보수가 쉬워집니다.

적용 제안(diff):

-**/Assets/StreamingAssets/aa.meta
-**/assets/streamingassets/*/aa/*
+/[Aa]ssets/[Ss]treaming[Aa]ssets/aa.meta
+/[Aa]ssets/[Ss]treaming[Aa]ssets/*/aa/*
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**/Assets/StreamingAssets/aa.meta
**/assets/streamingassets/*/aa/*
/[Aa]ssets/[Ss]treaming[Aa]ssets/aa.meta
/[Aa]ssets/[Ss]treaming[Aa]ssets/*/aa/*
🤖 Prompt for AI Agents
In .plasticignore around lines 68-69, the two rules use inconsistent casing and
glob styles; replace them with a consistent style by using lowercase path
components ("assets/streamingassets") and a unified glob pattern set that covers
both the aa file(s) and their .meta (for example: a recursive glob under
assets/streamingassets for aa files and a corresponding pattern for aa.meta),
removing the mixed-case and root/glob duplication so all rules follow the same
lowercase, recursive-glob convention.


# 대용량 미디어 파일
*.mp4
*.avi
*.mov
*.wmv
*.flv
*.mkv
*.webm
*.m4a
*.m4v
*.m4b
*.m4r
*.m4p

# 특정 플러그인
/Assets/Plugins/FiveMinuteChat
/Assets/Plugins/WebGLTemplates
Loading