контроль мерзавца более старый пересмотр файла под новым именем

Простой однострочный XPath 1.0 :

& nbsp; & nbsp; & nbsp; & nbsp; concat(., substring(',', 2 - (position() != last())))

Положите его в это преобразование:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

    <xsl:template match="/*">
      <xsl:for-each select="*">
        <xsl:value-of select=
         "concat(., substring(',', 2 - (position() != last())))"
         />
      </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

и примените его к документу XML :

<root>
    <item>apple</item>
    <item>orange</item>
    <item>banana</item>
</root>

, чтобы получить желаемый результат:

apple,orange,banana

РЕДАКТИРОВАТЬ:

Вот комментарий Роберта Росни к этому ответу:

Это довольно непрозрачно код для человека, чтобы читать. Это требует, чтобы вы знали две неочевидные вещи о XSLT: 1) что делает функция подстроки, если ее индекс выходит за пределы диапазона, и 2) что логические значения могут быть неявно преобразованы в числовые.

и вот мой ответ :

Ребята, никогда не стесняйтесь узнавать что-то новое. На самом деле, это все о переполнении стека, не так ли? :)

249
задан neoneye 9 December 2012 в 21:35
поделиться

2 ответа

Для этого можно использовать "git show":

prompt> git show HEAD^:main.cpp > old_main.cpp

(Обратите внимание, что между HEAD ^ и [] есть двоеточие [: ] 1122053] main.cpp .) Синтаксис : описан в git rev-parse справочной странице, рядом с последним пунктом в разделе «Указание ревизий» section:

  • : , например HEAD: README,: README, master: ./ README

    Суффикс : , за которым следует путь к BLOB-объекту или дереву в заданном путь в древовидном объекте, названном частью перед двоеточием. : путь (с пустой частью перед двоеточием) является частным случаем синтаксиса, описанного далее: содержимое, записанное в индексе по заданному пути.

    Путь, начинающийся с ./ или .. / относится к текущему рабочему каталогу. Данный путь будет преобразован относительно корневого каталога рабочего дерева. Это наиболее полезно для адресации большого двоичного объекта или дерева из фиксации или дерева, которое имеет ту же древовидную структуру, что и рабочее дерево.

Обратите внимание, что <путь> здесь FULL путь относительно верхнего каталога вашего проекта, то есть каталога с каталогом .git / . (Или, точнее, " " (который в общем может быть любым , то есть чем-то, что представляет дерево))

Если вы хотите чтобы использовать путь относительно текущего каталога, необходимо использовать синтаксис ./ (или ../ путь для перехода вверх из текущего каталога).

Edit 2015 -01-15: добавлена ​​информация о синтаксисе относительного пути


В большинстве случаев вы можете получить тот же результат, используя команду низкого уровня (сантехника) git cat-file :

prompt> git cat-file blob HEAD^:main.cpp > old_main.cpp
285
ответ дан 23 November 2019 в 02:59
поделиться

Просто добавлю к ответу Якуба: вам даже не нужно перенаправьте вывод в файл с > , если вас интересует только просмотр содержимого файла в терминале. Вы можете просто запустить $ git show 58a3db6: path / to / your / file.txt .

23
ответ дан 23 November 2019 в 02:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: