При использовании дескрипторов на классах, Python полностью обходит __dict__
для того ключа, который делает его хорошим местом для хранения таких значений:
>>> class User(object):
... def _get_username(self):
... return self.__dict__['username']
... def _set_username(self, value):
... print 'username set'
... self.__dict__['username'] = value
... username = property(_get_username, _set_username)
... del _get_username, _set_username
...
>>> u = User()
>>> u.username = "foo"
username set
>>> u.__dict__
{'username': 'foo'}
Это помогает сохранить dir()
чистым.
Существует ряд размещенных решений для репозиториев Git, включая GitHub и Unfuddle .
Формулировка вашего вопроса указывает на то, что вы можете неправильно понимать, что такое Git (и системы управления распределенными версиями в целом). Возможно, вы захотите прочитать введение в Git в Unfuddle или введение в Git, подобное здесь .
Во-первых, Git - это распределенная система управления версиями. Это означает, что при работе с Git у вас есть полный репозиторий на работе, а также у вас есть копия полного репозитория (называемого клоном) на вашем домашнем компьютере. Вы можете работать на своем домашнем компьютере, вносить изменения, читать сообщения о фиксации, просматривать различия, переключать ветки и т. Д. Без необходимости иметь постоянный сетевой доступ к вашему компьютеру на работе.
Тогда ваш вопрос касается того, как синхронизировать хранилища на работе и дома. Есть много возможностей:
Вы можете создать чистый репозиторий (то есть без рабочего каталога), клон репозитория, на каком-нибудь съемном носителе, таком как USB-диск (флешка). Вы могли бы синхронизировать через этот репозиторий, нажимая на него из одного места и получая (вытягивая) из него в другом месте.
Вы можете использовать одну из служб хостинга Git , как упомянуто GitHub , и использовать ее для синхронизации ваших репозиториев. Однако вы должны помнить, что обычно бесплатных планов требуют сделать ваш репозиторий общедоступным; если вы хотите иметь частный репозиторий, вы должны использовать платный план (платная услуга). Проверьте, что предлагает сайт, который вы хотите использовать.
Вы можете использовать команду git-bundle : сгенерировать пакет на одной стороне с помощью команды «git bundle», затем клонировать / получить / извлечь на другой стороне используя файл пакета вместо URL-адреса репозитория, например git fetch file.bndl
. Вы можете передать пакет любым способом, будь то на USB-накопителе, загрузив его через HTTP (здесь будет достаточно простого веб-сервера), FTP или SCP.
Вы можете обслуживать свой репозиторий через SSH. Для этого вам нужно, чтобы git был установлен как на работе, так и на вашем домашнем компьютере, демон ssh на сервере (сторона, с которой вы получаете / отправляете) и клиент ssh на клиенте. Git не нужно устанавливать глобально для всех пользователей на сервере; вы можете указать git, где найти соответствующие двоичные файлы git, с помощью соответствующей опции (см. документацию git). На странице Советы и хитрости в Git Wiki вы найдете «Как отправлять / извлекать через ssh для размещения за шлюзом?» совет.
Наконец, вы можете обслуживать свой репозиторий через HTTP, используя простой веб-сервер, как если бы вы публиковали веб-страницы. Не забудьте запустить git update-server-info
для генерации вспомогательной информации. Обычно это делается с помощью хука post-update
(и post-commit
, если репозиторий не является пустым, т.е. если вы создаете в нем коммиты);
Git is similar to subversion/sourcesafe, but it's design to be distributed. You could make one act as a centralized server, or you could just work between your peers. There's a few more model you could use, see mmc's links for more info.
GitHub is available on the web, but I suspect you want something hosted at work and no open to the outside.
Поскольку GIT децентрализован, у вас есть полная копия вашего репозитория в каждой системе. Это дает вам гибкость в выборе рабочего процесса для синхронизации репозиториев, который работает для вас. Учитывая то, что вы сказали в своем вопросе, я бы порекомендовал один из двух вариантов.
Если ваш домашний и рабочий компьютеры доступны из Интернета, то вы можете просто ssh с одного к другому и внесите изменения в каждый локальный репозиторий. Итак:
Вы можете использовать что-то вроде: LogMeIn ( https://secure.logmein.com/home.asp?lang=en )
для любого другого программного обеспечения для доступа к удаленному рабочему столу.
Дополнительные сведения о таком программном обеспечении см. Здесь -> http://mashable.com/2007/09/07/remote-access/
Несмотря на то, что центральный сервер может несколько упростить задачу, он вам не нужен.
На работе я использую некоторые сценарии из git-bundle
для синхронизации мои репозитории git между машинами, которые не подключены к сетям таким образом, чтобы они могли получить доступ друг к другу. Для перемещения пакетов я использую электронную почту или USB-накопители. (Рассматриваемые машины не могли даже получить доступ к общей третьей машине через IP-соединения).