180bpm

perforce에서 xfl 파일을 수정할때 삭제된 xml이 Depot과 sync되지 않는 문제 해결 본문

Flash/기타

perforce에서 xfl 파일을 수정할때 삭제된 xml이 Depot과 sync되지 않는 문제 해결

powdersnow 2012. 9. 11. 16:20

fla는 text 속성이 아닌 binary 속성이기 때문에 version control이 거의 불가능하다시피 했습니다.

하지만 CS4부터 fla의 모든 데이터를 XML 형식으로 저장해주는 'xfl' 확장자가 생겼고 이번에 CS6에서 안정성이 강화되었다길래 xfl로 개발 형식을 바꿨습니다.


다만 xfl 파일은 folder depth가 너무 깊고, xml이 빈번하게 변경, 삭제되는데 이번에

회사에서 사용하는 version control인 Perforce에서 Workspace에서 삭제된 xml 파일이 depot과 연동되지 않는 문제가 생겼습니다.


영어가 짧아서 구글링 할 자시고도 없이 이것저것 눌러봐서 해결 했습니다.


1. 작업할 xfl을 엽니다. lib안에는 import한 components들이 있습니다.



2. 이 파일들은 폴더링 되서 xml 파일로 저장/관리됩니다.


3. Perforce에선 수정을 하기 위해선 우선 'Check Out'을 해야 합니다.

저는 xfl 형식은 folder = fla 로 이해하고 있기 때문에 폴더 전체를 Check Out 합니다.


4. 그리고 수정을 합니다.

테스트를 위해 import 했던 comp.를 모두 삭제했습니다. 그리고 저장을 하면 다음 그림과 같이 됩니다.


5. Workspace, 그러니까 local에서 작업하는 폴더에서는 lib. 안에 파일들이 전부 사라졌습니다.

lib.에 아무것도 없기 때문입니다.

우리는 작업을 위해 Check Out을 했고 그 Check Out 한 파일들은 Local에서 삭제 되었음에도 불구하고 Change List에 남아있습니다!!


원래 perforce에서는 파일을 삭제하려면 Mark For Delete 커맨드를 이용해야만 정상적으로 인식하고 depot과 sync가 됩니다.

하지만, xfl에서는 불필요하다고 판단된 파일을 임의로 삭제했기 때문에 sync가 꼬이는 증상이 생긴것입니다.


그래서 'submit'을 하면 "** 파일이 없습니다'라는 error log가 출력이 됩니다.

여기서 'revert unchanged files'을 하면 문제 없이 submit이 되긴 합니다.

다만 depot에는 파일이 남아있기 때문에 'get latest revision'을 하면 삭제되었던 파일이 다시 받아집니다.


6. 그래서 diff against도 눌러보고 이것저것 눌러보다가 Reconcile Offline Work 라는게 있길래 눌러봤습니다.

원하던 작업이 됩니다!!

Reconcile이 뭔 뜻인지 몰라서 안눌러봤거든요.. 그래서 대충 'workspace에 있는 파일을 Depot으로 일치시킨다~'로 이해했습니다.


7. 네 결과는 잘 되었습니다.

없는 파일인데도 'Check Out' 이 되었던 파일은 알아서 mark for delete 되었습니다.

depot에서도 가서 확인해보면 없습니다!


다만, revision이 남아있기 때문에 똑같은 xml이 생긴다면 #1이 아닌 삭제되었던 revision의 +1값으로 생성됩니다.

이상입니다.

Comments