2012-12-19 31 views
9

Tôi vừa tạo một dự án Java. Tôi muốn kiểm tra dự án này đến SVN với sự trợ giúp của SVNKit.thêm thư mục và cam kết tệp bằng SVNKit

Tôi sử dụng mã bên dưới, thêm thư mục vào kho SVN. Nhưng nó không tạo ra bất kỳ thư mục .svn nào trong thư mục /Users/test/svnAddDirCheck.

Tôi muốn các tệp được cheked-in và tôi cũng muốn cam kết một số tệp đã thay đổi trong tương lai. Mà không kiểm tra mã nguồn, làm thế nào tôi có thể làm điều này? Tôi có thể thêm các tệp này vào SVN cũng như tôi có thể cam kết bất kỳ tệp đã thay đổi nào trực tiếp không?

@Test 
public void importWholeDir() throws Exception { 
    try { 
     DAVRepositoryFactory.setup(); 
     SVNRepositoryFactoryImpl.setup(); 
     FSRepositoryFactory.setup(); 

     String svnUrl = "https://abc.com/svn/repos/projects/test/CREATE2"; 
     File dir = new File("/Users/test/svnAddDirCheck"); 
     SVNURL url = SVNURL.parseURIDecoded(svnUrl); 
     String userName = "XXXXXXX"; 
     String userPassword = "XXXXXXXXX"; 

     importDirectoryContentToSubversion(svnUrl, dir.getPath(), userName, userPassword, "directory and file added"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static SVNCommitInfo importDirectoryContentToSubversion(final String repositoryURL, final String subVersionedDirectory, final String userName, final String hashedPassword, final String commitMessage) throws SVNException { 
    final SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions(), userName, hashedPassword); 
    return cm.getCommitClient().doImport(new File(subVersionedDirectory), SVNURL.parseURIEncoded(repositoryURL), "<import> " + commitMessage, null, false, true, SVNDepth.fromRecurse(true)); 
} 
+2

Vì vậy, bạn đã nhập thư mục vào kho lưu trữ Apache Subversion. Nó sẽ không làm cho các thư mục địa phương một bản sao làm việc, do đó, lựa chọn duy nhất cho bạn là 'svn nhập khẩu' tập tin mới. ** Tại sao bạn không muốn kiểm tra một bản sao làm việc? ** Nhiệm vụ là gì? – bahrep

+0

Tôi đang phát triển một ứng dụng, trong đó người dùng có thể tạo ứng dụng. và tôi đã cung cấp tùy chọn để đăng ký dự án của họ từ chính ứng dụng của tôi.tôi đã sử dụng mã trên, điều này sẽ thêm dự án vào kho lưu trữ, nhưng nó không làm cho việc kiểm soát phiên bản cho thư mục đăng ký. – Muthu

+4

bạn có thể gọi "thanh toán" trên thư mục này sau khi tất cả, nó sẽ không ghi đè lên các tệp hiện có. –

Trả lời

0

Đây là cách SVN hoạt động, nếu bạn muốn thay đổi cam kết tương lai bạn cần phải thực hiện các thư mục địa phương một bản sao làm việc, và để có được một công việc sao chép bạn cần làm một kiểm tra ra.

Một thay thế tôi sử dụng đôi khi là

  • tạo một thư mục trống trực tiếp trong kho,
  • kiểm tra ra rằng thư mục vào thư mục địa phương (làm cho nó một bản sao làm việc với thư mục .svn của nó)
  • sau đó thêm và cam kết các tệp hiện có
1

Tôi giả định SVNKit thực sự đang thực hiện thêm svn vào kho lưu trữ chứ không phải bản sao làm việc? Đúng không?

Nếu có, bạn không thể thêm tệp vào kho lưu trữ trừ khi bạn có thư mục chứa các tệp được kiểm tra.

Bạn đang sử dụng phiên bản SVN nào? 1.7 không còn đặt thư mục .svn trong mỗi thư mục của bản sao làm việc của bạn, chỉ trong thư mục gốc.

Về cơ bản những gì bạn muốn làm, mã giả là:

  1. Kiểm tra các thư mục mà bạn muốn thêm vào thư mục/tập tin. Nếu nó là một thư mục có chứa các tập tin thư mục khác, bạn có thể kiểm tra nó ra với độ sâu --empty, do đó bạn sẽ không nhận được bất kỳ tập tin/thư mục khác có thể được kiểm tra vào thư mục đó.

  2. Tạo thư mục/tệp mới của bạn.

  3. Sử dụng bộ svn để "thêm" tệp vào bản sao làm việc.

  4. Sử dụng bộ svn để "commit" bản sao làm việc sẽ thêm thư mục/tệp vào kho lưu trữ.

Tất nhiên, bước 1 chỉ cần thực hiện nếu bạn chưa thực hiện. Bạn có thể nên làm theo các bước tương tự bạn sẽ làm theo cách thủ công. Tôi đề nghị bạn xem lại tài liệu svn về cách sử dụng cơ bản. Một khi bạn có thể làm những gì bạn muốn làm với svn.exe nó nên được khá dễ dàng để lặp lại nó bằng cách sử dụng API svnkit.

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