2013-09-07 6 views
2

가끔 워크 플로우에 통합 할 수있는 몇 가지 오래된 프로젝트가 있습니다. 나중에 어느 수준에서 공동 작업 할 수있는 옵션을 갖는 것이 좋을 수 있습니다.Workflow Git 외부 비 git 사용자가있는 기존 프로젝트를위한 FTP

  1. 첫 번째 문제는 프로젝트 코드에 액세스하는 유일한 방법은 ftp-only입니다. 공급자가 제공하는 셸 액세스가 없습니다.

  2. 두 번째 문제 또는 contraint

    는 제 3 자가 전혀 자식을 사용하지 않고 (내가 못생긴을 알고) 라이브 FTP 서버의 파일이 변경 될 수 있습니다 내가 방법을 밀어 일부 후 후크를 사용하는 경우,이 휴식 것입니다. 불행히도, 그 외부 사용자에게 git 워크 플로우를 가르치는 것은 무지가 행복이기 때문에 선택 사항이 아닙니다.

내가 실제로하고 싶은 것은 그 외부 변화 (2)를 추적하고 git를 사용하여 개발 워크 플로우에 도움이되는 것입니다.

내가 잠시 동안 프로젝트를 건드리지 않았다고 생각해. 내가 돌아 왔을 때 나는 무엇이 완료되었는지보고 싶다.

하지만 저장소를 설치해야하는 방법과 장소에 대해 혼란 스럽습니다.

답변

3

FTP를 통해 힘내 배포를 수행하는 것은 매우 편리합니다. git-ftp입니다. 유감 스럽지만 이는 한 가지 방법입니다. 즉 대상 파일이 귀하에 의해서만 (그리고 git-ftp을 통해) 업데이트되었다고 가정합니다.

경우에 따라서는 원격 변경 사항이 발생했을 때 합성 기록을 만들어야 할 수도 있습니다. 그럴 수있는 유일한 방법은 파일을 가져 와서 수동으로 "델타"를 만드는 것입니다. 따라서이 경우에는 @VonC와 함께 있습니다 — 파일을 다시 전송해야합니다 (rsync). FTP 프로토콜 자체를 사용하여 원격 계층을 크롤링 할 수있는 유틸리티를 사용할 수없는 경우이 효율성이 우수합니까? 누락 된/더 최근의 파일만을 가져 와서) 변경 사항을 힘내에게 알리십시오.

이 프로세스는 별도의 분기 또는 임시 쓰레기 ​​분기에서 수행 될 수 있습니다.기본적으로 원격 파일의 상태를 마지막으로 생각한 시점을 생각한 지점에서 분기를 분기 한 다음 체크 아웃을 통해 syncronization 프로그램을 실행합니다. (그러한 프로그램 트랙 제거, 즉 원격 측에서 제거 된 파일을 로컬에서 제거해야합니다.) 그런 다음 git add --all .을 실행하여 모든 업데이트 된 파일, 모든 제거를 커밋하고 모든 제거 작업을 커밋하기위한 단계를 만듭니다. 현재 untracked 파일. 그런 다음 커밋을 기록하십시오. 이 커밋은 실제로 리모트에 대한 변경을 나타냅니다. 그런 다음이 상태에 대한 추가 작업을 할 수 있습니다.

+0

나는'git-ftp'에 대해 몰랐다. +1 – VonC

2

쉘 액세스 권한이 없다면 로컬에서 저장소를 설정해야합니다.

내용은 ftp를 통해 서버에서 가져온 내용입니다.
질문 "How to use rsync over FTP"에는 sftp를 통한 원격 파일 집합의 내용을 미러링하는 몇 가지 방법이 있습니다.

해당 내용이 있으면, 당신이 할 수 있습니다, 당신은

  • 하나 dev 지점 (다시 아무것도 밀어 전에) 서버의 미러 이미지로 업데이트 것이라고

    • 하나 mirror 지점 당신이 미러 분기를 병합하고 새로운 기능을 추가 할 위치를 지정합니다. 거기에서 새 파일을 ftp를 통해 서버로 다시 푸시 할 수 있습니다.

    브랜치 미러링을 서버에 설치하면 dev에 남은 내용과 현재 서버에있는 내용을 빠르게 비교할 수 있습니다.