powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Git hooks post-commit поиск и замена текста в файла
6 сообщений из 6, страница 1 из 1
Git hooks post-commit поиск и замена текста в файла
    #38361872
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, скажу сразу в консольных языках особо не разбираюсь. Задача состоит в том, что бы после коммита прописать количество ревизий в нужные файлы, а именно Repodir/ecap/VersionFrame.asp и во всех файлах AssemblyInfo.cs рекурсивным поиском в директории Repodir, пути все должны быть относительными от файла post-commit, лежащий в Repodir/.git/hooks, с VersionFrame.asp разобрался работает как надо, ниже содержимое файла post-commit

Код: ruby
1.
2.
3.
4.
#!/bin/sh
commit_count=$(git rev-list --count HEAD)

sed -i "s/revision:\s*\?[0-9]+/Revision: $commit_count/gI" $(git rev-parse --show-toplevel)/ecap/VersionFrame.asp



а вот с AssemblyInfo.cs туговато мне. Если запустить bat файл из каталога Repodir со следующим содержимым (нашел на просторах)

Код: ruby
1.
2.
echo off
for /F "delims=" %%I in ('"dir /B /S | findstr /E "AssemblyInfo.cs""') do ( echo %%I )



то мне правильно находит все файлы, в которые мне надо прописывать номер ревизии, остается переписать этот скрипт так, что бы он работал из Repodir/.git/hooks
...
Рейтинг: 0 / 0
Git hooks post-commit поиск и замена текста в файла
    #38361881
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот приблизительно что должно быть в итоге, но оно не работает для AssemblyInfo.cs
Код: ruby
1.
2.
3.
4.
5.
6.
7.
8.
#!/bin/sh

commit_count=$(git rev-list --count HEAD) 
sed -i "s/revision:\s*\?[0-9]\+/Revision: $commit_count/gI" $(git rev-parse --show-toplevel)/ecap/VersionFrame.asp
repo_dir=$(git rev-parse --show-toplevel)
for /F "delims=" %%I in ('"dir repo_dir /B /S | findstr /E "AssemblyInfo.cs""') do (
    sed -i "s/(AssemblyVersion)\(\s*\?"([0-9]\+).([0-9]\+).([0-9]\+).([0-9]\+)"\s*\?\)/$1( "$2.$3.$4.$commit_count" )/gI" %%I
)
...
Рейтинг: 0 / 0
Git hooks post-commit поиск и замена текста в файла
    #38361924
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
осталось понять как работают циклы в msysgit, пока работает замена в AssemblyInfo.cs если не использовать цикл, а просто менять в одном файле напрямую

Код: ruby
1.
2.
3.
4.
5.
6.
7.
#!/bin/sh
commit_count=$(git rev-list --count HEAD) 
sed -i "s/revision:\s*\?[0-9]\+/Revision: $commit_count/gI" $(git rev-parse --show-toplevel)/ecap/VersionFrame.asp
repo_dir=$(git rev-parse --show-toplevel)
for /F "delims=" %%I in ('"dir $repo_dir /B /S | findstr /E "AssemblyInfo.cs""') do (
sed -i -r "s/(AssemblyVersion)\(\s*?\"([0-9]+).([0-9]+).([0-9]+).([0-9]+)\"\s*?\)/\1\(\"\2.\3.\4.$commit_count\"\)/gI"
)


неужели нету гуру в этом деле, и никто не пробовал использовать циклы в msysgit?
...
Рейтинг: 0 / 0
Git hooks post-commit поиск и замена текста в файла
    #38362172
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanprof,

Какой dir, какой for, вы вообще чего творите? Написано же в первой строчке /bin/sh, а вы туда лепите команды cmd. Вам вообще for здесь не нужен, хватит одного find с правильными ключиками (-name, -exec).
...
Рейтинг: 0 / 0
Git hooks post-commit поиск и замена текста в файла
    #38362854
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxkar, я же и говорю не очень силен я в этом вот и ищу помощи, буду очень благодарен, если хоть пару примеров поиска по маске дадите.
...
Рейтинг: 0 / 0
Git hooks post-commit поиск и замена текста в файла
    #38362891
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура, получилось, maxkar , спасибо за наводку
Код: ruby
1.
2.
3.
4.
5.
#!/bin/sh

commit_count=$(git rev-list --count HEAD)
sed -i "s/revision:\s*\?[0-9]\+/Revision: $commit_count/gI" $(git rev-parse --show-toplevel)/ecap/VersionFrame.asp
find . \( -name 'AssemblyInfo.cs' \) -type f -exec sed -i -r "s/(AssemblyVersion)\(\s*?\"([0-9]+).([0-9]+).([0-9]+).([0-9]+)\"\s*?\)/\1\(\"\2.\3.\4.$commit_count\"\)/gI" {} \;
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Git hooks post-commit поиск и замена текста в файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]