2012-01-19 22 views
15

Gần đây tôi đã chuyển máy phát triển của mình từ Windows XP sang Windows 7 và kể từ khi chuyển đổi đó, tôi gặp sự cố với quyền tệp khi tôi thực hiện thao tác với Tortoise SVN.Tệp mất quyền truy cập IIS_IUSRS sau khi hoạt động Tortoise SVN

Ví dụ: Tôi có hai trang web ASP.NET được đặt trên IIS cục bộ của mình. BetaDevlo. Beta là séc của chi nhánh tôi đang làm việc và Devlo là séc của Trunk.
tôi thực hiện một số thay đổi trên trang web Beta và Kiểm tra nó ở
Sau đó, tôi làm một merge tái hòa nhập các chi nhánh tại các xe tải trên trang web Devlo, nhưng tôi đã nhận lỗi này khi tôi kiểm tra nó:.

Parser Error 
Description: An error occurred during the parsing of a resource required to 
service this request. Please review the following specific parse error details 
and modify your source file appropriately. 

Parser Error Message: Access to the path 'C:\[...]' is denied. 

Sau khi điều tra, tôi phát hiện ra rằng mọi tệp đã bị Tortoise SVN sửa đổi merge mất quyền tệp của họ (Đọc, Đọc & Thi hành) cho người dùng IUSEIIS_IUSRS.

Tôi có thể đặt lại thủ công, nhưng điều này xảy ra mỗi lần tôi thực hiện thao tác loại này. Có cách nào để giữ cho các quyền đó không bị thay đổi bởi hoạt động SVN không?


Cập nhật
Trước khi Merge, các tập tin đã được kế thừa là sự cho phép của thư mục mẹ (đã nó phải làm.)
Before Merge

Nhưng không sau khi hợp nhất:

After Merge

Tệp gốc (trong thư mục beta) được thừa hưởng là quyền từ thư mục mẹ. Tại sao quyền thừa kế quyền của khối TortoiseSVN (rõ ràng?)?

+0

Bạn có thể thực hiện hợp nhất với dòng lệnh svn.exe để xem nếu nó thực sự là TortoiseSVN chứ không phải svn.exe? –

+0

svn.exe? Tôi không có phiên bản dòng lệnh của SVN được cài đặt. (Và tôi đã thực hiện tìm kiếm tập tin cho SVN.EXE). Thật sự nó có ảnh hưởng sao? – DavRob60

+0

Nó sẽ giúp xác định rõ ràng vấn đề. TortoiseSVN bao gồm nó, nhưng có lẽ nó được nhúng trong các tệp nhị phân của chúng, điều đó có thể giải thích tại sao bạn không thể tìm thấy nó. Bạn có thể tải xuống ứng dụng độc lập tại đây: http://subversion.apache.org/packages.html#windows –

Trả lời

12

tôi đã cùng một vấn đề và cố định nó với sự giúp đỡ của này SO trả lời: https://stackoverflow.com/a/8993163/361831

Câu trả lời đề cập rằng các tập tin cập nhật được sao chép vào một thư mục svn/tmp đó là nằm ở cấp cao nhất của bản sao làm việc của bạn (như của tortoiseSVN 1.7). Thư mục cấp cao nhất này không có quyền IIS nên tôi đoán chúng không được kế thừa trong bản sao. Vì vậy, tôi chỉ cần thiết lập các điều khoản IIS cho rằng thư mục cấp cao nhất và thiết lập để kế thừa, và điều đó cố định vấn đề.

+1

Đã thử nghiệm và làm việc, nhưng vẫn còn một vấn đề khi cấu trúc thư mục của bạn * cần * để áp dụng các quyền khác nhau cho một số thư mục con cụ thể. Giống như quyền ghi trên thư mục phụ tải lên hoặc bất kỳ thứ gì. Nhưng, ít nhất, gốc rễ của vấn đề được xác định. Cảm ơn! – DavRob60

+0

Khi bạn không thể thay đổi quyền của thư mục .svn, vì một số thư mục có các quyền khác nhau. Bạn có thể [đặt lại quyền sử dụng tập lệnh/icacls] (http://serverfault.com/questions/475612/replace-permission-entries-on-all-child-objects-using-icacls/601853#601853) cũng: 'cd D: \ trang web \ your-site', 'svn update',' icacls 'D: \ trang web \ your-site \ httpdocs \ * "/ q/c/t/đặt lại' –

-1

Bạn sẽ có thể đặt các quyền này trên thư mục chứa các tệp và sau đó cho phép các tệp kế thừa các quyền này, thay vì đặt rõ ràng quyền trên các tệp.

TortoiseSVN có thể xóa và tạo tệp thay vì đổi tên. Khi một tệp mới được tạo theo cách này, tệp sẽ không có quyền ban đầu, nhưng nó sẽ kế thừa các quyền từ vùng chứa của nó.

Xem thêm: Explicit vs. Inherited Permissions

Mỗi quyền mà tồn tại có thể được gán một trong hai cách: rõ ràng hoặc do thừa kế. Vì lý do này, các quyền là được gọi là quyền rõ ràng và quyền được thừa hưởng.

  • Quyền rõ ràng là các quyền được đặt theo mặc định khi đối tượng được tạo hoặc theo hành động của người dùng.
  • Quyền thừa kế là các quyền được cấp cho một đối tượng vì nó là con của đối tượng mẹ.

Tương tự như cách quản lý quyền đối với nhóm người dùng, quyền được quản lý tốt nhất cho vùng chứa đối tượng. Các đối tượng trong vùng chứa kế thừa tất cả quyền truy cập trong vùng chứa đó.

Xem thêm: TortoiseSVN - Deleting, Moving and Renaming

Kể từ khi đặt lại tên và di chuyển được thực hiện như một delete tiếp theo là một add ...

+0

Xem cập nhật của tôi, các quyền được đặt để được kế thừa từ vùng chứa của nó. – DavRob60

+0

"Khi một tệp mới được tạo theo cách này, nó sẽ không có quyền ban đầu, nhưng nó sẽ kế thừa quyền từ vùng chứa của nó" - vấn đề được nêu trong câu hỏi chính xác là điều này không xảy ra. – bzlm

-1

tôi đã cùng một vấn đề trên cả hai máy 64bit Win7 của tôi. Tôi sẽ kiểm tra mã trên một, đi đến khác, làm một cập nhật Tortoise SVN, và phải thiết lập lại các điều khoản trên thư mục để cho phép các thư mục của phụ huynh tuyên truyền xuống.

Cuối cùng tôi đã tìm thấy bài viết này, đã thử nó, và hai tuần sau nó dường như đang nắm giữ.

  • Mở Trình chỉnh sửa đăng ký (nhấp vào Bắt đầu> Chạy, nhập regedit, sau đó nhấn ENTER).

  • Xác định vị trí khóa registry sau đây:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer

  • Với phím chọn, trên các Chỉnh sửa trình đơn, nhấp vào Thêm giá trị, và sau đó thêm giá trị đăng ký sau:

  • tên giá trị: ForceCopyAclwithFile loại

  • dữ liệu: DWORD

  • Dữ liệu giá trị: 1

  • Thoát khỏi Trình chỉnh sửa đăng ký.

http://kb.globalscape.com/KnowledgebaseArticle10473.aspx

+0

Đã không làm việc cho tôi. Và sau khi đọc bài báo, tôi không thấy nó có thể giúp ích gì. – DavRob60

4

Khi phiên bản phụ cập nhật tệp, tệp đầu tiên sẽ tạo phiên bản tạm thời bằng .svn/tmp /. Sau đó nó di chuyển tệp vào đúng vị trí. (Điều này để tránh tham nhũng)

Trong 1.6 nó đã làm điều này cho mỗi thư mục của chính nó, nhưng trong 1.7 chỉ có một .svn trong thư mục cấp cao nhất của bản sao làm việc của bạn.

Nếu bằng cách nào đó các quyền hệ thống tệp của thư mục .svn này bị hạn chế, có thể các hạn chế được sao chép với tệp khi nó được di chuyển tại chỗ.(Subversion không tự thay đổi quyền trên Windows)

TRẢ LỜI: Tìm thư mục .svn của bạn cho dự án đó và sửa các quyền với quyền mà dự án của bạn cần.

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