2011-09-08 32 views

Trả lời

2

Như đã đề cập ở trên, bạn có thể sử dụng tính năng tự động tính để làm điều này, nhưng bạn nên tự hỏi mình một câu hỏi lớn:

  • Tại sao bạn muốn sử dụng từ khoá?

Khi bạn đang phát triển, bạn có thể dễ dàng sử dụng các lệnh svn khác nhau để cung cấp cho bạn mọi thông tin được lưu trữ trong từ khóa, vì vậy điều này thực sự không cần thiết.

Một số người cho rằng từ khóa là cần thiết khi phần mềm có trên trang web của khách hàng, nhưng có cơ chế tốt hơn để sử dụng để xác thực bản sửa đổi phần mềm bạn đang sử dụng. Ví dụ, trong quá trình biên dịch, bạn có thể tạo một tệp có ID phiên bản có ý nghĩa hơn (Có thể là số phát hành và ngày tạo) và hiển thị tệp này dưới dạng "hộp giới thiệu". ID có ý nghĩa hơn.

Tôi cũng biết rằng tôi không thể tin tưởng các từ khóa có trong các tập lệnh shell có thể nằm trong trang web của khách hàng. Kịch bản lệnh shell có thể nói số sửa đổi, nhưng kịch bản lệnh shell có thể đã được chỉnh sửa.

Nếu bạn thực sự, thực sự cần điều này và đó là thứ cần được thực thi trên trang web của bạn, bạn sẽ cần trình kích hoạt trước cam kết thất bại khi thuộc tính từ khóa không có trên tệp. Các thuộc tính tự động chỉ có thể được đặt cho một máy khách. Điều đó có nghĩa là bạn phải đảm bảo rằng mỗi nhà phát triển của bạn có tập hợp này. Mỗi khi họ nhận được một máy tính mới, bạn sẽ phải xác minh lại nó.

Ngoài ra, nó cũng đảm bảo rằng thuộc tính có trong hồ sơ. Các tệp cũ hơn trong kho lưu trữ sẽ không được thêm kỳ diệu ngay cả khi chúng được chỉnh sửa. (Thuộc tính tự động chỉ được thêm khi tệp được thêm vào kho lưu trữ). Không có gì ngăn cản nhà phát triển xóa nó. Hoặc, chỉnh sửa các thuộc tính tự động của chúng trong thiết lập của chúng.

Bạn phải sử dụng trình kích hoạt trước cam kết để đảm bảo rằng thuộc tính svn: keywords nằm trên mỗi và mọi tệp được yêu cầu và được đặt chính xác. Móc trước cam kết sẽ đơn giản từ chối thực hiện giao dịch mà thuộc tính này không được đặt. Nhà phát triển sẽ buộc phải thêm thuộc tính. Sau khi nắm bắt một số, các nhà phát triển sẽ thiết lập máy khách Subversion của họ để sử dụng các thuộc tính tự động và duy trì nó.

Tôi chỉ tình cờ có một số pre-commit trigger có thể thực thi điều này.Trình kích hoạt được viết bằng Perl, nhưng không yêu cầu gì ngoài các mô-đun chuẩn, do đó rất dễ thiết lập. Bạn có thể cấu hình nó để nói những tập tin nào yêu cầu từ khóa và những gì nó cần được thiết lập. Nếu tệp đang được cam kết và không có thuộc tính svn: keywords được đặt thành giá trị chính xác, cam kết sẽ không thành công và thông báo lỗi sẽ giải thích lý do tại sao cam kết không thành công và nhà phát triển cần làm gì.

+0

1 điểm Rất tốt –

11

Vâng, với những đặc tính tự động Subversion: http://www.dcepler.net/post.cfm/subversion-auto-properties

Mỗi mục của phần [auto-props] là một glob tập tin sau đó là các thuộc tính Subversion để tự động áp dụng bất cứ khi nào một tập tin phù hợp với các glob là thêm. Ví dụ, nếu bạn muốn tất cả các file CPP để có một tập hợp một số tính theo mặc định, sau đó làm theo các hướng dẫn trên http://www.dcepler.net/post.cfm/subversion-auto-properties và sửa đổi dòng sau theo sở thích của bạn:

 
*.cpp  = svn:eol-style=native; svn:keywords="Author Date Id Rev URL"; svn:mime-type=text/plain 

Lưu ý rằng nếu bạn thêm vào file với svn add và sau đó bật thuộc tính tự động, các thuộc tính tự động sẽ không được áp dụng cho các tệp được thêm. Thuộc tính tự động chỉ được áp dụng cho các tệp được thêm sau khi bật thuộc tính tự động.

+0

cho mới hơn hệ điều hành windows, những tập tin cấu hình có thể là trong C: \ Users \ _user_ \ AppData \ Roaming \ Subversion – sartoris

1

Lưu trữ các từ khóa SVN trong các chương trình PL/SQL (và các tập lệnh SQL) đã thêm giá trị đáng kể vào các quy trình phát triển và tính toàn vẹn của hệ thống. Khi một thay đổi được gửi đến sản xuất, nó được theo dõi và quản lý bởi từ khóa sửa đổi. Trước khi thực hiện điều này, quá trình di chuyển các tập tin, và đảm bảo rằng các tập tin chính xác đã được triển khai là rất dễ bị lỗi. Ngoài ra, chúng tôi có thể thẩm vấn cơ sở dữ liệu cho dữ liệu phiên bản (xem SQL bên dưới).

-- 
    --------- Begin Version Control Data---------------------------------------- 
    -- $LastChangedDate: 2014-06-27 13:45:09 -0500 (Fri, 27 Jun 2014) $ 
    -- $Revision: 1750 $ 
    -- $LastChangedBy: kilarvk $ 
    -- $URL: svn://jdcsubv01/SQL/JDC/Trunk/JDC_UTIL.pks $ 
    --------- End Version Control Data ----------------------------------------- 
    -- 

--select SVN Keyword Info 
SELECT OWNER, 
     NAME, 
     TYPE, 
     SUBSTR(TEXT,INSTR(TEXT,'$')-1) AS KEYWORD 
FROM ALL_SOURCE 
WHERE OWNER = UPPER(NVL('&owner',OWNER)) 
    AND NAME = UPPER(NVL('&&pgm_name',NAME)) 
    AND (text LIKE '%$Revision%' 
    OR TEXT LIKE '%$URL%' 
    OR TEXT LIKE '%$Id%' 
    OR TEXT LIKE '%$LastChanged%') 

Ví dụ:

JDCSCHEMA API_TESTER_AGNT PROCEDURE $LastChangedDate: 
2014-04-08 15:33:38 -0500 (Tue, 08 Apr 2014) $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $Revision: 1445 $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $LastChangedBy: vamsisx $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $URL:svn://jdcsubv01/SQL/JDC/Trunk/API_TESTER_AGNT.prc $ 
+0

Đồng ý - Tôi nghĩ rằng các nhà phát triển người biên dịch các tập tin thực thi từ các cấu trúc thư mục đôi khi quên về kiểu kịch bản này, nơi có thể có các bản vá gia tăng, môi trường có thể được sao chép từ quá trình sản xuất vào các thời điểm khác nhau, và rất hữu ích để có thể nhìn thấy nhánh thực tế và thông tin sửa đổi trong nháy mắt. Có phải có một quy trình triển khai mạnh mẽ, có thể luôn mã có thể được chỉnh sửa sau khi triển khai (mặc dù bạn chắc chắn không hy vọng), nhưng không có gì giống như có thông tin được tạo tự động ngay tại nguồn. –

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