Commit graph

2729 commits

Author SHA1 Message Date
Joey Hess
8b892901a9 analysis; not a bug but a feature 2011-11-17 18:20:06 -04:00
Joey Hess
4f6ca37b27 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-17 18:18:28 -04:00
Joey Hess
d66fac1ec8 fix typo introduced with the Ref type 2011-11-17 18:17:34 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
b3bbc1cbb6 2011-11-17 21:56:55 +00:00
https://www.google.com/accounts/o8/id?id=AItOawnBJ6Dv1glxzzi4qIzGFNa6F-mfHIvv9Ck
abd4e1192f 2011-11-17 21:51:55 +00:00
Joey Hess
1ffd54ef78 ensure branch exists before trying to update it
The branch may not exist, if .git/annex has been copied over from another
repo (or a corrupted repo). I suppose it could also have gotten deleted
somehow. Without this, there is a confusing failure.
2011-11-16 18:56:06 -04:00
Joey Hess
6d9f525f64 clarify 2011-11-16 11:59:17 -04:00
Joey Hess
9290095fc2 improve type signatures with a Ref newtype
In git, a Ref can be a Sha, or a Branch, or a Tag. I added type aliases for
those. Note that this does not prevent mixing up of eg, refs and branches
at the type level. Since git really doesn't care, except rare cases like
git update-ref, or git tag -d, that seems ok for now.

There's also a tree-ish, but let's just use Ref for it. A given Sha or Ref
may or may not be a tree-ish, depending on the object type, so there seems
no point in trying to represent it at the type level.
2011-11-16 02:41:46 -04:00
Joey Hess
272a67921c better name 2011-11-16 01:46:46 -04:00
Joey Hess
2bb6b02948 When not run in a git repository, git-annex can still display a usage message, and "git annex version" even works.
Things that sound simple, but are made hard by the Annex monad being built
with the assumption that there will always be a git repo.
2011-11-16 00:49:09 -04:00
Joey Hess
84784e2ca1 cleanup 2011-11-16 00:07:06 -04:00
Joey Hess
6d0af3b211 Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-16 00:05:15 -04:00
Joey Hess
9b71b5f26c fix display of semitrusted repos in status
semitrusted uuids rarely are listed in trust.log, so a special case
is needed to get a list of them. Take the difference of all known uuids
with non-semitrusted uuids.
2011-11-16 00:01:07 -04:00
Joey Hess
e83b966eb5 cleanup 2011-11-15 23:51:24 -04:00
Joey Hess
21a925dcf1 merge: Now runs in constant space.
Before, a merge was first calculated, by running various actions that
called git and built up a list of lines, which were at the end sent
to git update-index. This necessarily used space proportional to the size
of the diff between the trees being merged.

Now, lines are streamed into git update-index from each of the actions in
turn.

Runtime size of git-annex merge when merging 50000 location log files
drops from around 100 mb to a constant 4 mb.

Presumably it runs quite a lot faster, too.
2011-11-15 23:28:01 -04:00
https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo
e92534e5b5 Added a comment 2011-11-16 03:24:31 +00:00
https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo
eb0c8c955c 2011-11-16 03:22:29 +00:00
Joey Hess
922e9af528 cleanup 2011-11-15 22:40:40 -04:00
Joey Hess
b76dc2d210 avoid space leak writing merge
This reduces the memory use of a merge by 1/3rd. The space leak was
apparently because the whole update-index input was generated strictly, not
lazily.

I wondered if the change to ByteStrings contributed to this, due to the
need to convert with L.pack here. But going back to the old code, I still
see a much similar leak, and worse performance besides due to it not using
ByteStrings.

The fix is to just hPutStr the lines repeatedly. (Note the \0 is written
separately, to avoid allocation overheads in adding it to the string.)
The Git.pipeWrite interface is probably just wrong for any large inputs to
git. This was the only place using it for input of any size.

There is still at least one other space leak in the merge code.
2011-11-15 22:19:12 -04:00
Joey Hess
5c5ff2cb78 better error message 2011-11-15 19:17:07 -04:00
Joey Hess
80a0be5116 further insteadOf fix 2011-11-15 19:03:25 -04:00
Joey Hess
7d05ca1d6d Fix support for insteadOf url remapping. Closes: #644278 2011-11-15 14:06:38 -04:00
Joey Hess
3c45371115 close as resolved 2011-11-15 01:53:28 -04:00
http://cgray.myopenid.com/
d99fa3ec4e removed 2011-11-15 05:22:09 +00:00
http://cgray.myopenid.com/
8d9d94f90c Added a comment 2011-11-15 05:15:47 +00:00
http://cgray.myopenid.com/
eb214f719c Added a comment 2011-11-15 05:14:05 +00:00
http://joey.kitenet.net/
cfc518190c Added a comment 2011-11-15 04:46:13 +00:00
http://joey.kitenet.net/
a6091dc271 Added a comment 2011-11-15 04:40:35 +00:00
Joey Hess
def0788698 show number of repos 2011-11-15 00:33:54 -04:00
Joey Hess
019373f827 better status output 2011-11-15 00:30:27 -04:00
http://cgray.myopenid.com/
6368c79fe4 Fix typo 2011-11-15 00:47:57 +00:00
http://cgray.myopenid.com/
c093839a40 2011-11-15 00:41:08 +00:00
Joey Hess
2412b7e689 fix exit status so json gets terminated properly 2011-11-14 19:29:35 -04:00
Joey Hess
bfe38f8ff1 status --json --fast for esc
* status: Fix --json mode (only the repository lists are currently
  displayed)
* status: --fast is back
2011-11-14 19:27:22 -04:00
http://joey.kitenet.net/
02f1d5467a Added a comment 2011-11-14 22:48:03 +00:00
http://joey.kitenet.net/
4d72c1b69c Added a comment 2011-11-14 22:46:35 +00:00
http://www.joachim-breitner.de/
522df3da58 2011-11-14 22:30:02 +00:00
Joey Hess
364981ad92 probably makes sense to list semitrusted before untrusted 2011-11-14 16:15:48 -04:00
Joey Hess
aa4fbbdd33 status: Now displays trusted, untrusted, and semitrusted repositories separately. 2011-11-14 16:14:17 -04:00
Joey Hess
04edae6791 Optimised union merging; now only runs git cat-file once. 2011-11-12 17:45:12 -04:00
Joey Hess
cea65b9e5b init: When run in an already initalized repository, and without a description specified, don't delete the old description. 2011-11-12 15:42:52 -04:00
Joey Hess
e9bfa8eaed avoid unnecessary auto-merge when only changing a file in the branch.
Avoids doing auto-merging in commands that don't need fully current
information from the git-annex branch. In particular, git annex add no
longer needs to auto-merge. Affected commands: Anything that doesn't
look up data from the branch, but does write a change to it.

It might seem counterintuitive that we can change a value without first
making sure we have the current value. This optimisation works because
these two sequences are equivilant:

1. pull from remote
2. union merge
3. read file from branch
4. modify file and write to branch

vs.

1. read file from branch
2. modify file and write to branch
3. pull from remote
4. union merge

After either sequence, the git-annex branch contains the same logical content
for the modified file. (Possibly with lines in a different order or
additional old lines of course).
2011-11-12 15:15:57 -04:00
Joey Hess
897bf938f6 merge: Improve commit messages to mention what was merged. 2011-11-12 14:51:19 -04:00
Joey Hess
fe4ad93e4a add 2011-11-12 14:46:32 -04:00
Joey Hess
6e946b9a39 add 2011-11-12 14:24:14 -04:00
Joey Hess
30f1aeb13c golf 2011-11-12 14:24:07 -04:00
Joey Hess
15b92ad6a1 add news item for git-annex 3.20111111 2011-11-11 16:29:57 -04:00
Joey Hess
baa07971ff releasing version 3.20111111 2011-11-11 16:29:19 -04:00
Joey Hess
71b216d1fb map: Support remotes with /~/ and /~user/
More accurately, it was supported already when map uses git-annex-shell,
but not when it does not.

Note that the user name cannot be shell escaped using git-annex's current
approach for shell escaping. I tried and some shells like dash cannot
cd ~'joey'. Rest of directory is still shell escaped, not for security but
in case a directory has a space or other weird character.
2011-11-11 16:18:53 -04:00
Joey Hess
826d5887b2 Automatically fix up badly formatted uuid.log entries produced by 3.20111105, whenever the uuid.log is changed (ie, by init or describe). 2011-11-11 13:42:31 -04:00