Esempio n. 1
0
        public void CanGetFilteredContentInBareRepo()
        {
            ObjectId          id      = new ObjectId("799770d1cff46753a57db7a066159b5610da6e3a");
            BlobFilterOptions options = new BlobFilterOptions()
            {
                Flags = BlobFilterFlags.CheckForBinary |
                        BlobFilterFlags.NoSystemAttributes |
                        BlobFilterFlags.AttributesFromHead
            };

            using (Repository repo = SandboxRepository("crlf.git"))
                using (Blob b = repo.Objects.Lookup <Blob>(id))
                {
                    using (GitBuffer buf = b.GetFilteredContent("file.bin", options))
                    {
                        Assert.Equal(15, buf.Length);
                        Assert.True(buf.Content.SequenceEqual(new ReadOnlySpan <byte>(new byte[] { 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a })));
                        Assert.Equal(15, buf.Content.Length);
                    }

                    using (GitBuffer buf = b.GetFilteredContent("file.crlf", options))
                    {
                        Assert.Equal(20, buf.Length);
                        Assert.True(buf.Content.SequenceEqual(new ReadOnlySpan <byte>(new byte[] { 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a })));
                        Assert.Equal(20, buf.Content.Length);
                    }

                    using (GitBuffer buf = b.GetFilteredContent("file.lf", options))
                    {
                        Assert.Equal(15, buf.Length);
                        Assert.True(buf.Content.SequenceEqual(new ReadOnlySpan <byte>(new byte[] { 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a })));
                        Assert.Equal(15, buf.Content.Length);
                    }
                }
        }
Esempio n. 2
0
        public void CanFilterBufferToOdbInBareRepository()
        {
            var id    = new ObjectId("799770d1cff46753a57db7a066159b5610da6e3a");
            var flags = FilterFlags.NoSystemAttributes | FilterFlags.AttributesFromHead;

            var blobFilterOptions = new BlobFilterOptions();

            blobFilterOptions.Flags = BlobFilterFlags.NoSystemAttributes | BlobFilterFlags.AttributesFromHead;

            using (Repository repo = SandboxRepository("crlf.git"))
                using (Blob b = repo.Objects.Lookup <Blob>(id))
                    using (FilterList cleanFilter = repo.LoadFilterList(b, "file.crlf", FilterMode.ToObjectDatabase, flags))
                    {
                        using (GitBuffer inputBuffer = b.GetFilteredContent("file.crlf", blobFilterOptions))
                        {
                            Assert.Equal(20, inputBuffer.Length);
                            Assert.True(inputBuffer.Content.SequenceEqual(new ReadOnlySpan <byte>(new byte[] { 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a, 0x6c, 0x66, 0x0d, 0x0a })));
                            Assert.Equal(20, inputBuffer.Content.Length);

                            // No filtering is configured
                            using (GitBuffer outputBuffer = cleanFilter.Apply(inputBuffer))
                            {
                                Assert.Equal(15, outputBuffer.Length);
                                Assert.True(outputBuffer.Content.SequenceEqual(new ReadOnlySpan <byte>(new byte[] { 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a, 0x6c, 0x66, 0x0a })));
                                Assert.Equal(15, outputBuffer.Content.Length);
                            }
                        }
                    }
        }
Esempio n. 3
0
        public unsafe GitBuffer GetFilteredContent(string path, BlobFilterOptions options)
        {
            Ensure.ArgumentNotNull(path, "path");
            Ensure.ArgumentNotNull(options, "options");

            GitBuffer buf          = new GitBuffer();
            git_buf   nativeBuffer = buf.NativeBuffer;

            Ensure.NativeSuccess(() => {
                git_blob_filter_options nativeOptions = options.ToNative();
                return(libgit2.git_blob_filter(nativeBuffer, NativeBlob, path, &nativeOptions));
            }, this);

            return(buf);
        }