Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Foror http://foror.ru
Дата: 17.04.08 06:42
Оценка:
Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения, т.е. такой вот предкоммит (что-то типа SAVEPOINT в СУБД). Тем самым только ты можешь работать над не завершенной задачей, из любого места, с любого компьютера, а когда заканчиваешь, то делаешь commit для всех.

Такие вещи можно как-то реализовать в Subversion? Если нет, где можно?
Re: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Аноним  
Дата: 17.04.08 08:30
Оценка: 4 (1)
Здравствуйте, Foror, Вы писали:

F>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения

Для этого и нужны ветки. Перед началом работы над какой либо задачей, откалываем ветку, и все изменения комитим в неё. Эту ветку помимо вас никто больше не будет использовать, поэтому туда можно комитить всё что угодно. По завершении работы мержим изменения.

Ещё более "кошерным" является следующий подход:

тоже самое, в терминах svn
-----------------------
co /trunk/                                                  - получили транк (A) в рабочую-копию
copy /branches/fix-for-xxx/                                 - создали боковую ветку (B)
co /branches/fix-for-xxx/                                   - получили боковую ветку (B) в рабочую-копию
-----------------------
copy /tags/pre-fix-for-xxx/                                 - создали таг, показывающий начало работы с веткой  (В)

вносим изменения
сi /branches/fix-for-xxx/                                   - комитим в ветку (В), (ваши изменения видны только вам)
вносим изменения
сi /branches/fix-for-xxx/                                   - комитим в ветку (В), (ваши изменения видны только вам)
...

одновременно с этим в транк ктото, чегото, много комитит 

copy /tags/post-fix-for-xxx/                                - таг, показывающий окончание работы с веткой (В)
-----------------------
co /trunk/                                                  - получили транк (A) в рабочую-копию
merge /tags/pre-fix-for-xxx/  /tags/post-fix-for-xxx/       - мержим изменения произошедшие в ветке (В) с транком (А)
ci /trunk/                                                  - комитим результат (теперь ваши изменения видят все)


а c помощью "тортилы" всё совсем просто

P.S. за идею и рекомендации спасибо kandreev и "Pragmatic Version Control using Subversion" by Mike Mason
Re[2]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Foror http://foror.ru
Дата: 17.04.08 09:51
Оценка:
F>>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения
А>Для этого и нужны ветки.

Я думаю ветки нужны для более сложных вещей, нежели двух-трёх дневного временного хранилища для не завершенной работы. Как я вижу такую фичу в subversion:

-- на работе делаю коммит, который будет виден только мне
svn savepoint

-- дома забираю не законченую работу
svn getpoint

-- где-нибудь завершаю работу над задачей
svn commit

Вот как-то так, надо бы в фичлист подкинуть идейку, думаю фича была бы иногда полезна.
Re: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Lloyd Россия  
Дата: 17.04.08 09:56
Оценка: +1
Здравствуйте, Foror, Вы писали:

F>Такие вещи можно как-то реализовать в Subversion? Если нет, где можно?


Shelve в TFS-е.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[3]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 18.04.08 10:57
Оценка:
Здравствуйте, Foror, Вы писали:

F>>>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения

А>>Для этого и нужны ветки.

F>Я думаю ветки нужны для более сложных вещей, нежели двух-трёх дневного временного хранилища для не завершенной работы. Как я вижу такую фичу в subversion:


они много для чего нужны, в том числе и для этого, не надо бояться их использовать

F>-- на работе делаю коммит, который будет виден только мне

F>svn savepoint

svn copy . <url для промежуточного результата>

F>-- дома забираю не законченую работу

F>svn getpoint

svn co . <url для промежуточного результата>

F>-- где-нибудь завершаю работу над задачей

F>svn commit

svn merge ...
svn commit

F>Вот как-то так, надо бы в фичлист подкинуть идейку, думаю фича была бы иногда полезна.

Они ответят использовать функциональность svn copy
Re[4]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Foror http://foror.ru
Дата: 18.04.08 12:07
Оценка:
Здравствуйте, achmed, Вы писали:

A>они много для чего нужны, в том числе и для этого, не надо бояться их использовать


Я не боюсь их использовать. Проблема в том, что такой метод использования может накапливать порядка нескольких сотен веток. По хорошему их надо удалять, но опять же это лишние телодвижения...

F>>-- на работе делаю коммит, который будет виден только мне

F>>svn savepoint
A>svn copy . <url для промежуточного результата>

И что это за промежуточный URL? Зачем мне администрировать ещё какой-то URL?

F>>Вот как-то так, надо бы в фичлист подкинуть идейку, думаю фича была бы иногда полезна.

A>Они ответят использовать функциональность svn copy

Тут еще подсказали посмотреть на git или mercurial, вроде выглядит интересно. И в некотором смысле решает мою проблему, просто и без лишних телодвижений.

Я за простоту, если вещь можно сделать двумя командами, а лучше одной, то я буду искать решение где это сделано или реализую сам, а не буду использовать листинг команд с пол страницы.
Re: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Cyberax Марс  
Дата: 18.04.08 12:19
Оценка:
Здравствуйте, Foror, Вы писали:

F>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения, т.е. такой вот предкоммит (что-то типа SAVEPOINT в СУБД). Тем самым только ты можешь работать над не завершенной задачей, из любого места, с любого компьютера, а когда заканчиваешь, то делаешь commit для всех.

F>Такие вещи можно как-то реализовать в Subversion? Если нет, где можно?
В SVN такое сделать нельзя. В качестве промежуточной меры — делать "svn diff" и сохранять полученый патч где-нибудь в надёжном месте.

А вообще, распределённые VCS рулят. Для SVN я бы посоветовал взять SVK — http://svk.bestpractical.com/view/HomePage , как полностью распределённая VCS он не очень, но вот для оффлайновых веток — рулит.
Sapienti sat!
Re[5]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 18.04.08 12:21
Оценка:
Здравствуйте, Foror, Вы писали:

F>Здравствуйте, achmed, Вы писали:


A>>они много для чего нужны, в том числе и для этого, не надо бояться их использовать


F>Я не боюсь их использовать. Проблема в том, что такой метод использования может накапливать порядка нескольких сотен веток. По хорошему их надо удалять, но опять же это лишние телодвижения...

Необязательно удалять, на репозиотрии это никак не скажется
F>>>-- на работе делаю коммит, который будет виден только мне
F>>>svn savepoint
A>>svn copy . <url для промежуточного результата>
F>И что это за промежуточный URL? Зачем мне администрировать ещё какой-то URL?
Это url в твоем же репозитории
Re[6]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
От: Foror http://foror.ru
Дата: 18.04.08 12:37
Оценка:
Здравствуйте, achmed, Вы писали:

A>Необязательно удалять, на репозиотрии это никак не скажется


Листинг команд в пол страницы для создания ветки по прежнему портят всё.

F>>И что это за промежуточный URL? Зачем мне администрировать ещё какой-то URL?

A>Это url в твоем же репозитории

Тогда это почти таже ветка, но другим способом и команд чуть поменьше

Возможно вы не разобрались что вообще мне нужно, а мне не нужны ветки или копии репозитория, всё что мне нужно это временное хранение промежуточного результата в репозитории. И две команды чтобы положить это в репозиторий и забрать (+автоматический merge в случае изменений в репозитории), а после commit, я больше не хочу знать об этом промежуточном результате.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.