Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 30th, 2012  |  syntax: None  |  size: 3.89 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. /*
  2.  * Copyright (C) 2011, Abhishek Bhatnagar <abhatnag@redhat.com>
  3.  * and other copyright owners as documented in the project's IP log.
  4.  *
  5.  * This program and the accompanying materials are made available
  6.  * under the terms of the Eclipse Distribution License v1.0 which
  7.  * accompanies this distribution, is reproduced below, and is
  8.  * available at http://www.eclipse.org/org/documents/edl-v10.php
  9.  *
  10.  * All rights reserved.
  11.  *
  12.  * Redistribution and use in source and binary forms, with or
  13.  * without modification, are permitted provided that the following
  14.  * conditions are met:
  15.  *
  16.  * - Redistributions of source code must retain the above copyright
  17.  *   notice, this list of conditions and the following disclaimer.
  18.  *
  19.  * - Redistributions in binary form must reproduce the above
  20.  *   copyright notice, this list of conditions and the following
  21.  *   disclaimer in the documentation and/or other materials provided
  22.  *   with the distribution.
  23.  *
  24.  * - Neither the name of the Eclipse Foundation, Inc. nor the
  25.  *   names of its contributors may be used to endorse or promote
  26.  *   products derived from this software without specific prior
  27.  *   written permission.
  28.  *
  29.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  30.  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  31.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  32.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  33.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  34.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  35.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  36.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  37.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  38.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39.  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  40.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  41.  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  42.  */
  43. package org.eclipse.jgit.lib;
  44.  
  45. /*
  46.  * USE CASE:
  47.  * A commit already exists in the git repo.
  48.  * I want to create another commit using CommitBuilder
  49.  * The following does not work
  50.  */
  51.  
  52. import static org.junit.Assert.assertTrue;
  53.  
  54. import java.util.LinkedList;
  55. import java.util.List;
  56.  
  57. import org.eclipse.jgit.api.Git;
  58. import org.eclipse.jgit.api.Status;
  59. import org.eclipse.jgit.dircache.DirCache;
  60. import org.junit.Before;
  61. import org.junit.Test;
  62.  
  63. public class CommitBuilderTest extends RepositoryTestCase {
  64.         private Git git;
  65.  
  66.         @Before
  67.         public void setUp() throws Exception {
  68.                 super.setUp();
  69.                 git = new Git(db);
  70.  
  71.                 // create test files
  72.                 writeTrashFile("File1.txt", "commit me");
  73.                 writeTrashFile("File2.txt", "commit me");
  74.  
  75.                 // add first file
  76.                 git.add().addFilepattern("File1.txt").call();
  77.                 git.commit().setMessage("Test file commit").call();
  78.         }
  79.  
  80.         @Test
  81.         public void testStash() {
  82.                 try {
  83.                         // repo, index, odi, indextree && headcommitid
  84.                         Repository repo = git.getRepository();
  85.                         DirCache index = repo.lockDirCache();
  86.                         ObjectInserter odi = repo.newObjectInserter();
  87.                         ObjectId indexTreeId = index.writeTree(odi);
  88.                         List<ObjectId> parents = new LinkedList<ObjectId>();
  89.                         ObjectId headCommitId = repo.resolve(Constants.HEAD + "^{commit}");
  90.  
  91.                         System.out.println(headCommitId);
  92.  
  93.                         // get parents
  94.                         parents.add(0, headCommitId);
  95.  
  96.                         // create a commit object, populate it and write it
  97.                         CommitBuilder newCommit = new CommitBuilder();
  98.                         newCommit.setCommitter(committer);
  99.                         newCommit.setAuthor(author);
  100.                         newCommit.setMessage("commiting test file");
  101.                         newCommit.setParentIds(parents);
  102.                         newCommit.setTreeId(indexTreeId);
  103.  
  104.                         // insert commit
  105.                         ObjectId newHead = odi.insert(newCommit);
  106.                         odi.flush();
  107.  
  108.  
  109.                         RefUpdate ru = repo.updateRef(Constants.R_STASH);
  110.                         ru.setNewObjectId(newHead);
  111.                         Result rc = ru.forceUpdate();
  112.  
  113.                         // actual test
  114.                         Status status = git.status().call();
  115.                         assertTrue(status.getUntracked().size() == 0);
  116.                 } catch (Exception e) {
  117.                         e.printStackTrace();
  118.                 }
  119.         }
  120.  
  121. }