Russian Qt Forum
Мая 01, 2025, 03:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SVN даты  (Прочитано 6791 раз)
ammaximus
Гость
« : Июня 05, 2013, 10:33 »

Добрый день!
Я работаю на крайне консервативном предприятии, где для отслеживания версии файлов используется атрибут дата правки (Linux). Но тут есть проблема - любое копирование по сети устанавливает текущую дату в это поле.
Я начал пытаться внедрять svn, это было достаточно трудно, но сейчас все зависит от того, будут ли сохраняться эти даты правки при update. Причем не просто даты, когда была фиксация, а те, которые были у человека которые комитил во время фиксации XD.
Насколько плохи мои дела? В инете таких проблем не нашел, поскольку есть очевидное решение - использовать для контроля изменений svn журнал и номера ревизий, но у меня так. Посоветуйте что можно сделать.
Записан
mutineer
Гость
« Ответ #1 : Июня 05, 2013, 10:50 »

Дата коммита хранится в svn. Если при выполнении update файл изменяется, то дата его правки меняется на текущую, так как на диске он изменился во время update
Записан
ammaximus
Гость
« Ответ #2 : Июня 05, 2013, 12:02 »

можно ли хотя бы дату комита подсовывать как то?
Записан
mutineer
Гость
« Ответ #3 : Июня 05, 2013, 12:14 »

Куда подсовывать? Файлу? Ну скрипт можно попробовать написать
Записан
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #4 : Июня 05, 2013, 14:52 »

можно ли хотя бы дату комита подсовывать как то?
Отсюда:
Цитировать
You can set it in .subversion/config:
[miscellany]
use-commit-times = yes

Although you will have strange side effects if we are talking about source files.

For example, you build your software and do svn update. Now the timestamp of the updated files is older than the timestamp of the build result file, and it won't be rebuilt even though some source files changed. Be very careful with this setting.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 865

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #5 : Июня 05, 2013, 23:26 »

а не подскажете многоуважаемые, как сделать что-бы при комите в файл прописывались даты и версия?
типа:
'Версия: $Revision: 1.11 $
или
'SQLIntellisence
'
'Версия: $Revision: 1.13 $
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
mutineer
Гость
« Ответ #6 : Июня 05, 2013, 23:56 »

http://www.linux.org.ru/forum/admin/7927341?cid=7941162
Записан
ammaximus
Гость
« Ответ #7 : Июля 22, 2013, 13:38 »

Я решил использовать для решения проблемы properties subversion и скриптов на уровне клиента.
Алгоритм такой:

pre-commit-hook

Код:
foreach (файл){
файл.propreties.date = файл.свойстваwindows.датаизменения
}

post-update-hook
Код:
foreach (файл){
файл.свойстваwindows.датаизменения = файл.propreties.date
}

1. Какой наипростейший способ реализации этих скриптов? Мне в голову приходит Qt, класс QFileInfo должен помочь, но может ли он устанавливать свойства?
2. Как установить svn:property файла из программы? Это ж надо будет наследовать какой-нибудь SVN API, что уже не тривиальная задача.
Записан
ammaximus
Гость
« Ответ #8 : Июля 22, 2013, 14:10 »

Так вроде сообразил сам - свойства устанавливаются вызовами
Код:
svn propset/propget name file

Из Qt - это будет системный вызов, в шелле просто.

Непонятно только одно - как программно изменить атрибуты файла
Записан
ammaximus
Гость
« Ответ #9 : Июля 22, 2013, 14:44 »

в линукс есть функция touch
Записан
ammaximus
Гость
« Ответ #10 : Июля 22, 2013, 14:57 »

Последняя проблема: как программно в шелл скрипте получить дату изменения файла (атрибут)
Записан
ammaximus
Гость
« Ответ #11 : Июля 22, 2013, 15:53 »

Вообщем наваял следующее:
svn precommit hook

Код:
#! /usr/bin/sh
file = ?
date=`stat -c %y $file`
svn propset chdate $date $file
svn postupdate hook

Код:
#! /usr/bin/sh
file = ?
svn propget chdate $file
touch -acm -d $date $file

Проблемы:
1. Чему равен file, как его получить. Как получить файл для всех файлов текущего каталога и подкаталогов (рекурсия), а также понять что они под контролем и не лежат в папке .svn
2. Может можно просто как-то получить список коммит-упдэйт файлов, тогда все проще.
Записан
ammaximus
Гость
« Ответ #12 : Июля 23, 2013, 17:54 »

Короче все закончилось perl скриптом с парсингом стандартного вывода
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.025 секунд. Запросов: 20.