Большинство ответов связаны с изменением вызова на json.dumps (), что не всегда возможно или желательно (это может произойти, например, в компоненте framework).
Если вы хотите быть в состоянии для вызова json.dumps (obj) как есть, тогда простое решение наследуется от dict:
class FileItem(dict):
def __init__(self, fname):
dict.__init__(self, fname=fname)
f = FileItem('tasks.txt')
json.dumps(f) #No need to change anything here
Это работает, если ваш класс является просто базовым представлением данных, потому что для более сложных вещей вы всегда можете задавать ключи явно .
CVS только отслеживает модификацию на основе файла файлом, в то время как SVN отслеживает целую фиксацию как новый пересмотр, что означает, что легче следовать истории Вашего проекта. Добавьте то, что все современное использование программного обеспечения управления исходным кодом понятие пересмотра, таким образом, намного легче мигрировать от SVN, чем он, от CVS.
существует также атомарная проблема фиксации. В то время как я только встретился с ним однажды, возможно, что 2 человека, фиксирующие вместе в CVS, могут конфликтовать друг друга, теряя некоторые данные и помещая Ваш клиент в непоследовательное состояние. Когда обнаружено рано, эти проблемы не являются главными, потому что Ваши данные все еще там где-нибудь, но это может быть боль в напряженной среде.
И наконец, не много инструментов больше разрабатываются вокруг CVS. В то время как новые и новейшие инструменты как Мерзавец или Подвижный определенно испытывают недостаток в инструментах все же, SVN имеет основу довольно крупного приложения в любой системе.
РЕДАКТИРОВАНИЕ 2015 : Серьезно, этому ответу 7 лет теперь. Забудьте SVN, пойдите Мерзавец использования как все остальные!
Одно из многих сравнений:
http://wiki.scummvm.org/index.php/CVS_vs_SVN
Теперь это очень характерно для того проекта, но большого количества материала apllies в целом.
Pro Подрывная деятельность:
- Поддержка имеющего версию переименовывает/перемещает (невозможный с CVS): Fingolfin, каталоги Ender
- Supports исходно: возможно удалить их, и они являются имеющими версию: Fingolfin, свойства Ender
- File являются имеющими версию; больше "исполняемого файла не укусило" ад: Fingolfin
- Полное число пересмотра делает управление версиями сборки и регрессионное тестирование намного легче: Ender, Fingolfin
- Атомарные фиксации: Fingolfin
- Интуитивное (основанное на каталоге) ветвление и метки: Fingolfin
- Более легкие сценарии рычага (пред/сообщение фиксация, и т.д.): SumthinWicked (я использую его для Doxygen после фиксаций)
- , Предотвращает случайную фиксацию противоречивых файлов: соленая лошадь, Поддержка Fingolfin
- пользовательской 'различной' команды: Fingolfin
- Офлайновый diffs, и они мгновенны: sev
SVN имеет 3 основных преимущества перед CVS
Книга Подрывной деятельности имеет приложение , которое детализирует важные различия от CVS, который может помочь Вам принять свое решение. Два подхода являются более или менее той же идеей, но SVN был специально предназначен для фиксации давнишних дефектов в CVS так в теории, по крайней мере, SVN всегда будет лучшим выбором.
Я буду предложение второго Eridius Мерзавца, но я развернул бы его до другого DRCS (Распределенная Система управления версиями) такой как Подвижный и базар .
Эти продукты являются довольно недавними и уровень инструментов, и интеграция с ними кажется низкой в данный момент (на основе моего начального исследования). Я сказал бы, что они подходили лучше всего для разработчиков питания там (и на здесь;-)).
, С другой стороны, что не делает , CVS в настоящее время делает для Вас? От Вашего начального вопроса у Вас действительно нет никого, "CVS сосет в этом, что я мог использовать вместо этого?"
Вы имеете, должен уравновесить затраты на любую потенциальную миграцию против преимуществ. Для существующего проекта я думаю, что было бы трудно выровнять по ширине.
Одной вещью не пропустить является экосистема. Я работал в магазине CVSNT, и я находил, что инструменты все более с открытым исходным кодом поддерживали SubVersion по умолчанию.
btw: CVSNT поддерживает атомарные фиксации
Как кто-то, кто посреди переключения между CVS и SVN (первоначально мы переключили все наши проекты с cvs2svn и затем решили, что перейдем, только используя svn на новых проектах), вот некоторые проблемы, которые мы имели.
Необходимо смотреть на Мерзавец вместо SVN. Это - DVCS, это сверкает быстро и очень мощное. Это не столь удобно для пользователя как SVN, но это улучшается в том отношении, и это не что трудно для изучения.
Вы могли бы также принять решение переместить только последний код от CVS в SVN, и заморозить Ваш текущий CVS repo. это сделает миграцию легче, и Вы могли бы также создать свои существующие версии в старом CVS repo.