PHPackages                             tomk79/gitui79 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. tomk79/gitui79

ActiveLibrary

tomk79/gitui79
==============

0.7.0(3mo ago)09[1 issues](https://github.com/tomk79/gitui79.js/issues)[1 PRs](https://github.com/tomk79/gitui79.js/pulls)MITJavaScriptCI failing

Since Aug 14Pushed 1w ago1 watchersCompare

[ Source](https://github.com/tomk79/gitui79.js)[ Packagist](https://packagist.org/packages/tomk79/gitui79)[ RSS](/packages/tomk79-gitui79/feed)WikiDiscussions master Synced 4d ago

READMEChangelogDependenciesVersions (21)Used By (0)

gitui79.js
==========

[](#gitui79js)

Usage
-----

[](#usage)

gitコマンドの出力には画像などのバイナリデータが含まれる場合があるため、サーバー側とクライアント側で以下のようにBase64エンコード/デコード処理を実装してください。

### サーバー側の実装例

[](#サーバー側の実装例)

```
// Gitコマンドの出力をBufferで保持し、Base64エンコードして返す
app.use('/apis/git', function(req, res, next){
    var cmdAry = req.body.cmdAry;

    var stdoutBuffers = [];
    var stderrBuffers = [];

    var proc = require('child_process').spawn('git', cmdAry);
    proc.stdout.on('data', function(data){
        stdoutBuffers.push(data);
    });
    proc.stderr.on('data', function(data){
        stderrBuffers.push(data);
    });
    proc.on('close', function(code){
        // Bufferを結合してBase64エンコード
        var stdoutBuffer = Buffer.concat(stdoutBuffers);
        var stderrBuffer = Buffer.concat(stderrBuffers);

        res.send(JSON.stringify({
            code: code,
            stdout: stdoutBuffer.toString('base64'),
            stderr: stderrBuffer.toString('base64'),
            encoding: 'base64'
        }));
    });
});
```

### クライアント側の実装例

[](#クライアント側の実装例)

```

var gitUi79 = new GitUi79(
    document.getElementById('gitui79'),
    function(cmdAry, callback){
        var stdout = null;
        var stderr = null;
        $.ajax({
            url: '/apis/git',
            method: 'POST',
            data: {"cmdAry": cmdAry},
            success: function(data){
                stdout = data;
            },
            error: function(data){
                stderr = data;
            },
            complete: function(){
                var result = JSON.parse(stdout);

                // Base64エンコードされたデータをデコード
                var decodedStdout = result.stdout;
                var decodedStderr = result.stderr;

                if (result.encoding === 'base64') {
                    try {
                        // Base64デコードしてUint8Arrayに変換
                        var binaryStdout = atob(result.stdout);
                        var binaryStderr = atob(result.stderr);

                        // バイナリ文字列をUint8Arrayに変換
                        var uint8ArrayStdout = new Uint8Array(binaryStdout.length);
                        var uint8ArrayStderr = new Uint8Array(binaryStderr.length);

                        for (var i = 0; i
