2009-04-03 36 views
21

Tôi có một tệp cài đặt đang được kiểm soát phiên bản bằng cách sử dụng phiên bản phụ. Mọi người đều có bản sao của riêng mình của tập tin này, và tôi cần điều này không bao giờ được cam kết. Tuy nhiên, như tôi đã nói, đã có một bản sao dưới sự kiểm soát phiên bản. Câu hỏi của tôi là: làm cách nào để xóa tệp này khỏi kiểm soát phiên bản mà không xóa tệp của mọi người, sau đó thêm tệp vào danh sách bỏ qua để nó không được cam kết? Tôi đang sử dụng dòng lệnh linux svn.SVN: Bỏ qua một tệp đã cam kết

+0

có thể trùng lặp của [svn bỏ qua mà không xóa tệp?] (Http://stackoverflow.com/questions/951032/svn-ignore-without-deleting-files) – tchrist

Trả lời

20

Thanh toán sạch, svn delete tệp và thêm bỏ qua. Sau đó cam kết điều này. Mọi người khác sẽ phải chăm sóc (một lần) rằng bản sao cục bộ của họ không bị xóa trên svn update tiếp theo, nhưng sau đó, tệp cục bộ sẽ không bị xáo trộn và bị SVN bỏ qua.

+0

Làm thế nào (như "mọi người khác") bạn có ngăn không xóa khi cập nhật? –

+0

Di chuyển nó đi trước khi chạy bản cập nhật. Sao chép nó trở lại sau đó. –

+1

Làm thế nào đến đó không phải là một cách dễ dàng hơn để làm điều này? Ai đó có thể giải thích? – DaveS

15

Nếu bạn xóa tệp khỏi kiểm soát phiên bản, nhà phát triển mới làm gì với dự án (hoặc người vô tình xóa bản sao cục bộ của mình) nhận được sau khi thanh toán ban đầu? Điều gì sẽ xảy ra nếu có bổ sung vào tệp cài đặt?

Tôi sẽ đề nghị những điều sau: Giữ tệp cài đặt mặc định (không có mật khẩu, tên máy chủ, chuỗi kết nối, v.v.) trong SVN, đặt tên là settings.dist và để mã hoạt động với bản sao này có tên settings . Mỗi nhà phát triển phải tạo bản sao này một lần và sau đó có thể làm việc với các cài đặt được cá nhân hóa của cô ấy. Nếu có bổ sung, hãy thêm chúng vào settings.dist - mọi người khác sẽ nhận được bản cập nhật và có thể hợp nhất sau đó vào bản sao được cá nhân hóa của cô ấy.

0

chỉ cần xác định tệp có chứa cài đặt sẽ ghi đè cài đặt mặc định. Tệp này không được chọn vào Subversion và mỗi nhà phát triển chịu trách nhiệm duy trì tệp này theo môi trường của họ.

Trong một thế giới Ant-based, bạn sẽ có các file:

settings.properties 
settings-local.properties (ignored for Subversion) 

và trong build.xml tập tin của bạn

<property file="settings-local.properties"/> 
<property file="settings.properties"/> 

Đối với những người không thể kết nối các dấu chấm:

  1. sửa đổi tệp build.xml như được đề xuất
  2. s Tuy nhiên, người setting-local.properties như phớt lờ
  3. trong một mục tiêu init của xây dựng của bạn, sao chép settings.properties để settings-local.properties
  4. chờ một vài ngày cho đến khi tất cả mọi người có cơ hội để chạy được mục tiêu này
  5. xóa setting.properties từ Subversion

Thì đấy, mỗi nhà phát triển có setting-local.properties riêng của mình và tất cả mọi thứ được thực hiện tự động (và không có nhà phát triển mất các thiết lập của mình, mà sẽ xảy ra nếu bạn xóa các tập tin từ tàn nhẫn Suvbersion và không có "Mọi người khác sẽ phải chăm sóc ...")

+0

Không hỗ trợ khắc phục sự cố mặc dù –

+0

Rất tiếc, câu trả lời này đã bị bỏ phiếu rất nhiều lần vì đó là câu trả lời duy nhất không bỏ qua phần không xóa tệp cục bộ của mọi người. –

-4

[[Tôi mới dùng chức năng lật đổ, vì vậy có thể điều này không có ý nghĩa. đánh dấu trang này là wiki - nếu bạn biết câu trả lời đúng, vui lòng PHỤ LỤC trong phần sau]]

Bạn không thể có các bước thanh toán tùy chỉnh để mỗi người dùng có một thư mục cài đặt khác nhau?

$ svn checkout http://example.com/project project 
.. 
$ dir project 
original_settings\  folder1\  folder2\ 
$ svn checkout http://example.com/project/aaron_settings project\settings 
.. 
$ dir project 
original_settings\  folder1\  folder2\ settings\ 

Hoặc cho người dùng mới

$ svn import project\settings http://example.com/project/aaron_settings 

gì tôi nhận xét là bạn muốn mỗi người dùng có một cái nhìn tùy chỉnh của kho. Trong các hệ thống điều khiển phiên bản khác, bạn có thể thiết lập một danh sách tùy chỉnh trong đó các dự án bạn đang sử dụng và bạn không phải là những dự án nào và bạn đặt ở đâu ở những nơi lẻ.

Tính năng này có hoạt động ở chế độ lật đổ không? Đoạn mã trên trông thực sự nguy hiểm, nhưng có lẽ tôi đang làm sai.

WIKI:

(không có gì chưa)

1

Sau khi bạn xóa các tập tin, người dùng của bạn sẽ phải khôi phục lại các tập tin từ kho lưu trữ sử dụng svn export.

$ svn export -r x path ./ 

đâu x là một phiên bản mà tập tin đã tồn tại trước khi nó đã bị xóa, path là đường dẫn đầy đủ đến tập tin, và ./ là nơi mà các tập tin sẽ được đặt.

Xem svn help export để biết thêm thông tin.

0

Tôi gặp sự cố tương tự. Trong trường hợp của tôi, đó là tệp cài đặt người dùng được tạo tự động (studio trực quan) đã vô tình được kiểm tra sớm trong dự án. Trong khi chỉ xóa nó có thể làm việc, có vẻ như nhiều hơn correct để có nó loại bỏ khỏi lịch sử, vì nó không bao giờ được cho là có trong đó ở nơi đầu tiên.

tôi tình cờ này, đó có thể là một tính năng mới kể từ khi câu hỏi này ban đầu được đăng tải 7,5 năm trước đây:

https://stackoverflow.com/a/6025750/779130

Có vẻ như một ý tưởng sẽ được:

1) create a dump of the project. 
2) filter the dump using `svndumpfilter` to exclude the unwanted file(s). 
3) load the dump as a new project. 

này có thể là cách duy nhất để loại bỏ hoàn toàn tệp. Trong hầu hết các trường hợp, phương pháp "xóa và bỏ qua" có thể đủ tốt.

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