2009-05-08 15 views
46

Szukam najlepszego sposobu na integrację Gita z Antem. Czy istnieje szeroko stosowane zadanie Ant dla Gita? Czy ktokolwiek ma doświadczenie w korzystaniu z Git poprzez Ant (np. Dedykowane zadanie, wykonanie exec itp.)?Najlepszy sposób na integrację Gita z Ant?

+2

Bardziej precyzyjne pytanie to http://stackoverflow.com/questions/2974106/how-to-lookup-test-latest-git-commit-hash-from-an-ant-build-script. Odpowiedzi tam również mogą być pomocne. – koppor

Odpowiedz

19

Wygląda na to, że nie było zestawu zadań Ant dla Gita.

This blog mówi o niektórych podstawowych zadaniach do pracy z Git.

+1

tutaj jest Git Ant Tasks przez JGit http://aniszczyk.org/2011/05/12/git-ant-tasks-via-jgit/ –

+0

To może zrobić tylko 'git clone',' git init' i 'git checkout '. – zb226

+1

blog jest nieaktualny. Zaktualizuj link do bloga: –

21

Ant obsługuje exec command, za pomocą którego można przekazać dowolne polecenie (w tym Git) do wiersza poleceń w celu wykonania. Zawsze możesz na tym polegać.

6

Look at JGit-Ant. Niestety projekt zadań jgit-ant nie zawiera wszystkich głównych czynności git, można znaleźć dodatkowe informacje here.

Dla programistów java: można łatwo napisać polecenia git-ant samemu przy użyciu jgit jak w this examples.

+0

Link jest uszkodzony. – Valentino

0

Użyj kombinacji biblioteki JGit z kodem <script language="javascript"> (użyłem Rhino lubrary, ale równie dobrze możesz używać Groovy, itp.).

0

Dawno temu bezskutecznie szukałem gotowych, w użyciu sposobów integracji Git i Ant. Potrzebowałem możliwości stworzenia kompilacji z nazwą oddziału Git. W końcu doszedłem do następującego rozwiązania:

Wyciąg z prawdziwego build.xml pliku:

<target name="-check-git-branch-name" 
    if="using.git" 
    > 
    <exec executable="bash" logError="true" failonerror="true" 
     outputproperty="git-branch-name"> 
     <arg value="./bin/git-branch-name.sh" /> 
    </exec> 
</target> 

Cała zawartość pliku ./bin/git-branch-name.sh

#!/bin/bash 

# This script is the part of integration GIT to ANT. Once launched it 
# should return the name of the current branch or the current commit (if 
# GIT is the detached HEAD mode). Further the printed name is appended to 
# the name of the resulting directory. To initialize this feature you need 
# to run ANT with the option "-Dusing.git=". 

exec 2>/dev/null 

git rev-parse --abbrev-ref HEAD | grep -v HEAD || git rev-parse HEAD 

inwokacja jest podobny do:

ant TARGET options -Dusing.git= 

Gdy ${using.git} jest de clared, Ant wywołuje zadanie -check-git-branch-name, aby zebrać nazwę gałęzi (lub numer zatwierdzenia, jeśli Git jest w trybie odłączonym) i generuje kompilację z dołączoną nazwą gałęzi Git (lub numerem zatwierdzenia), na przykład build/TARGET-${git-branch-name}.