Merge lp:~ed.so/duplicity/gdocs.pydrive into lp:~duplicity-team/duplicity/0.7-series
- gdocs.pydrive
- Merge into 0.7-series
Proposed by
edso
Status: | Merged |
---|---|
Merged at revision: | 1097 |
Proposed branch: | lp:~ed.so/duplicity/gdocs.pydrive |
Merge into: | lp:~duplicity-team/duplicity/0.7-series |
Diff against target: |
380 lines (+138/-128) 3 files modified
bin/duplicity.1 (+129/-125) duplicity/backends/gdocsbackend.py (+3/-2) duplicity/backends/pydrivebackend.py (+6/-1) |
To merge this branch: | bzr merge lp:~ed.so/duplicity/gdocs.pydrive |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
duplicity-team | Pending | ||
Review via email: mp+260657@code.launchpad.net |
Commit message
Description of the change
make pydrive new gdocs default backend
keep gdata backend as gdata+gdocs://
To post a comment you must log in.
- 1098. By ede
-
manpage - some reordering, update "A NOTE ON SSH BACKENDS" to the new prefix+ changes
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/duplicity.1' | |||
2 | --- bin/duplicity.1 2015-05-30 11:53:02 +0000 | |||
3 | +++ bin/duplicity.1 2015-05-31 14:31:15 +0000 | |||
4 | @@ -1037,13 +1037,16 @@ | |||
5 | 1037 | ftp[s]://user[:password]@other.host[:port]/some_dir | 1037 | ftp[s]://user[:password]@other.host[:port]/some_dir |
6 | 1038 | .PP | 1038 | .PP |
7 | 1039 | .B NOTE: | 1039 | .B NOTE: |
9 | 1040 | use lftp+, ncftp+ prefixes to enforce a specific backend, e.g. ncftp+ftp://... | 1040 | use lftp+, ncftp+ prefixes to enforce a specific backend, default is lftp+ftp://... |
10 | 1041 | .RE | 1041 | .RE |
11 | 1042 | .PP | 1042 | .PP |
12 | 1043 | .B "Google Docs" | 1043 | .B "Google Docs" |
13 | 1044 | .PP | 1044 | .PP |
14 | 1045 | .RS | 1045 | .RS |
15 | 1046 | gdocs://user[:password]@other.host/some_dir | 1046 | gdocs://user[:password]@other.host/some_dir |
16 | 1047 | .PP | ||
17 | 1048 | .B NOTE: | ||
18 | 1049 | use pydrive+, gdata+ prefixes to enforce a specific backend, default is pydrive+gdocs://... | ||
19 | 1047 | .RE | 1050 | .RE |
20 | 1048 | .PP | 1051 | .PP |
21 | 1049 | .B "Google Cloud Storage" | 1052 | .B "Google Cloud Storage" |
22 | @@ -1614,6 +1617,43 @@ | |||
23 | 1614 | .B from_address_prefix | 1617 | .B from_address_prefix |
24 | 1615 | will distinguish between different backups. | 1618 | will distinguish between different backups. |
25 | 1616 | 1619 | ||
26 | 1620 | .SH A NOTE ON MULTI BACKEND | ||
27 | 1621 | |||
28 | 1622 | The multi backend allows duplicity to combine the storage available in | ||
29 | 1623 | more than one backend store (e.g., you can store across a google drive | ||
30 | 1624 | account and a onedrive account to get effectively the combined storage | ||
31 | 1625 | available in both). The URL path specifies a JSON formated config | ||
32 | 1626 | file containing a list of the backends it will use. Multibackend then | ||
33 | 1627 | round-robins across the given backends. Each element of the list must | ||
34 | 1628 | have a "url" element, and may also contain an optional "description" | ||
35 | 1629 | and an optional "env" list of environment variables used to configure | ||
36 | 1630 | that backend. | ||
37 | 1631 | .PP | ||
38 | 1632 | For example: | ||
39 | 1633 | .nf | ||
40 | 1634 | .RS | ||
41 | 1635 | [ | ||
42 | 1636 | { | ||
43 | 1637 | "description": "a comment about the backend" | ||
44 | 1638 | "url": "abackend://myuser@domain.com/backup", | ||
45 | 1639 | "env": [ | ||
46 | 1640 | { | ||
47 | 1641 | "name" : "MYENV", | ||
48 | 1642 | "value" : "xyz" | ||
49 | 1643 | }, | ||
50 | 1644 | { | ||
51 | 1645 | "name" : "FOO", | ||
52 | 1646 | "value" : "bar" | ||
53 | 1647 | } | ||
54 | 1648 | ] | ||
55 | 1649 | }, | ||
56 | 1650 | { | ||
57 | 1651 | "url": "file:///path/to/dir" | ||
58 | 1652 | } | ||
59 | 1653 | ] | ||
60 | 1654 | .RE | ||
61 | 1655 | .fi | ||
62 | 1656 | |||
63 | 1617 | .SH A NOTE ON PAR2 WRAPPER BACKEND | 1657 | .SH A NOTE ON PAR2 WRAPPER BACKEND |
64 | 1618 | Par2 Wrapper Backend can be used in combination with all other backends to | 1658 | Par2 Wrapper Backend can be used in combination with all other backends to |
65 | 1619 | create recovery files. Just add | 1659 | create recovery files. Just add |
66 | @@ -1632,6 +1672,62 @@ | |||
67 | 1632 | to adjust the size (and redundancy) of recovery files in | 1672 | to adjust the size (and redundancy) of recovery files in |
68 | 1633 | .I percent. | 1673 | .I percent. |
69 | 1634 | 1674 | ||
70 | 1675 | .SH A NOTE ON PYDRIVE BACKEND | ||
71 | 1676 | The pydrive backend requires Python PyDrive package to be installed on the system. See | ||
72 | 1677 | .B REQUIREMENTS | ||
73 | 1678 | above. | ||
74 | 1679 | |||
75 | 1680 | There are two ways to use PyDrive: with a regular account or with a | ||
76 | 1681 | "service account". With a service account, a separate account is | ||
77 | 1682 | created, that is only accessible with Google APIs and not a web login. | ||
78 | 1683 | With a regular account, you can store backups in your normal Google | ||
79 | 1684 | Drive. | ||
80 | 1685 | |||
81 | 1686 | To use a service account, go to the Google developers | ||
82 | 1687 | console at https://console.developers.google.com. Create a project, | ||
83 | 1688 | and make sure Drive API is enabled for the project. Under "APIs and | ||
84 | 1689 | auth", click Create New Client ID, then select Service Account with P12 | ||
85 | 1690 | key. | ||
86 | 1691 | |||
87 | 1692 | Download the .p12 key file of the account and convert it to the .pem format: | ||
88 | 1693 | .br | ||
89 | 1694 | openssl pkcs12 -in XXX.p12 -nodes -nocerts > pydriveprivatekey.pem | ||
90 | 1695 | |||
91 | 1696 | The content of .pem file should be passed to | ||
92 | 1697 | .BR GOOGLE_DRIVE_ACCOUNT_KEY | ||
93 | 1698 | environment variable for authentification. | ||
94 | 1699 | |||
95 | 1700 | The email address of the account will be used as part of URL. See | ||
96 | 1701 | .B URL FORMAT | ||
97 | 1702 | above. | ||
98 | 1703 | |||
99 | 1704 | The alternative is to use a regular account. To do this, start as above, | ||
100 | 1705 | but when creating a new Client ID, select "Installed application" of | ||
101 | 1706 | type "Other". Create a file with the following content, and pass its | ||
102 | 1707 | filename in the | ||
103 | 1708 | .BR GOOGLE_DRIVE_SETTINGS | ||
104 | 1709 | environment variable: | ||
105 | 1710 | .PP | ||
106 | 1711 | .nf | ||
107 | 1712 | .RS | ||
108 | 1713 | client_config_backend: settings | ||
109 | 1714 | client_config: | ||
110 | 1715 | client_id: <Client ID from developers' console> | ||
111 | 1716 | client_secret: <Client secret from developers' console> | ||
112 | 1717 | save_credentials: True | ||
113 | 1718 | save_credentials_backend: file | ||
114 | 1719 | save_credentials_file: <filename to cache credentials> | ||
115 | 1720 | get_refresh_token: True | ||
116 | 1721 | .RE | ||
117 | 1722 | .fi | ||
118 | 1723 | |||
119 | 1724 | In this scenario, the username and host parts of the URL play no role; | ||
120 | 1725 | only the path matters. During the first run, you will be prompted to | ||
121 | 1726 | visit an URL in your browser to grant access to your drive. Once | ||
122 | 1727 | granted, you will receive a verification code to paste back into | ||
123 | 1728 | Duplicity. The credentials are then cached in the file references above | ||
124 | 1729 | for future use. | ||
125 | 1730 | |||
126 | 1635 | .SH A NOTE ON SSH BACKENDS | 1731 | .SH A NOTE ON SSH BACKENDS |
127 | 1636 | The | 1732 | The |
128 | 1637 | .I ssh backends | 1733 | .I ssh backends |
129 | @@ -1646,10 +1742,10 @@ | |||
130 | 1646 | .IR sftp " or" | 1742 | .IR sftp " or" |
131 | 1647 | .I scp/ssh | 1743 | .I scp/ssh |
132 | 1648 | access. | 1744 | access. |
135 | 1649 | To make it even more confusing the user can choose between two ssh backends via | 1745 | To make it even more confusing the user can choose between several ssh backends via a scheme prefix: |
136 | 1650 | .BR --ssh-backend " option." | 1746 | paramiko+ (default), pexpect+, lftp+... . |
137 | 1651 | .br | 1747 | .br |
139 | 1652 | Both support | 1748 | paramiko & pexpect support |
140 | 1653 | .BR --use-scp , | 1749 | .BR --use-scp , |
141 | 1654 | .BR --ssh-askpass " and" | 1750 | .BR --ssh-askpass " and" |
142 | 1655 | .BR --ssh-options "." | 1751 | .BR --ssh-options "." |
143 | @@ -1659,7 +1755,7 @@ | |||
144 | 1659 | .BR --scp-command " and" | 1755 | .BR --scp-command " and" |
145 | 1660 | .BR --sftp-command . | 1756 | .BR --sftp-command . |
146 | 1661 | .PP | 1757 | .PP |
148 | 1662 | .BR "SSH paramiko backend " "(selected by default)" | 1758 | .BR "SSH paramiko backend " "(default)" |
149 | 1663 | is a complete reimplementation of ssh protocols natively in python. Advantages | 1759 | is a complete reimplementation of ssh protocols natively in python. Advantages |
150 | 1664 | are speed and maintainability. Minor disadvantage is that extra packages are | 1760 | are speed and maintainability. Minor disadvantage is that extra packages are |
151 | 1665 | needed as listed in | 1761 | needed as listed in |
152 | @@ -1686,6 +1782,10 @@ | |||
153 | 1686 | .I --use-scp | 1782 | .I --use-scp |
154 | 1687 | option is used to revert to old behavior. | 1783 | option is used to revert to old behavior. |
155 | 1688 | .PP | 1784 | .PP |
156 | 1785 | .B SSH lftp backend | ||
157 | 1786 | is simply there because lftp can interact with the ssh cmd line binaries. | ||
158 | 1787 | It is meant as a last resort in case the above options fail for some reason. | ||
159 | 1788 | .PP | ||
160 | 1689 | .B Why use sftp instead of scp? | 1789 | .B Why use sftp instead of scp? |
161 | 1690 | The change to sftp was made in order to allow the remote system to chroot the backup, | 1790 | The change to sftp was made in order to allow the remote system to chroot the backup, |
162 | 1691 | thus providing better security and because it does not suffer from shell quoting issues like scp. | 1791 | thus providing better security and because it does not suffer from shell quoting issues like scp. |
163 | @@ -1750,99 +1850,6 @@ | |||
164 | 1750 | .B SWIFT_AUTHVERSION | 1850 | .B SWIFT_AUTHVERSION |
165 | 1751 | is unspecified, it will default to version 1. | 1851 | is unspecified, it will default to version 1. |
166 | 1752 | 1852 | ||
167 | 1753 | .SH A NOTE ON PYDRIVE BACKEND | ||
168 | 1754 | The pydrive backend requires Python PyDrive package to be installed on the system. See | ||
169 | 1755 | .B REQUIREMENTS | ||
170 | 1756 | above. | ||
171 | 1757 | |||
172 | 1758 | There are two ways to use PyDrive: with a regular account or with a | ||
173 | 1759 | "service account". With a service account, a separate account is | ||
174 | 1760 | created, that is only accessible with Google APIs and not a web login. | ||
175 | 1761 | With a regular account, you can store backups in your normal Google | ||
176 | 1762 | Drive. | ||
177 | 1763 | |||
178 | 1764 | To use a service account, go to the Google developers | ||
179 | 1765 | console at https://console.developers.google.com. Create a project, | ||
180 | 1766 | and make sure Drive API is enabled for the project. Under "APIs and | ||
181 | 1767 | auth", click Create New Client ID, then select Service Account with P12 | ||
182 | 1768 | key. | ||
183 | 1769 | |||
184 | 1770 | Download the .p12 key file of the account and convert it to the .pem format: | ||
185 | 1771 | .br | ||
186 | 1772 | openssl pkcs12 -in XXX.p12 -nodes -nocerts > pydriveprivatekey.pem | ||
187 | 1773 | |||
188 | 1774 | The content of .pem file should be passed to | ||
189 | 1775 | .BR GOOGLE_DRIVE_ACCOUNT_KEY | ||
190 | 1776 | environment variable for authentification. | ||
191 | 1777 | |||
192 | 1778 | The email address of the account will be used as part of URL. See | ||
193 | 1779 | .B URL FORMAT | ||
194 | 1780 | above. | ||
195 | 1781 | |||
196 | 1782 | The alternative is to use a regular account. To do this, start as above, | ||
197 | 1783 | but when creating a new Client ID, select "Installed application" of | ||
198 | 1784 | type "Other". Create a file with the following content, and pass its | ||
199 | 1785 | filename in the | ||
200 | 1786 | .BR GOOGLE_DRIVE_SETTINGS | ||
201 | 1787 | environment variable: | ||
202 | 1788 | .PP | ||
203 | 1789 | .nf | ||
204 | 1790 | .RS | ||
205 | 1791 | client_config_backend: settings | ||
206 | 1792 | client_config: | ||
207 | 1793 | client_id: <Client ID from developers' console> | ||
208 | 1794 | client_secret: <Client secret from developers' console> | ||
209 | 1795 | save_credentials: True | ||
210 | 1796 | save_credentials_backend: file | ||
211 | 1797 | save_credentials_file: <filename to cache credentials> | ||
212 | 1798 | get_refresh_token: True | ||
213 | 1799 | .RE | ||
214 | 1800 | .fi | ||
215 | 1801 | |||
216 | 1802 | In this scenario, the username and host parts of the URL play no role; | ||
217 | 1803 | only the path matters. During the first run, you will be prompted to | ||
218 | 1804 | visit an URL in your browser to grant access to your drive. Once | ||
219 | 1805 | granted, you will receive a verification code to paste back into | ||
220 | 1806 | Duplicity. The credentials are then cached in the file references above | ||
221 | 1807 | for future use. | ||
222 | 1808 | |||
223 | 1809 | .SH A NOTE ON MULTI BACKEND | ||
224 | 1810 | |||
225 | 1811 | The multi backend allows duplicity to combine the storage available in | ||
226 | 1812 | more than one backend store (e.g., you can store across a google drive | ||
227 | 1813 | account and a onedrive account to get effectively the combined storage | ||
228 | 1814 | available in both). The URL path specifies a JSON formated config | ||
229 | 1815 | file containing a list of the backends it will use. Multibackend then | ||
230 | 1816 | round-robins across the given backends. Each element of the list must | ||
231 | 1817 | have a "url" element, and may also contain an optional "description" | ||
232 | 1818 | and an optional "env" list of environment variables used to configure | ||
233 | 1819 | that backend. | ||
234 | 1820 | .PP | ||
235 | 1821 | For example: | ||
236 | 1822 | .nf | ||
237 | 1823 | .RS | ||
238 | 1824 | [ | ||
239 | 1825 | { | ||
240 | 1826 | "description": "a comment about the backend" | ||
241 | 1827 | "url": "abackend://myuser@domain.com/backup", | ||
242 | 1828 | "env": [ | ||
243 | 1829 | { | ||
244 | 1830 | "name" : "MYENV", | ||
245 | 1831 | "value" : "xyz" | ||
246 | 1832 | }, | ||
247 | 1833 | { | ||
248 | 1834 | "name" : "FOO", | ||
249 | 1835 | "value" : "bar" | ||
250 | 1836 | } | ||
251 | 1837 | ] | ||
252 | 1838 | }, | ||
253 | 1839 | { | ||
254 | 1840 | "url": "file:///path/to/dir" | ||
255 | 1841 | } | ||
256 | 1842 | ] | ||
257 | 1843 | .RE | ||
258 | 1844 | .fi | ||
259 | 1845 | |||
260 | 1846 | .SH A NOTE ON SYMMETRIC ENCRYPTION AND SIGNING | 1853 | .SH A NOTE ON SYMMETRIC ENCRYPTION AND SIGNING |
261 | 1847 | Signing and symmetrically encrypt at the same time with the gpg binary on the | 1854 | Signing and symmetrically encrypt at the same time with the gpg binary on the |
262 | 1848 | command line, as used within duplicity, is a specifically challenging issue. | 1855 | command line, as used within duplicity, is a specifically challenging issue. |
263 | @@ -1957,10 +1964,13 @@ | |||
264 | 1957 | .B python-urllib3 | 1964 | .B python-urllib3 |
265 | 1958 | - https://github.com/shazow/urllib3 | 1965 | - https://github.com/shazow/urllib3 |
266 | 1959 | .TP | 1966 | .TP |
268 | 1960 | .BR "gdocs backend" " (Google Docs)" | 1967 | .BR "gdocs gdata backend" " (legacy Google Docs backend)" |
269 | 1961 | .B Google Data APIs Python Client Library | 1968 | .B Google Data APIs Python Client Library |
270 | 1962 | - http://code.google.com/p/gdata-python-client/ | 1969 | - http://code.google.com/p/gdata-python-client/ |
271 | 1963 | .TP | 1970 | .TP |
272 | 1971 | .BR "gdocs pydrive backend" "(default)" | ||
273 | 1972 | see pydrive backend | ||
274 | 1973 | .TP | ||
275 | 1964 | .BR "gio backend" " (Gnome VFS API)" | 1974 | .BR "gio backend" " (Gnome VFS API)" |
276 | 1965 | .B PyGObject | 1975 | .B PyGObject |
277 | 1966 | - http://live.gnome.org/PyGObject | 1976 | - http://live.gnome.org/PyGObject |
278 | @@ -1976,6 +1986,17 @@ | |||
279 | 1976 | .B Python library for mega API | 1986 | .B Python library for mega API |
280 | 1977 | - https://github.com/ckornacker/mega.py, ubuntu ppa - ppa:ckornacker/backup | 1987 | - https://github.com/ckornacker/mega.py, ubuntu ppa - ppa:ckornacker/backup |
281 | 1978 | .TP | 1988 | .TP |
282 | 1989 | .BR "multi backend" | ||
283 | 1990 | .B Multi -- store to more than one backend | ||
284 | 1991 | .br | ||
285 | 1992 | (also see | ||
286 | 1993 | .BR "A NOTE ON MULTI BACKEND" | ||
287 | 1994 | ) below. | ||
288 | 1995 | .TP | ||
289 | 1996 | .BR "ncftp backend" " (ftp, select via ncftp+ftp://)" | ||
290 | 1997 | .B NcFTP | ||
291 | 1998 | - http://www.ncftp.com/ | ||
292 | 1999 | .TP | ||
293 | 1979 | .BR "OneDrive backend" " (Microsoft OneDrive)" | 2000 | .BR "OneDrive backend" " (Microsoft OneDrive)" |
294 | 1980 | .B python-requests | 2001 | .B python-requests |
295 | 1981 | - http://python-requests.org | 2002 | - http://python-requests.org |
296 | @@ -1983,24 +2004,23 @@ | |||
297 | 1983 | .B python-requests-oauthlib | 2004 | .B python-requests-oauthlib |
298 | 1984 | - https://github.com/requests/requests-oauthlib | 2005 | - https://github.com/requests/requests-oauthlib |
299 | 1985 | .TP | 2006 | .TP |
300 | 1986 | .BR "ncftp backend" " (ftp, select via ncftp+ftp://)" | ||
301 | 1987 | .B NcFTP | ||
302 | 1988 | - http://www.ncftp.com/ | ||
303 | 1989 | .TP | ||
304 | 1990 | .B "Par2 Wrapper Backend" | 2007 | .B "Par2 Wrapper Backend" |
305 | 1991 | .B par2cmdline | 2008 | .B par2cmdline |
306 | 1992 | - http://parchive.sourceforge.net/ | 2009 | - http://parchive.sourceforge.net/ |
307 | 1993 | .TP | 2010 | .TP |
308 | 2011 | .BR "pydrive backend" | ||
309 | 2012 | .B PyDrive -- a wrapper library of google-api-python-client | ||
310 | 2013 | - https://pypi.python.org/pypi/PyDrive | ||
311 | 2014 | .br | ||
312 | 2015 | (also see | ||
313 | 2016 | .BR "A NOTE ON PYDRIVE BACKEND" | ||
314 | 2017 | ) below. | ||
315 | 2018 | .TP | ||
316 | 1994 | .B "rsync backend" | 2019 | .B "rsync backend" |
317 | 1995 | .B rsync client binary | 2020 | .B rsync client binary |
318 | 1996 | - http://rsync.samba.org/ | 2021 | - http://rsync.samba.org/ |
319 | 1997 | .PP | ||
320 | 1998 | There are two | ||
321 | 1999 | .B ssh backends | ||
322 | 2000 | for scp/sftp/ssh access (also see | ||
323 | 2001 | .BR "A NOTE ON SSH BACKENDS" ). | ||
324 | 2002 | .TP | 2022 | .TP |
326 | 2003 | .BR "ssh paramiko backend" " (enabled by default)" | 2023 | .BR "ssh paramiko backend" " (default)" |
327 | 2004 | .B paramiko | 2024 | .B paramiko |
328 | 2005 | (SSH2 for python) | 2025 | (SSH2 for python) |
329 | 2006 | - http://pypi.python.org/pypi/paramiko (downloads); http://github.com/paramiko/paramiko (project page) | 2026 | - http://pypi.python.org/pypi/paramiko (downloads); http://github.com/paramiko/paramiko (project page) |
330 | @@ -2030,22 +2050,6 @@ | |||
331 | 2030 | .br | 2050 | .br |
332 | 2031 | (also see | 2051 | (also see |
333 | 2032 | .BR "A NOTE ON SSL CERTIFICATE VERIFICATION" ). | 2052 | .BR "A NOTE ON SSL CERTIFICATE VERIFICATION" ). |
334 | 2033 | .TP | ||
335 | 2034 | .BR "pydrive backend" | ||
336 | 2035 | .B PyDrive -- a wrapper library of google-api-python-client | ||
337 | 2036 | - https://pypi.python.org/pypi/PyDrive | ||
338 | 2037 | .br | ||
339 | 2038 | (also see | ||
340 | 2039 | .BR "A NOTE ON PYDRIVE BACKEND" | ||
341 | 2040 | ) below. | ||
342 | 2041 | .TP | ||
343 | 2042 | .BR "multi backend" | ||
344 | 2043 | .B Multi -- store to more than one backend | ||
345 | 2044 | .br | ||
346 | 2045 | (also see | ||
347 | 2046 | .BR "A NOTE ON MULTI BACKEND" | ||
348 | 2047 | ) below. | ||
349 | 2048 | .br | ||
350 | 2049 | 2053 | ||
351 | 2050 | .SH AUTHOR | 2054 | .SH AUTHOR |
352 | 2051 | .TP | 2055 | .TP |
353 | 2052 | 2056 | ||
354 | === modified file 'duplicity/backends/gdocsbackend.py' | |||
355 | --- duplicity/backends/gdocsbackend.py 2015-01-22 23:38:29 +0000 | |||
356 | +++ duplicity/backends/gdocsbackend.py 2015-05-31 14:31:15 +0000 | |||
357 | @@ -184,5 +184,6 @@ | |||
358 | 184 | # Done! | 184 | # Done! |
359 | 185 | return result | 185 | return result |
360 | 186 | 186 | ||
363 | 187 | duplicity.backend.register_backend('gdocs', GDocsBackend) | 187 | """ gdata is an alternate way to access gdocs, currently 05/2015 lacking OAuth support """ |
364 | 188 | duplicity.backend.uses_netloc.extend(['gdocs']) | 188 | duplicity.backend.register_backend('gdata+gdocs', GDocsBackend) |
365 | 189 | duplicity.backend.uses_netloc.extend(['gdata+gdocs']) | ||
366 | 189 | 190 | ||
367 | === modified file 'duplicity/backends/pydrivebackend.py' | |||
368 | --- duplicity/backends/pydrivebackend.py 2015-05-30 11:53:02 +0000 | |||
369 | +++ duplicity/backends/pydrivebackend.py 2015-05-31 14:31:15 +0000 | |||
370 | @@ -108,4 +108,9 @@ | |||
371 | 108 | return {'size': size} | 108 | return {'size': size} |
372 | 109 | 109 | ||
373 | 110 | duplicity.backend.register_backend('pydrive', PyDriveBackend) | 110 | duplicity.backend.register_backend('pydrive', PyDriveBackend) |
375 | 111 | duplicity.backend.uses_netloc.extend(['pydrive']) | 111 | """ pydrive is an alternate way to access gdocs """ |
376 | 112 | duplicity.backend.register_backend('pydrive+gdocs', PyDriveBackend) | ||
377 | 113 | """ register pydrive as the default way to access gdocs """ | ||
378 | 114 | duplicity.backend.register_backend('gdocs', PyDriveBackend) | ||
379 | 115 | |||
380 | 116 | duplicity.backend.uses_netloc.extend(['pydrive','pydrive+gdocs','gdocs']) |