Существует простой способ использовать подвижный для управления версиями. Сначала установите его.
Для конфигурирования подвижный делают файл ~/.hgrc
со следующим содержанием:
[ui]
username = Your name <your mail>
verbose = True
При использовании некоторых подвижных серверов можно добавить больше информации к этому файлу (чтение man hgrc
).
После этого cd
к каталогу с Вашими текстовыми файлами. Например:
> cd /tmp
> mkdir data && cd data
> cat > text_file.txt
Hello, this is a file.
Можно добавить также любое количество файлов. После того, как мы должны init подвижный:
> hg init
По умолчанию все еще нет никаких файлов, таким образом, мы должны, чтобы сказать подвижный, что мы хотим включать все:
> hg st
? text_file.txt
> hg add
adding text_file.txt
> hg st
A text_file.txt
Теперь мы умеем обойтись простая фиксация:
> hg comm -m 'first run'
text_file.txt
committed changeset 0:87e90c949984
Теперь сделайте некоторые меры и посмотрите различие:
> cat >> text_file.txt
Add one line.
> hg diff
diff -r 87e90c949984 text_file.txt
--- a/text_file.txt Mon Apr 01 12:52:14 2013 +0400
+++ b/text_file.txt Mon Apr 01 12:53:47 2013 +0400
@@ -1,1 +1,2 @@
Hello, this is a file.
+Add one line.
Теперь сделайте другую фиксацию после часов hg log
: Вы будете видеть обе фиксации.
Для возврата для первой фиксации просто делают так:
> hg upd -r 0:87e90c949984
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt
Hello, this is a file.
Вы видите: файл стар.
Теперь восстановление длится файл:
> hg upd
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt
Hello, this is a file.
Add one line.
Также можно сделать простой сценарий:
#!/bin/bash
while true; do
hg commit -m "commit: $(date)"
sleep 60
done
Выполните его, когда Вы начнете редактировать свой файл, и это будет проверять на изменения каждую минуту, если были изменения, подвижный сделает новую фиксацию. Кроме того, поскольку у меня есть упоминание в комментариях, можно использовать at
или cron
для автоматических фиксаций.
Вы не можете:
Символьная ссылка - это просто дополнительный индексный дескриптор (структура, указывающая на файл), и этот индексный дескриптор, помимо прочего, состоит из deviceId
и указатель inode
. deviceId
фактически указывает на специальный файл устройства в каталоге / dev
, а указатель inode
указывает на блок на этом устройстве.
Ваше сетевое расположение 10.0.1.103
не имеет и не может иметь deviceId
(его нет в / dev
), поэтому у вас не может быть символическая ссылка на сетевое расположение.
С другой стороны, смонтированный сетевой ресурс будет иметь deviceId
, поэтому вы можете создать символическую ссылку на смонтированное местоположение.
У Windows есть специальный синтаксис \\MACHINE\DIRECTORY...\FILE
имея в виду файл, расположенный по адресу \ДИРЕКТОРИЯ...\ФАЙЛ
на машине с именем \\MACHINE
по протоколу SMB. Он встроен в операционную систему и специализируется на одном сетевом протоколе.
Linux имеет гибкую файловую систему, основанную на понятии монтирования. Файловые системы прикрепляются к существующему каталогу, и администратор выбирает, как расположить иерархию каталогов. Для дополнительной информации читайте Что означает монтирование устройства в Linux?, Почему файловая система Linux спроектирована как единое дерево каталогов? и Какие точки монтирования существуют в типичной системе Linux?. Linux поддерживает множество сетевых файловых систем (т.е. файловых систем, которые позволяют одной машине получить доступ к файлам на другой машине), включая NFS, SMB, SSHFS и др.
NFS можно считать родной сетевой файловой системой Linux, как SMB - это Windows. Однако Linux не экспортирует свои файлы по умолчанию: необходимо установить NFS-сервер. NFS-сервер доступен во всех дистрибутивах Linux, но требует некоторой настройки (необходимо зарегистрировать экспортируемые каталоги в файле /etc/exports
). Более того, NFS относится к более щадящим временам, когда взломщики в локальной сети не беспокоились, а для ее защиты требуется немного знаний о брандмауэрах, что выходит за рамки данного ответа. Чтобы сделать каталог /some/where
с удаленной машины foo.example.com
доступным по адресу /local/dir
(который должен быть существующим каталогом), предполагая, что он экспортируется удаленной машиной, выполните следующую команду от имени root:
mount foo.example.com:/some/where /local/dir
Простой способ доступа к удаленным файлам без установки - через SSHFS. Все, что вам нужно, это установить SSH-сервер на удаленной машине и пакет sshfs
на локальной машине. Вы также должны сгенерировать ключ (смотрите Как сделать так, чтобы логин без пароля работал ), хотя у вас не есть , если вы не возражаете против ввода пароля каждый раз. SSH дополнительно полезен для выполнения команд на удаленной машине. Чтобы сделать каталог /some/where
с удаленной машины foo.example.com
доступным по адресу /local/dir
(который должен быть существующим каталогом) через SSHFS, запустите следующую команду (как ваш обычный пользователь):
sshfs foo.example.com:/some/where /local/dir
Linux может быть сервером или клиентом для протокола SMB (взаимодействующий с машинами Windows, или даже с другими машинами Linux, хотя он менее хорошо интегрирован, чем другие протоколы) с помощью Samba программного обеспечения.
Вы можете настроить automounter (например, autofs
) так, чтобы доступ к определенным каталогам автоматически монтировался с какой-нибудь удаленной машины. Например, обычная конфигурация организует, что файловая система autofs монтируется в каталог /net
, и доступ к /net/MACHINE/DIRECTORY
приводит к тому, что удаленный каталог /DIRECTORY
из /net/MACHINE
устанавливается через NFS в этом месте (и после определенного периода бездействия он будет размонтирован). Разумеется, на удаленной машине должен быть настроен и разрешен доступ к NFS-серверу.
Можно настроить автоматический монтер с SSHFS. Смотрите Полностью бесшовная SSHFS под Linux с использованием Fuse and Autofs и Autofs и sshfs - идеальная пара для быстрого обучения; в двух словах:
autofs
и sshfs
. Добавьте следующую строку к /etc/auto.master
:
/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,-timeout=30,--ghost
Замените два вхождения 1000 на ваш идентификатор пользователя и идентификатор группы (запустите id -u
и id -g
, чтобы показать эти значения). Создайте каталог /mnt/sshfs
.
Создайте файл /etc/auto.sshfs
, содержащий строки типа:
machinename -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#machinename.example.com\:
где machinename.example.com
- имя хоста (или IP-адрес) удаленной машины и machinename
- имя, к которому вы хотите получить доступ локально, по пути /mnt/sshfs/machinename
.
Autosshfs обеспечивает более удобную настройку autofs+sshfs.
Наконец, что касается символической части: вы можете создать символическую ссылку на несуществующий путь. Символическая связь является вторым аргументом, поэтому вам понадобится что-то вроде
ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov
Вам нужно вручную или автоматически настроить /sharedFolder
из 10.0.1.103
на /net/10.0.1.103/sharedFolder
.
Для чего это стоит ...
Я работал над небольшим инструментом под названием lionfs , который основан на GhostFS Рафаэля С. Карвалью. . Цель состоит в том, чтобы разрешить символические ссылки, указывающие на URI . Он довольно неполный, содержит много проблем и в настоящее время поддерживает только HTTP. FUSE (Файловая система в пространстве пользователя) используется для обработки фона.