Jak mohu vytvářet adresáře pomocí čísel verzí Subversion v GNU make?

hlasů
1

Díky ‚Beta‘ mé řešení:

RLS_DIRECTORY = $(shell svnversion -cn | sed 's/:/-/')
SVN_VERSION   = $(shell svnversion -cn | sed -r 's/.+://')
RELEASE_NOTES = $(RLS_DIRECTORY:=/release-notes-$(SVN_VERSION:=.txt))

-include svn-version.mk

SVN_OLD_VERSION ?= 0

.PHONY = all zip release

release: $(RELEASE_NOTES)

$(RLS_DIRECTORY):
    mkdir -p $@

$(RELEASE_NOTES): $(RLS_DIRECTORY)
    @echo 'Creating release notes ($@)'
    @svn log -r $(SVN_OLD_VERSION):HEAD -v > $@ \
      && echo SVN_OLD_VERSION ?= `svnversion -c | sed -r 's/.+://'` \
       > svn-version.mk

Které v kostce, když žádám make, aby tak učinily ( # make release) vytvoří určitý adresář verze a pak vypíše zaznamenaná data do určitého souboru protokolu verze od posledního okamžiku, kdy cíl byl vyvolán. Přetrvávající data (SVN_OLD_VERSION) je uložen v svn-version.mk, která je podmíněně součástí.


Původní příspěvek:

Kromě jiných specifických cílů podvratné ve svém projektu ‚vytvořit‘ soubor (jako to ) Mám nějaké cíle, které jsem se snaží přidat za účelem vytvoření log soubory z poslední doby o ‚uvolnění‘ 'cíl byl vyvolán. Zatím:

SVN_VERSION ?= 0
-include svn-version.mk

RLS_DIR = `svnversion -cn | sed 's/://'`

.PHONY = $(RLS_DIR) notes release

notes: $(RLS_DIR)\notes.txt
release: notes

svn-version.mk:
    @echo 'Generating $@'
    @echo SVN_VERSION ?= `svnversion -c | sed -r 's/.+://'` > $@

$(RLS_DIR):
    mkdir $@

$(RLS_DIR)\notes.txt: $(RLS_DIR)
    svn log -r $(SVN_VERSION):HEAD > $@

Ale snažím se přijít na 2 věci:

* 1. Jak mohu vytvořit adresář založený na svnversionvýstupu? Výše uvedený mi dává chybu „*** cílový vzorek neobsahuje žádnou`%.‘Zastavit.“ svnversion produkuje nnnn: mmmm a rád bych vytvořit adresář nnnn-mmmm) *.

2. Jak mohu získat soubor zahrnout „svn-version.mk“ jen znovu, když je ‚uvolnění‘ cílovou popraven?

Položena 28/09/2009 v 16:29
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Vaše otázka není zcela jasné - a já nejsem obeznámen s podvracení - ale mohu provést kvalifikovaný odhad:

  1. Použijte "shell", ne backticks, nastavit RLS_DIR:
    RLS_DIR = $ (shell svnversion CN | sed 's /: / - /')
    
  2. To je zvláštní způsob, jak zařídit. Pokud nepotřebujete svn-version.mk k jiným účelům, tak bych navrhnout toto:
    zpráva:? SVN_VERSION = $ (shell svnversion -c | sed -r 's /.+: //')
    

EDIT:
Jsem stále není zcela jasné, o co se snažíte dělat s svn-version.mk, ale svn-version.mk může být předpokladem pro „uvolnění“. Pokud svn-version.mk závisí na log.txt log.txt pak může být jeho předpokladem, jinak budete mít pevný čas brání svn-version.mk od bytí přepracován pokaždé (pravděpodobně neměla obsahovat to vůbec).

Odpovězeno 28/09/2009 v 17:10
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more