1 /*
2 * Copyright (C) 2011, Ketan Padegaonkar <KetanPadegaonkar@gmail.com> and others
3 *
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Distribution License v. 1.0 which is available at
6 * https://www.eclipse.org/org/documents/edl-v10.php.
7 *
8 * SPDX-License-Identifier: BSD-3-Clause
9 */
10 package org.eclipse.jgit.ant.tasks;
11
12 import java.io.File;
13
14 import org.apache.tools.ant.BuildException;
15 import org.apache.tools.ant.Task;
16 import org.eclipse.jgit.api.Git;
17 import org.eclipse.jgit.api.InitCommand;
18
19 /**
20 * Create an empty git repository.
21 *
22 * @see <a href="http://www.kernel.org/pub/software/scm/git/docs/git-init.html"
23 * >git-init(1)</a>
24 */
25 public class GitInitTask extends Task {
26 private File destination;
27 private boolean bare;
28
29 /**
30 * Set the destination git repository.
31 *
32 * @param dest
33 * the destination directory that should be initialized with the
34 * git repository.
35 */
36 public void setDest(File dest) {
37 this.destination = dest;
38 }
39
40 /**
41 * Configure if the repository should be <code>bare</code>
42 *
43 * @param bare
44 * whether the repository should be initialized to a bare
45 * repository or not.
46 */
47 public void setBare(boolean bare) {
48 this.bare = bare;
49 }
50
51 /** {@inheritDoc} */
52 @Override
53 public void execute() throws BuildException {
54 if (bare) {
55 log("Initializing bare repository at " + destination);
56 } else {
57 log("Initializing repository at " + destination);
58 }
59 try {
60 InitCommand init = Git.init();
61 init.setBare(bare).setDirectory(destination);
62 init.call();
63 } catch (Exception e) {
64 throw new BuildException("Could not initialize repository", e);
65 }
66 }
67 }