2015-01-10 17 views
5

Tôi đã làm việc với luồng git một lúc và bây giờ đã đến lúc hoàn thành bản phát hành đầu tiên v1.0.0. Tôi đang sử dụng SourceTree trên Windows cho điều đó.Kết thúc phát hành dòng Git - Quyền bị từ chối

Khi tôi muốn kết thúc việc phát hành nó tôi đã nhận lỗi này:

sh.exe C:\Users\xy\AppData\Local\Atlassian\SourceTree\gitflow_local\gitflow\git-flow release finish -f C:\Users\xy\AppData\Local\Temp\2ffrpxef.20z v1.0.0 
Switched to branch 'master' 

error: unable to create file component/admin/config.xml (Permission denied) 

There were merge conflicts. 

Completed with errors, see above. 

Tôi không có ý tưởng tại sao lỗi này xảy ra như không nên có bất kỳ vấn đề cho phép tập tin như không bao giờ xảy ra trước khi làm việc trong chi nhánh tính năng.

Sau khi thất bại ở trên, tôi đã cơ bản tất cả các thay đổi của tôi phát triển liên quan đến chủ trong bản sao làm việc của tôi. Tôi đã chỉ đơn giản là tiêu tan tất cả những thay đổi và loại bỏ các tập tin mới và như vậy. Không có xung đột nào. Vì vậy, tôi lại sẵn sàng hoàn thành bản phát hành của mình.

Hiện nay phát triển và phát hành là trên cùng một sân khấu và tất nhiên rất nhiều cam kết trước chủ: My current repository

Làm thế nào tôi có thể hoàn thành phát hành của tôi mà không cần chạy vào vấn đề này?

Có cách nào để buộc giai đoạn phát triển/phát hành hiện tại khi làm chủ không? Về cơ bản tất cả các cam kết phát triển nên được áp dụng vào nhánh chính - vì vậy tất cả các xung đột hợp nhất khi chúng xuất hiện, tôi muốn giải quyết với phiên bản chi nhánh phát triển. Điều đó có thể không?

Trả lời

1

tôi tìm thấy một người nào đó có thể giúp tôi với vấn đề này và ông đã có ý tưởng có liên quan đến một số quy trình khác đang khóa tệp.

Để xác minh điều này, tôi đã sao chép kho lưu trữ của mình ở một nơi khác, mở nó bằng SourceTree và tôi có thể thực hiện bản phát hành mà không gặp sự cố nào.

Do đó, tôi đoán nó có liên quan đến tệp đang bị khóa từ nội dung nào đó.

Mặc dù tôi đã nghi ngờ IDE của mình (PHPStorm), tôi không thể xác định nó khi tôi đóng nó và sau đó vẫn có vấn đề về quyền truy cập tệp. Có thể đó là Dropbox (toàn bộ kho lưu trữ nằm trong đó), ai biết được. Nhưng bây giờ tôi biết ít nhất một công việc xung quanh.

+0

Phân tích thú vị. +1 – VonC

+0

Lấy cảm hứng từ OP, tôi khởi động lại Windows và nó hoạt động. Hơi lạ. – gzc

0

Như minh họa trong issue 107, mà thông báo lỗi có nghĩa là kết hợp không thể hoàn thành vì mâu thuẫn 'nhìn thấy git-flow-release#L225-L240):

if ! git_is_branch_merged_into "$BRANCH" "$MASTER_BRANCH"; then 
    git checkout "$MASTER_BRANCH" || \ 
     die "Could not check out $MASTER_BRANCH." 
    git merge --no-ff "$BRANCH" || \ 
     die "There were merge conflicts." 

Điều đó có nghĩa bạn cần phải resolve the merge conflicts, và complete the merge first.

Các OP hbit thêm

Basically all the development commits should be applied onto the master branch - so all merge conflicts when they appear I'd like to solve with the development branch version.

Đó là điển hình của một chi nhánh develop rebased trên master:

  • rebase có nghĩa là bạn phát lại chi nhánh develop trên đầu trang của master, giải quyết mâu thuẫn trong chi nhánh develop
  • rebase có nghĩa là, sau khi chi nhánh develop nằm ở trên cùng của master (rebased), hợp nhất vào master (được thực hiện bởi git-flow release finish) sẽ là một bước tiến nhanh chóng.
+0

Như bạn có thể thấy từ màn hình của tôi, tất cả các cam kết chi nhánh 'feature/...' đã đi vào một commit trên nhánh 'development' dựa trên nhánh' master'. Vì vậy, tôi không chắc chắn liệu tôi có cần một rebase hay không - tôi sắp nghĩ rằng tôi đang ở giai đoạn mà một 'git-flow release' sẽ là một sự hợp nhất nhanh về phía trước. Bạn có hiểu ý tôi không? – hbit

0

Tôi đoán lỗi này có thể xảy ra không chỉ nếu bạn đã sửa đổi quyền mà còn nếu bạn sửa đổi quyền sở hữu tệp đó (có thể dẫn đến thay đổi quyền).

Tôi không thể thoát khỏi vấn đề này bản thân mình vì vậy những gì tôi đã làm (và làm việc cho tôi) là một cái gì đó giống như "ẩn bộ xương trong tủ quần áo". Mục đích là để cô lập tệp buggy thành một nhánh thử nghiệm mà bạn có thể xóa sau đó.

sudo rm badfile.xxx - loại bỏ tập tin vật lý, chắc chắn rằng bạn có một bản sao để thêm nó sau này

git add —all badfile.xxx - đánh dấu nó như xóa trong giai đoạn

git checkout -b some_local_branch_we_ll_never_use - tạo ra một chi nhánh mới trước khi cam kết

git commit -m "Delete the bad file" - cam kết xóa tệp không hợp lệ trong chi nhánh mới, thư mục hoạt động phải sạch

git checkout my_good_old_branch - quay lại bạn làm việc chi nhánh và tiếp tục với cuộc sống của bạn ...

Sau đó bạn có thể xóa chi nhánh thử nghiệm của bạn:

git branch -D some_branch_we_ll_never_use

git status

Các vấn đề liên quan