Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения, т.е. такой вот предкоммит (что-то типа SAVEPOINT в СУБД). Тем самым только ты можешь работать над не завершенной задачей, из любого места, с любого компьютера, а когда заканчиваешь, то делаешь commit для всех.
Такие вещи можно как-то реализовать в Subversion? Если нет, где можно?
Re: Предкоммит в репозиторий (что-то типа SAVEPOINT)
Здравствуйте, Foror, Вы писали:
F>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения
Для этого и нужны ветки. Перед началом работы над какой либо задачей, откалываем ветку, и все изменения комитим в неё. Эту ветку помимо вас никто больше не будет использовать, поэтому туда можно комитить всё что угодно. По завершении работы мержим изменения.
Ещё более "кошерным" является следующий подход:
отколоть ветку, например от транка
скопировать её в "pre-fix-tag" указывающий начало работы
все изменения комитить в ветку. (ваши комиты "видны" только вам, поэтому можно комитить даже некомпилящийся проект )
по окончании работы, когда всё уже работает как надо, скопировать ветку в "post-fix-tag" — указывающий на окончание изменений
смержить транк с !!!изменениями от "pre-fix-tag" до "post-fix-tag"
закомитить транк (ваши комиты "видны" всем)
тоже самое, в терминах 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)
F>>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения А>Для этого и нужны ветки.
Я думаю ветки нужны для более сложных вещей, нежели двух-трёх дневного временного хранилища для не завершенной работы. Как я вижу такую фичу в subversion:
-- на работе делаю коммит, который будет виден только мне
svn savepoint
-- дома забираю не законченую работу
svn getpoint
-- где-нибудь завершаю работу над задачей
svn commit
Вот как-то так, надо бы в фичлист подкинуть идейку, думаю фича была бы иногда полезна.
Re: Предкоммит в репозиторий (что-то типа SAVEPOINT)
Здравствуйте, 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)
Здравствуйте, achmed, Вы писали:
A>они много для чего нужны, в том числе и для этого, не надо бояться их использовать
Я не боюсь их использовать. Проблема в том, что такой метод использования может накапливать порядка нескольких сотен веток. По хорошему их надо удалять, но опять же это лишние телодвижения...
F>>-- на работе делаю коммит, который будет виден только мне F>>svn savepoint A>svn copy . <url для промежуточного результата>
И что это за промежуточный URL? Зачем мне администрировать ещё какой-то URL?
F>>Вот как-то так, надо бы в фичлист подкинуть идейку, думаю фича была бы иногда полезна. A>Они ответят использовать функциональность svn copy
Тут еще подсказали посмотреть на git или mercurial, вроде выглядит интересно. И в некотором смысле решает мою проблему, просто и без лишних телодвижений.
Я за простоту, если вещь можно сделать двумя командами, а лучше одной, то я буду искать решение где это сделано или реализую сам, а не буду использовать листинг команд с пол страницы.
Re: Предкоммит в репозиторий (что-то типа SAVEPOINT)
Здравствуйте, Foror, Вы писали:
F>Скажем заканчивая рабочий день нужно закинуть часть сделаной работы в репозиторий, но при этом чтобы только ты мог видеть эти изменения, т.е. такой вот предкоммит (что-то типа SAVEPOINT в СУБД). Тем самым только ты можешь работать над не завершенной задачей, из любого места, с любого компьютера, а когда заканчиваешь, то делаешь commit для всех. F>Такие вещи можно как-то реализовать в Subversion? Если нет, где можно?
В SVN такое сделать нельзя. В качестве промежуточной меры — делать "svn diff" и сохранять полученый патч где-нибудь в надёжном месте.
А вообще, распределённые VCS рулят. Для SVN я бы посоветовал взять SVK — http://svk.bestpractical.com/view/HomePage , как полностью распределённая VCS он не очень, но вот для оффлайновых веток — рулит.
Sapienti sat!
Re[5]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
Здравствуйте, Foror, Вы писали:
F>Здравствуйте, achmed, Вы писали:
A>>они много для чего нужны, в том числе и для этого, не надо бояться их использовать
F>Я не боюсь их использовать. Проблема в том, что такой метод использования может накапливать порядка нескольких сотен веток. По хорошему их надо удалять, но опять же это лишние телодвижения...
Необязательно удалять, на репозиотрии это никак не скажется F>>>-- на работе делаю коммит, который будет виден только мне F>>>svn savepoint A>>svn copy . <url для промежуточного результата> F>И что это за промежуточный URL? Зачем мне администрировать ещё какой-то URL?
Это url в твоем же репозитории
Re[6]: Предкоммит в репозиторий (что-то типа SAVEPOINT)
Здравствуйте, achmed, Вы писали:
A>Необязательно удалять, на репозиотрии это никак не скажется
Листинг команд в пол страницы для создания ветки по прежнему портят всё.
F>>И что это за промежуточный URL? Зачем мне администрировать ещё какой-то URL? A>Это url в твоем же репозитории
Тогда это почти таже ветка, но другим способом и команд чуть поменьше
Возможно вы не разобрались что вообще мне нужно, а мне не нужны ветки или копии репозитория, всё что мне нужно это временное хранение промежуточного результата в репозитории. И две команды чтобы положить это в репозиторий и забрать (+автоматический merge в случае изменений в репозитории), а после commit, я больше не хочу знать об этом промежуточном результате.