From 2ff188571e94831b389f5677e06b94d11eb5fc62 Mon Sep 17 00:00:00 2001 From: "Anand V. Avati" Date: Thu, 7 May 2009 11:06:34 +0530 Subject: protocol/client: removed conf->child --- xlators/protocol/client/src/client-protocol.c | 602 -------------------------- xlators/protocol/client/src/client-protocol.h | 1 - 2 files changed, 603 deletions(-) (limited to 'xlators') diff --git a/xlators/protocol/client/src/client-protocol.c b/xlators/protocol/client/src/client-protocol.c index a0a0f06fd8d..6825302af26 100644 --- a/xlators/protocol/client/src/client-protocol.c +++ b/xlators/protocol/client/src/client-protocol.c @@ -524,14 +524,12 @@ client_ping_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, { xlator_t *this = NULL; transport_t *trans = NULL; - client_conf_t *conf = NULL; client_connection_t *conn = NULL; struct timeval timeout = {0, }; int op_ret = 0; trans = frame->local; frame->local = NULL; this = trans->xl; - conf = this->private; conn = trans->xl_private; op_ret = ntoh32 (hdr->rsp.op_ret); @@ -702,20 +700,9 @@ client_create (call_frame_t *frame, xlator_t *this, size_t baselen = 0; int32_t ret = -1; ino_t par = 0; - client_conf_t *conf = NULL; client_local_t *local = NULL; - conf = this->private; - - if (conf->child) { - STACK_WIND (frame, default_create_cbk, - conf->child, - conf->child->fops->create, - loc, flags, mode, fd); - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -780,20 +767,8 @@ client_open (call_frame_t *frame, xlator_t *this, gf_fop_open_req_t *req = NULL; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = NULL; client_local_t *local = NULL; - conf = this->private; - if (conf->child) { - /* */ - STACK_WIND (frame, default_open_cbk, - conf->child, - conf->child->fops->open, - loc, flags, fd); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -856,18 +831,6 @@ client_stat (call_frame_t *frame, int32_t ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_stat_cbk, - conf->child, - conf->child->fops->stat, - loc); - - return 0; - } pathlen = STRLEN_0(loc->path); @@ -924,19 +887,6 @@ client_readlink (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_readlink_cbk, - conf->child, - conf->child->fops->readlink, - loc, - size); - - return 0; - } pathlen = STRLEN_0(loc->path); @@ -997,20 +947,8 @@ client_mknod (call_frame_t *frame, size_t pathlen = 0; size_t baselen = 0; ino_t par = 0; - client_conf_t *conf = this->private; client_local_t *local = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_mknod_cbk, - conf->child, - conf->child->fops->mknod, - loc, mode, dev); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -1077,20 +1015,8 @@ client_mkdir (call_frame_t *frame, size_t pathlen = 0; size_t baselen = 0; ino_t par = 0; - client_conf_t *conf = this->private; client_local_t *local = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_mkdir_cbk, - conf->child, - conf->child->fops->mkdir, - loc, mode); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -1155,18 +1081,6 @@ client_unlink (call_frame_t *frame, size_t pathlen = 0; size_t baselen = 0; ino_t par = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_unlink_cbk, - conf->child, - conf->child->fops->unlink, - loc); - - return 0; - } pathlen = STRLEN_0(loc->path); baselen = STRLEN_0(loc->name); @@ -1222,18 +1136,6 @@ client_rmdir (call_frame_t *frame, size_t pathlen = 0; size_t baselen = 0; ino_t par = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_rmdir_cbk, - conf->child, - conf->child->fops->rmdir, - loc); - - return 0; - } pathlen = STRLEN_0(loc->path); baselen = STRLEN_0(loc->name); @@ -1294,20 +1196,8 @@ client_symlink (call_frame_t *frame, size_t newlen = 0; size_t baselen = 0; ino_t par = 0; - client_conf_t *conf = this->private; client_local_t *local = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_symlink_cbk, - conf->child, - conf->child->fops->symlink, - linkname, loc); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -1376,18 +1266,6 @@ client_rename (call_frame_t *frame, size_t newbaselen = 0; ino_t oldpar = 0; ino_t newpar = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_rename_cbk, - conf->child, - conf->child->fops->rename, - oldloc, newloc); - - return 0; - } oldpathlen = STRLEN_0(oldloc->path); oldbaselen = STRLEN_0(oldloc->name); @@ -1467,20 +1345,8 @@ client_link (call_frame_t *frame, size_t newbaselen = 0; ino_t oldino = 0; ino_t newpar = 0; - client_conf_t *conf = this->private; client_local_t *local = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_link_cbk, - conf->child, - conf->child->fops->link, - oldloc, newloc); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -1558,19 +1424,6 @@ client_chmod (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_chmod_cbk, - conf->child, - conf->child->fops->chmod, - loc, - mode); - - return 0; - } pathlen = STRLEN_0(loc->path); @@ -1630,20 +1483,6 @@ client_chown (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_chown_cbk, - conf->child, - conf->child->fops->chown, - loc, - uid, - gid); - - return 0; - } pathlen = STRLEN_0(loc->path); @@ -1701,19 +1540,6 @@ client_truncate (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_truncate_cbk, - conf->child, - conf->child->fops->truncate, - loc, - offset); - - return 0; - } pathlen = STRLEN_0(loc->path); ret = inode_ctx_get (loc->inode, this, &ino); @@ -1771,19 +1597,6 @@ client_utimens (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_utimens_cbk, - conf->child, - conf->child->fops->utimens, - loc, - tvp); - - return 0; - } pathlen = STRLEN_0(loc->path); ret = inode_ctx_get (loc->inode, this, &ino); @@ -1842,20 +1655,6 @@ client_readv (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_readv_cbk, - conf->child, - conf->child->fops->readv, - fd, - size, - offset); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -1916,22 +1715,6 @@ client_writev (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_writev_cbk, - conf->child, - conf->child->fops->writev, - fd, - vector, - count, - offset, - iobref); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -1985,18 +1768,6 @@ client_statfs (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_statfs_cbk, - conf->child, - conf->child->fops->statfs, - loc); - - return 0; - } pathlen = STRLEN_0(loc->path); @@ -2053,18 +1824,6 @@ client_flush (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_flush_cbk, - conf->child, - conf->child->fops->flush, - fd); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -2121,19 +1880,6 @@ client_fsync (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int32_t ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fsync_cbk, - conf->child, - conf->child->fops->fsync, - fd, - flags); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -2181,24 +1927,9 @@ client_xattrop (call_frame_t *frame, int32_t ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = NULL; GF_VALIDATE_OR_GOTO("client", this, unwind); - conf = this->private; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_xattrop_cbk, - conf->child, - conf->child->fops->xattrop, - loc, - flags, - dict); - - return 0; - } - GF_VALIDATE_OR_GOTO(this->name, loc, unwind); if (dict) { @@ -2269,20 +2000,6 @@ client_fxattrop (call_frame_t *frame, int64_t remote_fd = -1; int32_t ret = -1; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fxattrop_cbk, - conf->child, - conf->child->fops->fxattrop, - fd, - flags, - dict); - - return 0; - } if (dict) { dict_len = dict_serialized_length (dict); @@ -2364,20 +2081,6 @@ client_setxattr (call_frame_t *frame, int ret = -1; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_setxattr_cbk, - conf->child, - conf->child->fops->setxattr, - loc, - dict, - flags); - - return 0; - } dict_len = dict_serialized_length (dict); if (dict_len < 0) { @@ -2455,20 +2158,6 @@ client_fsetxattr (call_frame_t *frame, ino_t ino; int ret = -1; int64_t remote_fd = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fsetxattr_cbk, - conf->child, - conf->child->fops->fsetxattr, - fd, - dict, - flags); - - return 0; - } dict_len = dict_serialized_length (dict); if (dict_len < 0) { @@ -2542,19 +2231,6 @@ client_getxattr (call_frame_t *frame, size_t pathlen = 0; size_t namelen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_getxattr_cbk, - conf->child, - conf->child->fops->getxattr, - loc, - name); - - return 0; - } pathlen = STRLEN_0(loc->path); if (name) @@ -2616,19 +2292,6 @@ client_fgetxattr (call_frame_t *frame, int64_t remote_fd = -1; size_t namelen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fgetxattr_cbk, - conf->child, - conf->child->fops->fgetxattr, - fd, - name); - - return 0; - } if (name) namelen = STRLEN_0(name); @@ -2692,19 +2355,6 @@ client_removexattr (call_frame_t *frame, size_t namelen = 0; size_t pathlen = 0; ino_t ino = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_removexattr_cbk, - conf->child, - conf->child->fops->removexattr, - loc, - name); - - return 0; - } pathlen = STRLEN_0(loc->path); namelen = STRLEN_0(name); @@ -2760,20 +2410,8 @@ client_opendir (call_frame_t *frame, int ret = -1; ino_t ino = 0; size_t pathlen = 0; - client_conf_t *conf = this->private; client_local_t *local = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_opendir_cbk, - conf->child, - conf->child->fops->opendir, - loc, fd); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -2837,21 +2475,6 @@ client_getdents (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_getdents_cbk, - conf->child, - conf->child->fops->getdents, - fd, - size, - offset, - flag); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -2905,18 +2528,6 @@ client_readdir (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_readdir_cbk, - conf->child, - conf->child->fops->readdir, - fd, size, offset); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -2974,19 +2585,6 @@ client_fsyncdir (call_frame_t *frame, size_t hdrlen = 0; int64_t remote_fd = -1; int32_t ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fsyncdir_cbk, - conf->child, - conf->child->fops->fsyncdir, - fd, - flags); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -3038,19 +2636,6 @@ client_access (call_frame_t *frame, int ret = -1; ino_t ino = 0; size_t pathlen = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_access_cbk, - conf->child, - conf->child->fops->access, - loc, - mask); - - return 0; - } ret = inode_ctx_get (loc->inode, this, &ino); if (loc->inode->ino && ret < 0) { @@ -3109,19 +2694,6 @@ client_ftruncate (call_frame_t *frame, int64_t remote_fd = -1; size_t hdrlen = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_ftruncate_cbk, - conf->child, - conf->child->fops->ftruncate, - fd, - offset); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -3176,18 +2748,6 @@ client_fstat (call_frame_t *frame, int64_t remote_fd = -1; size_t hdrlen = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fstat_cbk, - conf->child, - conf->child->fops->fstat, - fd); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -3246,20 +2806,6 @@ client_lk (call_frame_t *frame, int64_t remote_fd = -1; int32_t gf_cmd = 0; int32_t gf_type = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_lk_cbk, - conf->child, - conf->child->fops->lk, - fd, - cmd, - flock); - - return 0; - } ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { @@ -3346,18 +2892,6 @@ client_inodelk (call_frame_t *frame, ino_t ino = 0; size_t pathlen = 0; size_t vollen = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_inodelk_cbk, - conf->child, - conf->child->fops->inodelk, - volume, loc, cmd, flock); - - return 0; - } pathlen = STRLEN_0(loc->path); vollen = STRLEN_0(volume); @@ -3452,18 +2986,6 @@ client_finodelk (call_frame_t *frame, int32_t gf_cmd = 0; int32_t gf_type = 0; int64_t remote_fd = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_finodelk_cbk, - conf->child, - conf->child->fops->finodelk, - volume, fd, cmd, flock); - - return 0; - } vollen = STRLEN_0(volume); @@ -3546,17 +3068,6 @@ client_entrylk (call_frame_t *frame, int ret = -1; ino_t ino = 0; size_t namelen = 0; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, default_entrylk_cbk, - conf->child, - conf->child->fops->entrylk, - volume, loc, name, cmd, type); - - return 0; - } pathlen = STRLEN_0(loc->path); vollen = STRLEN_0(volume); @@ -3621,17 +3132,6 @@ client_fentrylk (call_frame_t *frame, size_t namelen = 0; size_t hdrlen = -1; int ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, default_fentrylk_cbk, - conf->child, - conf->child->fops->fentrylk, - volume, fd, name, cmd, type); - - return 0; - } if (name) namelen = STRLEN_0(name); @@ -3704,21 +3204,8 @@ client_lookup (call_frame_t *frame, size_t baselen = 0; int32_t op_ret = -1; int32_t op_errno = EINVAL; - client_conf_t *conf = this->private; client_local_t *local = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_lookup_cbk, - conf->child, - conf->child->fops->lookup, - loc, - xattr_req); - - return 0; - } - local = calloc (1, sizeof (*local)); GF_VALIDATE_OR_GOTO(this->name, local, unwind); @@ -3810,19 +3297,6 @@ client_fchmod (call_frame_t *frame, int ret = -1; int32_t op_errno = EINVAL; int32_t op_ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fchmod_cbk, - conf->child, - conf->child->fops->fchmod, - fd, - mode); - - return 0; - } GF_VALIDATE_OR_GOTO (this->name, fd, unwind); @@ -3881,20 +3355,6 @@ client_fchown (call_frame_t *frame, int32_t op_ret = -1; int32_t op_errno = EINVAL; int32_t ret = -1; - client_conf_t *conf = this->private; - - if (conf->child) { - /* */ - STACK_WIND (frame, - default_fchown_cbk, - conf->child, - conf->child->fops->fchown, - fd, - uid, - gid); - - return 0; - } GF_VALIDATE_OR_GOTO (this->name, fd, unwind); @@ -3954,24 +3414,9 @@ client_setdents (call_frame_t *frame, int32_t vec_count = 0; size_t hdrlen = -1; struct iovec vector[1]; - client_conf_t *conf = this->private; struct iobref *iobref = NULL; struct iobuf *iobuf = NULL; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_setdents_cbk, - conf->child, - conf->child->fops->setdents, - fd, - flags, - entries, - count); - - return 0; - } - GF_VALIDATE_OR_GOTO (this->name, fd, unwind); ret = this_fd_get (fd, this, &remote_fd); @@ -4117,12 +3562,6 @@ client_forget (xlator_t *this, GF_VALIDATE_OR_GOTO ("client", this, out); conf = this->private; - if (conf->child) { - /* */ - /* Yenu beda */ - return 0; - } - GF_VALIDATE_OR_GOTO (this->name, inode, out); ret = inode_ctx_get (inode, this, &ino); @@ -4185,10 +3624,6 @@ client_releasedir (xlator_t *this, fd_t *fd) GF_VALIDATE_OR_GOTO (this->name, fd, out); conf = this->private; - if (conf->child) { - return 0; - } - ret = this_fd_get (fd, this, &remote_fd); if (ret == -1){ gf_log (this->name, GF_LOG_DEBUG, @@ -4252,10 +3687,6 @@ client_release (xlator_t *this, fd_t *fd) conf = this->private; - if (conf->child) { - return 0; - } - ret = this_fd_get (fd, this, &remote_fd); if (ret == -1) { gf_log (this->name, GF_LOG_DEBUG, @@ -4314,23 +3745,9 @@ client_stats (call_frame_t *frame, gf_mop_stats_req_t *req = NULL; size_t hdrlen = -1; int ret = -1; - client_conf_t *conf = NULL; GF_VALIDATE_OR_GOTO ("client", this, unwind); - conf = this->private; - if (conf->child) { - /* */ - STACK_WIND (frame, - default_stats_cbk, - conf->child, - conf->child->mops->stats, - flags); - - return 0; - } - - hdrlen = gf_hdr_len (req, 0); hdr = gf_hdr_new (req, 0); GF_VALIDATE_OR_GOTO (this->name, hdr, unwind); @@ -6137,20 +5554,8 @@ client_checksum (call_frame_t *frame, gf_fop_checksum_req_t *req = NULL; size_t hdrlen = -1; int ret = -1; - client_conf_t *conf = this->private; ino_t ino = 0; - if (conf->child) { - STACK_WIND (frame, - default_checksum_cbk, - conf->child, - conf->child->fops->checksum, - loc, - flag); - - return 0; - } - hdrlen = gf_hdr_len (req, strlen (loc->path) + 1); hdr = gf_hdr_new (req, strlen (loc->path) + 1); req = gf_param (hdr); @@ -6241,7 +5646,6 @@ client_setvolume_cbk (call_frame_t *frame, { gf_mop_setvolume_rsp_t *rsp = NULL; client_connection_t *conn = NULL; - client_conf_t *conf = NULL; glusterfs_ctx_t *ctx = NULL; xlator_t *this = NULL; xlator_list_t *parent = NULL; @@ -6260,7 +5664,6 @@ client_setvolume_cbk (call_frame_t *frame, trans = frame->local; frame->local = NULL; this = frame->this; - conf = this->private; conn = trans->xl_private; rsp = gf_param (hdr); @@ -6334,11 +5737,6 @@ client_setvolume_cbk (call_frame_t *frame, transport_setpeer (trans, peer_trans); - /* TODO: */ - /* - conf->child = xlator_search_by_name (this, - remote_subvol); - */ } gf_log (trans->xl->name, GF_LOG_NORMAL, diff --git a/xlators/protocol/client/src/client-protocol.h b/xlators/protocol/client/src/client-protocol.h index 49dc7a09553..1cbb22ef1df 100644 --- a/xlators/protocol/client/src/client-protocol.h +++ b/xlators/protocol/client/src/client-protocol.h @@ -67,7 +67,6 @@ typedef struct client_connection client_connection_t; struct _client_conf { transport_t *transport[CHANNEL_MAX]; - xlator_t *child; /* enhancement for 'forget', a must required where lot of stats happening */ -- cgit