2008-10-24 22 views
7

Trên máy chủ SVN, có một tệp có tên là config.conf. Tôi có một phiên bản địa phương được gọi là cùng một điều (trong cùng một vị trí). Làm cách nào để đảm bảo rằng cấu hình cục bộ của tôi không bị ghi đè hoặc không được đăng ký?SVN: Làm cách nào để duy trì tệp config.blah cục bộ của mình?

Khi tôi ở đây, câu trả lời có khác với thư mục không?

Tôi đang sử dụng Tortoise SVN, nhưng câu trả lời dòng lệnh rất tuyệt.

Cảm ơn!

+0

Câu hỏi rất hữu ích. Câu trả lời khủng khiếp. Hầu như đặt tôi hoàn toàn khỏi SVN! Làm thế nào họ có thể không cho phép các tập tin cấu hình ?? Câu trả lời mẫu là không thể chấp nhận được vì các tệp có thể có nhiều cấp trong nhiều cây thư mục khác nhau và việc thay đổi chúng cho mỗi lập trình viên là không thực tế. –

+0

Tôi gặp vấn đề này với asp.net và web.config. Trong trường hợp đó, việc di chuyển tệp không phải là một tùy chọn vì .NET cần nó trong thư mục gốc của web. Rất phiền phức! –

Trả lời

3

SVN sẽ luôn nghĩ rằng tệp đó là một phần của kho lưu trữ nếu bạn đặt tên giống như vậy và gắn nó vào cùng một thư mục. lựa chọn của bạn là

  • Đổi tên nó (có thể viết một kịch bản shell để mv config.conf config.conf.theirs && mv config.conf.mine config.conf và sau đó chạy ứng dụng của bạn)
  • Move nó. Có thể thêm một số logic vào ứng dụng của bạn để kiểm tra config.conf trong thư mục cục bộ, người dùng cụ thể và sau đó sử dụng config.conf mặc định nếu không tìm thấy
3

Bạn có thể thêm một svn-bỏ qua [Xin lỗi nếu câu hỏi cơ bản này đã được yêu cầu trước khi ... Tôi nhìn nhưng không tìm thấy nó.]: Attribute vào thư mục địa phương của bạn mà không bao gồm config.conf hoặc thậm chí * conf

Nhưng tôi tin rằng, bạn phải hoàn toàn loại trừ tập tin này từ SVN, tức là nếu nó đã được kiểm tra vào repo, bạn sẽ cần phải xóa nó rfrom kho đầu tiên

4

Xin cảm ơn tất cả mọi người. Tôi nghĩ Eoin có thể phát điên, nhưng thực ra nó là sự thật. Bạn không thể bỏ qua một tệp có trong điều khiển phiên bản.

Theo các tài liệu Rùa

Bỏ qua mục versioned

phiên bản tập tin và thư mục không bao giờ thể bỏ qua - đó là một tính năng của Subversion. Nếu bạn đã phiên bản một tệp theo số , hãy đọc phần có tên “Bỏ qua các tệp đã được được phiên bản” để được hướng dẫn về cách “không phiên bản” nó.

Và từ các tài liệu SVN

Tôi có một tập tin trong dự án của tôi rằng mỗi nhà phát triển phải thay đổi, nhưng tôi không muốn những mods địa phương bao giờ được cam kết. Làm cách nào để tôi có thể thực hiện 'svn commit' bỏ qua tệp?

Câu trả lời là: không đặt tệp đó trong điều khiển phiên bản. Thay vào đó, hãy đặt mẫu của tệp theo phiên bản kiểm soát, chẳng hạn như "file.tmpl".

Sau đó, sau khi ban đầu 'svn thanh toán', có người dùng của bạn (hoặc xây dựng hệ thống của bạn) làm một bản sao hệ điều hành bình thường của mẫu vào tên tập tin thích hợp, và có người dùng tùy chỉnh các bản sao. Tệp không phiên bản, vì vậy sẽ không bao giờ được cam kết . Và nếu muốn, bạn có thể thêm tệp vào thuộc tính svn: ignore của thư mục gốc, do đó, không phải hiển thị dưới dạng '?' trong lệnh 'svn status' .

Điều này thật khủng khiếp ... Tôi đoán tôi sẽ phải cẩn thận với tệp đó và tạo bản sao lưu cấu hình của riêng mình (mà tôi có thể bỏ qua).

Cảm ơn mọi người vì câu trả lời của bạn.

5
  1. loại trừ nó ra khỏi kho lưu trữ với svn: ignore (bạn sẽ phải xóa nó khỏi kho lưu trữ đầu tiên)
  2. giữ một bản sao trong config.conf.default với các giá trị giữ chỗ. Bạn có thể giữ bản sao mặc định trong kho lưu trữ.
  3. sử dụng config.conf như bình thường - lật đổ sẽ không thấy nó nữa
+0

cảm ơn, vâng, đây là cách lật đổ chính thức để làm điều đó. –

1

Khi có một subversioning với các tập tin cấu hình, tôi đã tìm thấy rất hữu ích để có toàn bộ thân cây dành riêng cho nó. Tại sao? Hầu hết bởi vì bạn chỉ có thể có hai bản sao lưu trữ cục bộ, một bản sao cho sử dụng cục bộ, một cho các chế độ điều khiển từ xa.

Như thế này:

/workdir/cấu hình [là một liên kết đến/workdir/conf_local]
/workdir/conf_local [giữ conf địa phương được cập nhật nhưng không ovverride xác lập cá nhân]
/workdir/conf_remote [luôn được cập nhật với dữ liệu từ xa, vì vậy tôi có thể cam kết thay đổi]

1

Tôi không biết bạn có loại thiết lập gì, hoặc nếu điều này có thể áp dụng cho bất kỳ ngôn ngữ nào bạn đang sử dụng, nhưng đây là cách tôi làm điều đó với các trang web và PHP. Trước tiên, bạn tạo cấu hình mặc định, có thể có giá trị ngây thơ không hoạt động cho 90% thiết lập, nhưng cung cấp cho bạn tham chiếu về giá trị nào và những gì thực sự có thể được định cấu hình. Tập lệnh này thường được gọi là 'config.default.php' hoặc nội dung nào đó trong một mạch tương tự. Ở cuối tập lệnh này là điều gì đó phù hợp với:

if (file_exists("config.php")) require "config.php"; 

Logic đơn giản. Nếu có ghi đè người dùng cho tệp cấu hình, sau đó tải nó vào và để nó ghi đè lên bất cứ điều gì cần thiết. Sau đó, chỉ cần giữ tập tin cấu hình người dùng này bỏ qua thông qua các phương pháp đã được giải thích trên tất cả các máy phát triển, và bất kỳ máy sản xuất giữ một thanh toán svn vì lý do gì. Đây là một thiết lập rất linh hoạt, và các thủ tục tương tự có thể được thiết lập cho hầu hết các ngôn ngữ/môi trường.

+0

Tuyệt. Trong thực tế, đây là cho PHP dev, do đó, câu trả lời của bạn có thể làm việc cho chúng tôi. –

10

TortoiseSVN có một câu trả lời tốt đẹp cho một nửa của vấn đề này: bỏ qua-on-cam

Điều này ngăn cản bạn vô tình phạm "chỉ địa phương" thay đổi, nhưng nó không giải quyết được vấn đề trên vô tình cập nhật một tệp đã thay đổi cục bộ.

Kiểm tra bài viết trên blog này cho các chi tiết làm thế nào để:

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html

+1

Tuyệt vời. Tôi nghĩ rằng rùa có lẽ là chương trình duy nhất tôi bỏ lỡ kể từ khi tôi đang ở trên OS X, nhưng chúng tôi đang chuyển sang GIT anyway :) –

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