| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Occasionally we hit the problem where a git smudge filter is not
triggered -- for instance, when a file in a working tree's lstat info
matches the file in the git index cache. (see racy-git.txt in the git
documentation)
The previous work-around was touching the git-fat file; however, in
cases where git fat checkout is automated there is a chance that
touching the file will make no modification to the lstat information
(when a touch happens in the same second as a git checkout). In those
instances, git will not trigger the smudge filter and the file in the
checkout will remain orphaned.
We can work around this by ensuring that the timestamp on a file is
modified by looking at its previous timestamp and adding 1 to it.
|
| |
|
| |
|
|
|
|
| |
Reported-by: Isuru Fernando
|
|
|
|
|
|
|
|
|
| |
Python-3 requires careful handling of unicode to avoid breaking Git
semantics (which manages strings unencoded) or Python (which insists on
processing encoded strings on Windows). This is not done yet, so error
cleanly for now. See discussion in issue #42.
Suggested-by: Christoph Buchner
|
|
|
|
| |
Reported-by: "Slavko"
|
|\ |
|
| |\
| | |
| | |
| | |
| | |
| | |
| | | |
* jmurty/improve-referenced-objects-performance:
referenced_objects: make comment more precise
More sophisticated use of cat-file bulk revision processing in two stages
Improve performance when looking up referenced objects.
|
| | | |
|
|\ \ \
| |/ / |
|
| | | |
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* 'add_verify_command' of github:jmurty/git-fat:
Add `verify` command to check git-fat object data matches hash filename.
Conflicts:
git-fat
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
While experimenting with using the --partial option with rsync I
managed to corrupt one of my git-fat objects by truncating it. This
caused some behaviour in git-fat which seemed odd until I worked out
what had happened: it would check out the truncated data but git would
see the file as modified and show the changed hash in a diff, while a
re-checkout did not reset the file to its original data/hash.
This commit adds a `verify` command that cross-checks git-fat object
file names (the original SHA1) against the SHA1 of the object's
actual data and prints any mismatches. So you can quickly find any
dubious objects and decide what to do about them.
A better solution might be to calcuate and verify objects' data hash
during filter-smudge/checkout though this would likely hurt performance.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since `checkout` op is where the repo really needs to be init'ed for git-fat
I moved the requirement to there. This way it is still triggered by a `pull`
op, but only at the end after any files have been synced.
|
| |/ /
| | |
| | |
| | | |
This fixes issue #25 in the original project.
|
| |/
|/|
| |
| |
| |
| | |
Use read() method more defensively to avoid any chance of an infinite
loop in the (very unlikely) event an EOF is received mid-way through
some `cat-file` data.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change takes better advantage of the relative strengths of
`cat-file --batch-check` and `cat-file --batch` and combines them.
* Uses `cat-file --batch-check` to filter the set of all git objects in
bulk, leaving only those that are candidate git-fat object references,
based on the object being of type "blob" and of magic size(s)
* Uses `cat-file --batch` to read the full contents of all the candidate
objects in bulk, for fast processing of their data to find the actual
git-fat references.
|
|/
|
|
|
|
|
|
|
| |
Avoid a cat-file subprocess call per fat object blob by doing slightly
uglier parsing of "cat-file --batch" that includes object content,
instead of "cat-file --batch-check" that doesn't.
In my ad-hoc testing on a reasonable size repository
(50k rev-list -objects) this speeds up 'git fat status' by almost 40%.
|
|\
| |
| |
| |
| |
| |
| | |
(PR #30)
* 'fix-OSError-on-removed-tracked-file' of github:cspurk/git-fat:
fix OSError on “git fat pull” with manually removed, tracked files in WC
|
| |
| |
| |
| | |
If there is any manually removed, tracked file in the working copy, then
running “git fat pull” fails with an OSError without this fix.
|
|/ |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Regression introduced in:
commit c23422388b975f13867457c86c78361dfdf8036e
Author: Tomas Herman <tomas.herman@wikidi.com>
Date: Tue Apr 23 11:59:38 2013 +0200
Added support for pulling only a subset of files.
Reported-by: Nikola Kovacs <nikola.kovacs@gmail.com>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
if a symlink has a length of self.magiclen git-fat would crash
because it could not read the file
|
|\
| |
| |
| |
| | |
* 'symlinks-in-index-filter' of github:chhitz/git-fat:
ignore symbolic links during index-filter
|
| |
| |
| |
| |
| | |
symbolic links should not be handled by git-fat even if
their name match the filelist
|
| | |
|
|/
|
|
| |
patch from https://gist.github.com/edufelipe/1027906
|
|
|
|
|
|
|
|
|
|
| |
tempfile.mkstemp() creates a file with mode 0600 by default, which after
pushing, prevents others from accessing the shared object store.
Instead, use 0444 (as with git-native objects) and respect umask so that
pushed objects will be readable with default configuration.
Noticed-by: Ashok Argent-Katwala <ashok@freshbooks.com>
Comments-by: Owen Jacobson <owen.jacobson@grimoire.ca>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
https://github.com/michaelcontento/git-fat (PR #12)
This does not resolve all unicode file name issues. We have at least
these issues:
1. Filenames sometimes become command-line arguments, which we'd rather
avoid because it forces us to decode/encode (on Windows). This can
be fixed by systematically using '--stdin' options.
2. We still use 'git ls-files -s' in cmd_index_filter. It should also
learn to use the -z option, but unfortunately, Python doesn't have
convenient line processing for NUL-delimited streams so we have to
write something like difftreez_reader to do that properly.
* 'pull-with-unicode-filenames' of https://github.com/michaelcontento/git-fat:
fix "git fat pull" for fancy named files
[Normalized quoting style in merge.]
|
|/
|
|
|
|
| |
just add "-z" to "git ls-files" and split the string at the null byte instead of
newline. now we get the original name back from git and the os module should
handle the communication with the filesystem (but I haven't checked this!).
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This writes a .gitattributes file for every commit in the history,
appending rules for all the now-managed fat files.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
git rev-list --objects has a second field for objects other than
blobs (like trees), so they cannot be filtered out a priori.
|
| |
|
| |
|
| |
|
|
|
|
| |
bare repository.
|
| |
|
|
|
|
|
|
|
| |
subprocess.communicate() cannot be used with large files because it is a
fully-synchronous interface. Since there is no stream/generator/coroutine
support in subprocess.communicate, we have to roll the line iterator ourselves,
putting the filter in its own thread.
|