Russian Qt Forum
Ноябрь 22, 2024, 21:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: SVN даты  (Прочитано 6545 раз)
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
Гипер активный житель
*****
Online Online

Сообщений: 864

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


Просмотр профиля
« Ответ #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.081 секунд. Запросов: 23.